void 0.21.0 → 0.21.1

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 (65) hide show
  1. package/dist/{auth-cmd-MkBG2u1f.mjs → auth-cmd-g_ymMkUe.mjs} +2 -2
  2. package/dist/{auth-link-Devmv96E.mjs → auth-link-DFvxIyZi.mjs} +2 -2
  3. package/dist/{build-cmd-DsBGwtfs.mjs → build-cmd-wJAv808h.mjs} +1 -1
  4. package/dist/{cache-BMw8eMyF.mjs → cache-Be0Fu5Ka.mjs} +1 -1
  5. package/dist/{cancel-deploy-B3_s9NIN.mjs → cancel-deploy-BgmyOwhe.mjs} +1 -1
  6. package/dist/cli/cf-compat.mjs +13 -3
  7. package/dist/cli/cli.mjs +35 -35
  8. package/dist/{connect-BvC9kolB.mjs → connect-LnvW4HKx.mjs} +2 -2
  9. package/dist/{create-project-C9lQhRzj.mjs → create-project-BZBl_gQ0.mjs} +1 -1
  10. package/dist/{create-project-CI-17RVJ.mjs → create-project-JV9-6ICF.mjs} +1 -1
  11. package/dist/{db-R7IQgOv5.mjs → db-Mzv88E1C.mjs} +3 -3
  12. package/dist/{delete-CghI_NXn.mjs → delete-Ri6JemSU.mjs} +1 -1
  13. package/dist/{deploy-CYPymbtG.mjs → deploy-DAH2-m_-.mjs} +1 -1
  14. package/dist/{deploy-H968Lo4T.mjs → deploy-DEsMVrCY.mjs} +83 -46
  15. package/dist/{domain-CITt8lC-.mjs → domain-BA37Ye7T.mjs} +1 -1
  16. package/dist/{email-_8VmyX7V.mjs → email-C5NsxrQG.mjs} +2 -2
  17. package/dist/{env-DV4r3nHz.mjs → env-U_ohASB0.mjs} +1 -1
  18. package/dist/gen-B87rlalt.mjs +2 -0
  19. package/dist/{gen-CFOEEc-t.mjs → gen-pg-Ojg8Y.mjs} +1 -1
  20. package/dist/{github-cmd-jYjha2LO.mjs → github-cmd-DsrkweIl.mjs} +1 -1
  21. package/dist/help-B403BLBB.mjs +2 -0
  22. package/dist/{help-C46mnlUS.mjs → help-sBhFH6pi.mjs} +1 -1
  23. package/dist/index.mjs +3 -3
  24. package/dist/{init-CSXmvxKu.mjs → init-C--Yyj1b.mjs} +5 -5
  25. package/dist/{link-DxMOALXk.mjs → link-BC-mNG9-.mjs} +2 -2
  26. package/dist/{list-0wQs0oYg.mjs → list-DHU1Wj6c.mjs} +1 -1
  27. package/dist/login-BwiopVdg.mjs +2 -0
  28. package/dist/{login-CKk5NX4d.mjs → login-jKe_0QZL.mjs} +2 -2
  29. package/dist/{logs-hxWBSoej.mjs → logs-BG11f5PR.mjs} +1 -1
  30. package/dist/{migrate-DcW8F2W8.mjs → migrate-BV8qHiCb.mjs} +1 -1
  31. package/dist/migrate-BXY3B3m7.mjs +2 -0
  32. package/dist/{operator-cmd-BEUYhaHB.mjs → operator-cmd-BwAS2XZt.mjs} +3 -3
  33. package/dist/{output-urU86XeT.mjs → output-CCH48AMM.mjs} +4 -4
  34. package/dist/{platform-auth-config-Df6yVw-e.mjs → platform-auth-config-C-hv-_Ok.mjs} +2 -2
  35. package/dist/{platform-auth-protection-Jb0yftay.mjs → platform-auth-protection-DjTE5Hj-.mjs} +2 -2
  36. package/dist/{platform-auth-recovery-DmRyIfW0.mjs → platform-auth-recovery-Cr0r8TEb.mjs} +2 -2
  37. package/dist/{platform-cmd-DRxCOTwy.mjs → platform-cmd-0tEh2ZtA.mjs} +4 -4
  38. package/dist/{platform-cmd-C9Vt7m-d.mjs → platform-cmd-DE6dw45v.mjs} +1 -1
  39. package/dist/{platform-domain-IjiXgrXJ.mjs → platform-domain-B_7x6Iqx.mjs} +2 -2
  40. package/dist/{platform-lifecycle-CuJIZNvA.mjs → platform-lifecycle-Dhx9Pnub.mjs} +1 -1
  41. package/dist/{platform-lifecycle-BquAaU-5.mjs → platform-lifecycle-Di0LbhPM.mjs} +7 -7
  42. package/dist/{platform-management-Cgyed0WY.mjs → platform-management-B9LUtMt9.mjs} +1 -1
  43. package/dist/{platform-management-CCQKGsq4.mjs → platform-management-eaiaU3uM.mjs} +2 -2
  44. package/dist/{platform-recovery-DS8ih1SW.mjs → platform-recovery-BxfA8E5C.mjs} +2 -2
  45. package/dist/{prepare-CaUxODOU.mjs → prepare-_T-Haxrr.mjs} +1 -1
  46. package/dist/{project-cmd-2lN--YAX.mjs → project-cmd-DrnRJdep.mjs} +13 -13
  47. package/dist/{project-team-Dapn9HZn.mjs → project-team-CzRbO_kA.mjs} +1 -1
  48. package/dist/{project-token-C90v9SJK.mjs → project-token-Bwxjf4y6.mjs} +1 -1
  49. package/dist/{requests-CzX46I0i.mjs → requests-DwrqUQZ8.mjs} +1 -1
  50. package/dist/{rollback-BEeyc73H.mjs → rollback-B4tFWmkN.mjs} +1 -1
  51. package/dist/{secret-wnTel5Yw.mjs → secret-UtrRjhEO.mjs} +1 -1
  52. package/dist/{subcommand-prompt-Gj3VzLIh.mjs → subcommand-prompt-BuGYkAkC.mjs} +1 -1
  53. package/package.json +7 -7
  54. package/skills/void/docs/guide/deployment.md +6 -13
  55. package/skills/void/docs/guide/email.md +53 -59
  56. package/skills/void/docs/guide/index.md +15 -41
  57. package/skills/void/docs/guide/quickstart.md +11 -78
  58. package/skills/void/docs/index.md +17 -17
  59. package/skills/void/docs/integrations/cloudflare.md +16 -23
  60. package/skills/void/docs/reference/cli.md +13 -7
  61. package/skills/void/docs/reference/config.md +6 -6
  62. package/dist/gen-BBiIZw6g.mjs +0 -2
  63. package/dist/help-CS_nAsWu.mjs +0 -2
  64. package/dist/login-Ch9cgWRF.mjs +0 -2
  65. package/dist/migrate-CLty4mZR.mjs +0 -2
@@ -1,5 +1,5 @@
1
1
  import { a as join } from "./dist-4WkAWhWx.mjs";
2
- import { r as cliTitle } from "./output-urU86XeT.mjs";
2
+ import { r as cliTitle } from "./output-CCH48AMM.mjs";
3
3
  import { c as getToken } from "./auth-B9_D6ygs.mjs";
4
4
  import { i as readDeploymentPlatform, o as readProjectConfig } from "./project-CWNIPoXc.mjs";
5
5
  import { r as generateEnvTypes, t as findEnvFile } from "./env-types-CWDtqHgw.mjs";
@@ -0,0 +1,2 @@
1
+ import { r as runGenCommand } from "./gen-pg-Ojg8Y.mjs";
2
+ export { runGenCommand };
@@ -1,5 +1,5 @@
1
1
  import { a as join, l as relative, n as dirname } from "./dist-4WkAWhWx.mjs";
2
- import { r as cliTitle } from "./output-urU86XeT.mjs";
2
+ import { r as cliTitle } from "./output-CCH48AMM.mjs";
3
3
  import { n as readProjectPaths } from "./project-paths-CKQ-Q5JS.mjs";
4
4
  import { m as readConfig, u as getDatabaseDialect } from "./config-Dxr6cTXn.mjs";
5
5
  import { n as ensureProjectTsconfig } from "./project-tsconfig-CwfqUnVp.mjs";
@@ -1,4 +1,4 @@
1
- import { c as import_picocolors } from "./output-urU86XeT.mjs";
1
+ import { c as import_picocolors } from "./output-CCH48AMM.mjs";
2
2
  import { c as getToken, d as openBrowser, n as createCodeChallenge, r as createCodeVerifier, t as awaitBrowserCallback } from "./auth-B9_D6ygs.mjs";
3
3
  import { o as readProjectConfig } from "./project-CWNIPoXc.mjs";
4
4
  import { B as text, E as confirm, I as select, T as cancel, W as isCancel, j as log } from "./dist-Dn6nn2IU.mjs";
@@ -0,0 +1,2 @@
1
+ import { r as printHelpPage } from "./help-sBhFH6pi.mjs";
2
+ export { printHelpPage };
@@ -1,5 +1,5 @@
1
1
  import { a as join } from "./dist-4WkAWhWx.mjs";
2
- import { c as import_picocolors, l as sectionTitle, s as helpLine, t as categoryTitle } from "./output-urU86XeT.mjs";
2
+ import { c as import_picocolors, l as sectionTitle, s as helpLine, t as categoryTitle } from "./output-CCH48AMM.mjs";
3
3
  import { N as note, P as outro } from "./dist-Dn6nn2IU.mjs";
4
4
  import { n as getPackageDir } from "./agents-gni4eqBu.mjs";
5
5
  import { t as OPERATOR_MAX_TIMEOUT_MS } from "./operator-client-A0iex2yi.mjs";
package/dist/index.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { n as __toESM } from "./rolldown-runtime-DXIUcv95.mjs";
2
2
  import { a as join, l as relative, n as dirname, u as resolve } from "./dist-4WkAWhWx.mjs";
3
- import { d as require_picocolors } from "./output-urU86XeT.mjs";
4
- import { B as resolveDistDir, Ct as resolveAssetRoutingPolicy, W as resolveWorkerDirName, at as generateQueueResolverSource, bt as hasApiRoutes, dt as hasRevalidate, ft as scanDurableObjectModules, lt as collectPages, ot as prerenderPages, pt as SEND_EMAIL_BINDING, st as prerenderPagesNode, ut as collectRevalidate, xt as hasDocumentRoutes } from "./deploy-H968Lo4T.mjs";
3
+ import { d as require_picocolors } from "./output-CCH48AMM.mjs";
4
+ import { B as resolveDistDir, Ct as resolveAssetRoutingPolicy, W as resolveWorkerDirName, at as generateQueueResolverSource, bt as hasApiRoutes, dt as hasRevalidate, ft as scanDurableObjectModules, lt as collectPages, ot as prerenderPages, pt as SEND_EMAIL_BINDING, st as prerenderPagesNode, ut as collectRevalidate, xt as hasDocumentRoutes } from "./deploy-DEsMVrCY.mjs";
5
5
  import { i as resolveProjectPaths, n as readProjectPaths, t as assertNoRootSourceConventionConflicts } from "./project-paths-CKQ-Q5JS.mjs";
6
6
  import { n as loadVoidAuthConfig, t as findVoidAuthConfig } from "./config-uP7ZDtVZ.mjs";
7
7
  import { r as scopedAccessCredentials } from "./cf-access-DRsQRe6k.mjs";
@@ -5611,7 +5611,7 @@ async function runAiSetupPrompt(root, token, apiUrl, server) {
5611
5611
  let slug;
5612
5612
  if (result === "__create__") {
5613
5613
  const { validateProjectSlug } = await import("./project-slug-DofjTFd-.mjs");
5614
- const { createProjectWithSlugRetry } = await import("./create-project-CI-17RVJ.mjs");
5614
+ const { createProjectWithSlugRetry } = await import("./create-project-JV9-6ICF.mjs");
5615
5615
  let created;
5616
5616
  try {
5617
5617
  created = await createProjectWithSlugRetry(client, inferDefaultSlug(root), async (defaultSlug) => {
@@ -1,5 +1,5 @@
1
1
  import { a as join, i as isAbsolute, l as relative, n as dirname, t as basename, u as resolve } from "./dist-4WkAWhWx.mjs";
2
- import { r as cliTitle } from "./output-urU86XeT.mjs";
2
+ import { r as cliTitle } from "./output-CCH48AMM.mjs";
3
3
  import { n as readProjectPaths, o as TYPED_CONFIG_FILE } from "./project-paths-CKQ-Q5JS.mjs";
4
4
  import { c as getToken, u as isStagingMode } from "./auth-B9_D6ygs.mjs";
5
5
  import { d as writeProjectConfig, i as readDeploymentPlatform, l as writeDeploymentPlatform, o as readProjectConfig, t as attachSelectedPlatform } from "./project-CWNIPoXc.mjs";
@@ -15,10 +15,10 @@ import { n as getPackageDir, t as detectAgents } from "./agents-gni4eqBu.mjs";
15
15
  import { n as PlatformClient } from "./client-PdAJ-F0t.mjs";
16
16
  import { r as formatProjectCommand } from "./preset-Dowh9tTt.mjs";
17
17
  import { n as writeVoidProjectConfig, t as canRewriteVoidProjectConfig } from "./config-write-y3CBI_ux.mjs";
18
- import { i as migrateFrameworkAdapterPaths, t as migrateLegacyVoidConfig } from "./migrate-DcW8F2W8.mjs";
19
- import { i as promptProjectSelection, r as promptAndCreateProject } from "./create-project-C9lQhRzj.mjs";
20
- import { t as promptForLoginToken } from "./login-CKk5NX4d.mjs";
21
- import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-DRxCOTwy.mjs";
18
+ import { i as migrateFrameworkAdapterPaths, t as migrateLegacyVoidConfig } from "./migrate-BV8qHiCb.mjs";
19
+ import { i as promptProjectSelection, r as promptAndCreateProject } from "./create-project-BZBl_gQ0.mjs";
20
+ import { t as promptForLoginToken } from "./login-jKe_0QZL.mjs";
21
+ import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-0tEh2ZtA.mjs";
22
22
  import { t as connectCloudflare } from "./cloudflare-connect-DloREDlc.mjs";
23
23
  import { n as findInstalledYarnPnpRuntime, r as hasLocalLockfile, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-CVEc3gE7.mjs";
24
24
  import { createRequire } from "node:module";
@@ -1,9 +1,9 @@
1
- import { c as import_picocolors, r as cliTitle } from "./output-urU86XeT.mjs";
1
+ import { c as import_picocolors, r as cliTitle } from "./output-CCH48AMM.mjs";
2
2
  import { c as getToken, s as getSiteDomain } from "./auth-B9_D6ygs.mjs";
3
3
  import { d as writeProjectConfig, o as readProjectConfig, t as attachSelectedPlatform } from "./project-CWNIPoXc.mjs";
4
4
  import { O as intro, P as outro, T as cancel, j as log } from "./dist-Dn6nn2IU.mjs";
5
5
  import { n as PlatformClient } from "./client-PdAJ-F0t.mjs";
6
- import { i as promptProjectSelection, r as promptAndCreateProject } from "./create-project-C9lQhRzj.mjs";
6
+ import { i as promptProjectSelection, r as promptAndCreateProject } from "./create-project-BZBl_gQ0.mjs";
7
7
  import { r as resolveProjectBySlug } from "./resolve-project-Xvis70DG.mjs";
8
8
  //#region src/cli/link.ts
9
9
  function projectLabel(slug, root, url) {
@@ -1,4 +1,4 @@
1
- import { a as dim, c as import_picocolors, o as ensureUtc, r as cliTitle, u as tablePrefix } from "./output-urU86XeT.mjs";
1
+ import { a as dim, c as import_picocolors, o as ensureUtc, r as cliTitle, u as tablePrefix } from "./output-CCH48AMM.mjs";
2
2
  import { c as getToken } from "./auth-B9_D6ygs.mjs";
3
3
  import { i as readDeploymentPlatform, o as readProjectConfig } from "./project-CWNIPoXc.mjs";
4
4
  import { O as intro, P as outro, j as log } from "./dist-Dn6nn2IU.mjs";
@@ -0,0 +1,2 @@
1
+ import { r as selectPlatformLoginMethod } from "./login-jKe_0QZL.mjs";
2
+ export { selectPlatformLoginMethod };
@@ -1,4 +1,4 @@
1
- import { c as import_picocolors, i as createSpinner, r as cliTitle } from "./output-urU86XeT.mjs";
1
+ import { c as import_picocolors, i as createSpinner, r as cliTitle } from "./output-CCH48AMM.mjs";
2
2
  import { _ as saveToken, a as getApiUrl, c as getToken, g as savePlatformToken, h as runPlatformLogin, l as getTokenSource, m as runLogin, p as removeToken, u as isStagingMode } from "./auth-B9_D6ygs.mjs";
3
3
  import { I as select, O as intro, P as outro, T as cancel, W as isCancel, j as log } from "./dist-Dn6nn2IU.mjs";
4
4
  import { i as isExpiredTokenError, n as PlatformClient } from "./client-PdAJ-F0t.mjs";
@@ -29,7 +29,7 @@ async function selectPlatformLoginMethod(platform, requestedId) {
29
29
  return methods.find((method) => method.id === provider);
30
30
  }
31
31
  async function promptForLoginToken(root = process.cwd(), platform) {
32
- const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await import("./platform-cmd-C9Vt7m-d.mjs").then(({ discoverPlatform }) => discoverPlatform(getApiUrl(root))));
32
+ const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await import("./platform-cmd-DE6dw45v.mjs").then(({ discoverPlatform }) => discoverPlatform(getApiUrl(root))));
33
33
  const s = createSpinner();
34
34
  s.start(`Opening browser for ${providerName} login...`);
35
35
  try {
@@ -1,4 +1,4 @@
1
- import { a as dim, c as import_picocolors, r as cliTitle } from "./output-urU86XeT.mjs";
1
+ import { a as dim, c as import_picocolors, r as cliTitle } from "./output-CCH48AMM.mjs";
2
2
  import { c as getToken } from "./auth-B9_D6ygs.mjs";
3
3
  import { i as readDeploymentPlatform, o as readProjectConfig } from "./project-CWNIPoXc.mjs";
4
4
  import { O as intro, P as outro, j as log } from "./dist-Dn6nn2IU.mjs";
@@ -1,5 +1,5 @@
1
1
  import { a as join, n as dirname } from "./dist-4WkAWhWx.mjs";
2
- import { r as cliTitle } from "./output-urU86XeT.mjs";
2
+ import { r as cliTitle } from "./output-CCH48AMM.mjs";
3
3
  import { o as TYPED_CONFIG_FILE, s as loadTypedVoidConfigFile } from "./project-paths-CKQ-Q5JS.mjs";
4
4
  import { g as validateConfig } from "./config-Dxr6cTXn.mjs";
5
5
  import { B as seedCloudflareConfig, I as VOID_LOCK_FILE, V as stashCloudflareDeployPointer } from "./wrangler-D01qs6VB.mjs";
@@ -0,0 +1,2 @@
1
+ import { n as runMigrateCommand } from "./migrate-BV8qHiCb.mjs";
2
+ export { runMigrateCommand };
@@ -137,8 +137,8 @@ async function runAuth(origin, args) {
137
137
  if (args.action === "login" || args.action === "token" && args.tokenStdin) {
138
138
  if (!args.tokenStdin && !process.stdin.isTTY) throw new OperatorClientError("Browser login requires an interactive terminal. Use --token-stdin to exchange an API session.", "interactive_login_required");
139
139
  const apiToken = args.tokenStdin ? await readOperatorApiTokenStdin() : await (async () => {
140
- const { discoverPlatform } = await import("./platform-cmd-C9Vt7m-d.mjs");
141
- const { selectPlatformLoginMethod } = await import("./login-Ch9cgWRF.mjs");
140
+ const { discoverPlatform } = await import("./platform-cmd-DE6dw45v.mjs");
141
+ const { selectPlatformLoginMethod } = await import("./login-BwiopVdg.mjs");
142
142
  const { runPlatformLogin } = await import("./auth-CAw7zHqj.mjs");
143
143
  return runPlatformLogin(origin, (await selectPlatformLoginMethod(await discoverPlatform(origin), args.providerExplicit ? args.provider : void 0)).id, (url) => process.stderr.write(`Sign in at ${url}\n`));
144
144
  })();
@@ -279,7 +279,7 @@ async function followOperatorLogs(client, args, signal, pollIntervalMs = 2e3) {
279
279
  }
280
280
  async function runOperatorCommand(args) {
281
281
  if (!args.action) {
282
- const { printHelpPage } = await import("./help-CS_nAsWu.mjs");
282
+ const { printHelpPage } = await import("./help-B403BLBB.mjs");
283
283
  printHelpPage(["platform", args.group]);
284
284
  return;
285
285
  }
@@ -78,13 +78,13 @@ function cliCommandName() {
78
78
  return entryName === "void-dev" || entryName === "void-dev.cmd" ? "void-dev" : "void";
79
79
  }
80
80
  /**
81
- * CI-safe spinner wrapper. In CI environments (GitHub Actions, etc.),
81
+ * Terminal-safe spinner wrapper. In CI and redirected output,
82
82
  * `@clack/prompts` spinner emits DEC Private Mode cursor hide/show codes
83
83
  * (`\x1b[?25l` / `\x1b[?25h`) that render as text artifacts. This wrapper
84
- * replaces the spinner with plain log output in CI.
84
+ * replaces the spinner with plain log output.
85
85
  */
86
- function createSpinner(options) {
87
- if (!isCI()) return spinner(options);
86
+ function createSpinner(options, isTerminal = process.stdout.isTTY === true) {
87
+ if (!isCI() && isTerminal) return spinner(options);
88
88
  let currentMessage = "";
89
89
  return {
90
90
  start(msg = "") {
@@ -140,11 +140,11 @@ async function configurationInput(args, existing) {
140
140
  }
141
141
  async function runPlatformAuthConfig(args) {
142
142
  if (args.action === "recover") {
143
- const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-DmRyIfW0.mjs");
143
+ const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-Cr0r8TEb.mjs");
144
144
  return runPlatformAuthRecovery(args);
145
145
  }
146
146
  if (args.action === "protection") {
147
- const { runPlatformProtectionConfig } = await import("./platform-auth-protection-Jb0yftay.mjs");
147
+ const { runPlatformProtectionConfig } = await import("./platform-auth-protection-DjTE5Hj-.mjs");
148
148
  return runPlatformProtectionConfig(args);
149
149
  }
150
150
  const origin = resolveOperatorOrigin(args.connection);
@@ -4,8 +4,8 @@ import { n as ensurePlatformAccessToken } from "./cf-access-rAZxzMkL.mjs";
4
4
  import { E as confirm, W as isCancel } from "./dist-Dn6nn2IU.mjs";
5
5
  import { n as OperatorClient } from "./operator-client-A0iex2yi.mjs";
6
6
  import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-BkVgJqv-.mjs";
7
- import { D as preparePlatformAccessSetup, E as parsePlatformAccessSetupSpec, O as PlatformCloudflareClient, T as checkpointPlatformAccessResources, n as resolvePlatformInstallDatabaseUrl, o as acquirePlatformDatabaseLifecycleLock, w as resolvePlatformCloudflareCredential } from "./platform-lifecycle-BquAaU-5.mjs";
8
- import { c as selectAuthoritativePlatformManifest, u as verifyPlatformInstallationOwnership } from "./platform-management-CCQKGsq4.mjs";
7
+ import { D as preparePlatformAccessSetup, E as parsePlatformAccessSetupSpec, O as PlatformCloudflareClient, T as checkpointPlatformAccessResources, n as resolvePlatformInstallDatabaseUrl, o as acquirePlatformDatabaseLifecycleLock, w as resolvePlatformCloudflareCredential } from "./platform-lifecycle-Di0LbhPM.mjs";
8
+ import { c as selectAuthoritativePlatformManifest, u as verifyPlatformInstallationOwnership } from "./platform-management-eaiaU3uM.mjs";
9
9
  import { createHmac } from "node:crypto";
10
10
  import { parsePlatformAccessProtection, platformProtectionProofMessage } from "@void/platform";
11
11
  import { readFile } from "node:fs/promises";
@@ -2,8 +2,8 @@ import { d as openBrowser } from "./auth-B9_D6ygs.mjs";
2
2
  import { d as readInstallationRecoverySecrets, h as resolveInstallationManifest, t as acquirePlatformLifecycleLock } from "./platform-registry-BJbgZLS1.mjs";
3
3
  import { E as confirm, W as isCancel } from "./dist-Dn6nn2IU.mjs";
4
4
  import { a as resolveOperatorOrigin } from "./operator-auth-BkVgJqv-.mjs";
5
- import { O as PlatformCloudflareClient, f as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLockConnection, w as resolvePlatformCloudflareCredential } from "./platform-lifecycle-BquAaU-5.mjs";
6
- import { c as selectAuthoritativePlatformManifest, u as verifyPlatformInstallationOwnership } from "./platform-management-CCQKGsq4.mjs";
5
+ import { O as PlatformCloudflareClient, f as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLockConnection, w as resolvePlatformCloudflareCredential } from "./platform-lifecycle-Di0LbhPM.mjs";
6
+ import { c as selectAuthoritativePlatformManifest, u as verifyPlatformInstallationOwnership } from "./platform-management-eaiaU3uM.mjs";
7
7
  import { createCipheriv, createDecipheriv, createHash, createHmac, hkdfSync, randomBytes, randomUUID } from "node:crypto";
8
8
  import { execFile } from "node:child_process";
9
9
  import { parsePlatformAccessProtection, parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration, platformAuthenticationRecoveryMessage, validatePlatformAdmissionPolicy } from "@void/platform";
@@ -1,4 +1,4 @@
1
- import { c as import_picocolors } from "./output-urU86XeT.mjs";
1
+ import { c as import_picocolors } from "./output-CCH48AMM.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-DRsQRe6k.mjs";
3
3
  import { _ as selectPlatformConnection, g as savePlatformConnection, o as listPlatformConnections, r as getActivePlatformConnection, s as normalizePlatformApiUrl } from "./platform-registry-BJbgZLS1.mjs";
4
4
  import { i as isCloudflareAccessChallenge, n as ensurePlatformAccessToken, t as ensureCloudflaredToken } from "./cf-access-rAZxzMkL.mjs";
@@ -92,12 +92,12 @@ function saveDiscoveredPlatform(discovery) {
92
92
  }
93
93
  async function runPlatformCommand(_root, args) {
94
94
  if (args.subcommand === "config") {
95
- const { runPlatformAuthConfig } = await import("./platform-auth-config-Df6yVw-e.mjs");
95
+ const { runPlatformAuthConfig } = await import("./platform-auth-config-C-hv-_Ok.mjs");
96
96
  await runPlatformAuthConfig(args);
97
97
  return;
98
98
  }
99
99
  if (args.subcommand === "operator") {
100
- const { runOperatorCommand } = await import("./operator-cmd-BEUYhaHB.mjs");
100
+ const { runOperatorCommand } = await import("./operator-cmd-BwAS2XZt.mjs");
101
101
  await runOperatorCommand(args);
102
102
  return;
103
103
  }
@@ -129,7 +129,7 @@ async function runPlatformCommand(_root, args) {
129
129
  console.log(`Capabilities: ${Object.entries(discovery.capabilities).filter(([, enabled]) => enabled).map(([name]) => name).join(", ")}`);
130
130
  return;
131
131
  }
132
- const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-CuJIZNvA.mjs");
132
+ const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-Dhx9Pnub.mjs");
133
133
  await runPlatformLifecycleCommand(args);
134
134
  }
135
135
  //#endregion
@@ -1,2 +1,2 @@
1
- import { r as runPlatformCommand, t as discoverPlatform } from "./platform-cmd-DRxCOTwy.mjs";
1
+ import { r as runPlatformCommand, t as discoverPlatform } from "./platform-cmd-0tEh2ZtA.mjs";
2
2
  export { discoverPlatform, runPlatformCommand };
@@ -1,8 +1,8 @@
1
1
  import { t as cfAccessHeaders } from "./cf-access-DRsQRe6k.mjs";
2
2
  import { d as readInstallationRecoverySecrets, g as savePlatformConnection, t as acquirePlatformLifecycleLock, v as writeInstallationManifest } from "./platform-registry-BJbgZLS1.mjs";
3
3
  import { B as text, E as confirm, N as note, W as isCancel, j as log } from "./dist-Dn6nn2IU.mjs";
4
- import { C as assertPlatformOperatorCredentialCanApplyPlan, O as PlatformCloudflareClient, _ as createPlatformInstallPlan, c as createPlatformHealthProbeToken, h as recordPlatformWorkerTraffic, n as resolvePlatformInstallDatabaseUrl, o as acquirePlatformDatabaseLifecycleLock, p as recordResource, t as assertNoninteractivePlatformMutationAcknowledged, w as resolvePlatformCloudflareCredential } from "./platform-lifecycle-BquAaU-5.mjs";
5
- import { a as resolveInstalledPlatformManifest, c as selectAuthoritativePlatformManifest, u as verifyPlatformInstallationOwnership } from "./platform-management-CCQKGsq4.mjs";
4
+ import { C as assertPlatformOperatorCredentialCanApplyPlan, O as PlatformCloudflareClient, _ as createPlatformInstallPlan, c as createPlatformHealthProbeToken, h as recordPlatformWorkerTraffic, n as resolvePlatformInstallDatabaseUrl, o as acquirePlatformDatabaseLifecycleLock, p as recordResource, t as assertNoninteractivePlatformMutationAcknowledged, w as resolvePlatformCloudflareCredential } from "./platform-lifecycle-Di0LbhPM.mjs";
5
+ import { a as resolveInstalledPlatformManifest, c as selectAuthoritativePlatformManifest, u as verifyPlatformInstallationOwnership } from "./platform-management-eaiaU3uM.mjs";
6
6
  import { randomUUID } from "node:crypto";
7
7
  import { PLATFORM_APPLICATION_KEY, PLATFORM_REMOTE_INSTALLATION_MANIFEST_KEY, createApplicationRoutes, createPlatformDeploymentManifest, normalizeApplicationDomain } from "@void/platform";
8
8
  //#region src/cli/platform-domain.ts
@@ -1,2 +1,2 @@
1
- import { r as runPlatformLifecycleCommand } from "./platform-lifecycle-BquAaU-5.mjs";
1
+ import { r as runPlatformLifecycleCommand } from "./platform-lifecycle-Di0LbhPM.mjs";
2
2
  export { runPlatformLifecycleCommand };
@@ -1,6 +1,6 @@
1
1
  import { n as __toESM } from "./rolldown-runtime-DXIUcv95.mjs";
2
2
  import { a as join } from "./dist-4WkAWhWx.mjs";
3
- import { c as import_picocolors$1, d as require_picocolors, i as createSpinner, n as cliCommandName, r as cliTitle } from "./output-urU86XeT.mjs";
3
+ import { c as import_picocolors$1, d as require_picocolors, i as createSpinner, n as cliCommandName, r as cliTitle } from "./output-CCH48AMM.mjs";
4
4
  import { t as cfAccessHeaders } from "./cf-access-DRsQRe6k.mjs";
5
5
  import { d as openBrowser } from "./auth-B9_D6ygs.mjs";
6
6
  import { a as listInstallationManifests, d as readInstallationRecoverySecrets, f as readPendingInstallationSecrets, g as savePlatformConnection, h as resolveInstallationManifest, i as latestPlatformWorkerCutoverGeneration, l as platformWorkerSecretUpdateIntentState, n as assertPlatformInstallationSlugAvailable, s as normalizePlatformApiUrl, t as acquirePlatformLifecycleLock, u as promoteInstallationSecrets, v as writeInstallationManifest, y as writePendingInstallationSecrets } from "./platform-registry-BJbgZLS1.mjs";
@@ -1499,7 +1499,7 @@ async function verifyInstalledPlatformAccessProtection(input) {
1499
1499
  }
1500
1500
  const existingWorkers = input.plan.actions.filter((action) => action.kind === "worker" && action.action === "update").map((action) => action.name);
1501
1501
  if (existingWorkers.length) {
1502
- const { verifyProtectionWorkerOrigins } = await import("./platform-auth-protection-Jb0yftay.mjs");
1502
+ const { verifyProtectionWorkerOrigins } = await import("./platform-auth-protection-DjTE5Hj-.mjs");
1503
1503
  await verifyProtectionWorkerOrigins({
1504
1504
  request: input.client.request.bind(input.client),
1505
1505
  listWorkerDomains: input.client.listWorkerDomains.bind(input.client),
@@ -5532,14 +5532,14 @@ function resolvePlatformInstallDatabaseUrl(checkpoint, manifest = null) {
5532
5532
  }
5533
5533
  async function runPlatformLifecycleCommand(args) {
5534
5534
  if (args.subcommand === "domain") {
5535
- const { runPlatformDomainCommand } = await import("./platform-domain-IjiXgrXJ.mjs");
5535
+ const { runPlatformDomainCommand } = await import("./platform-domain-B_7x6Iqx.mjs");
5536
5536
  await runPlatformDomainCommand(args);
5537
5537
  return;
5538
5538
  }
5539
5539
  if (args.subcommand === "discover") {
5540
5540
  const client = new PlatformCloudflareClient((await resolvePlatformCloudflareCredential()).token);
5541
5541
  const accountId = await selectAccount(await readAccounts(client), args.account);
5542
- const { recoverPlatformInstallations } = await import("./platform-recovery-DS8ih1SW.mjs");
5542
+ const { recoverPlatformInstallations } = await import("./platform-recovery-BxfA8E5C.mjs");
5543
5543
  const recovered = await recoverPlatformInstallations(client, accountId, void 0, args.selector);
5544
5544
  if (recovered.length === 0) {
5545
5545
  log.info(`No recoverable Void platform installations were found in ${accountId}.`);
@@ -5549,7 +5549,7 @@ async function runPlatformLifecycleCommand(args) {
5549
5549
  return;
5550
5550
  }
5551
5551
  if (args.subcommand !== "install") {
5552
- const { runInstalledPlatformCommand } = await import("./platform-management-Cgyed0WY.mjs");
5552
+ const { runInstalledPlatformCommand } = await import("./platform-management-B9LUtMt9.mjs");
5553
5553
  await runInstalledPlatformCommand(args);
5554
5554
  return;
5555
5555
  }
@@ -5761,7 +5761,7 @@ async function runPlatformLifecycleCommand(args) {
5761
5761
  progress?.stop("Read the saved installation.");
5762
5762
  progress = void 0;
5763
5763
  if (authoritative) {
5764
- const { selectAuthoritativePlatformManifest } = await import("./platform-management-Cgyed0WY.mjs");
5764
+ const { selectAuthoritativePlatformManifest } = await import("./platform-management-B9LUtMt9.mjs");
5765
5765
  const selected = selectAuthoritativePlatformManifest(existing, authoritative);
5766
5766
  authoritativeProvisionIntents = true;
5767
5767
  if (!args.plan && JSON.stringify(selected) !== JSON.stringify(existing)) writeInstallationManifest(selected);
@@ -5990,7 +5990,7 @@ async function runPlatformLifecycleCommand(args) {
5990
5990
  })).actions.filter((action) => action.kind === "worker"),
5991
5991
  revalidateBeforeWorkerDeploy: (manifest, action) => revalidatePlatformInstallAction(client, plan, manifest, action),
5992
5992
  verifyExistingOwnership: async (manifest, databaseCheckpointExists) => {
5993
- const { verifyPlatformInstallationOwnership } = await import("./platform-management-Cgyed0WY.mjs");
5993
+ const { verifyPlatformInstallationOwnership } = await import("./platform-management-B9LUtMt9.mjs");
5994
5994
  const retainedReplacementKeys = new Set(plan.actions.filter((action) => {
5995
5995
  const previous = manifest.resources.find((resource) => resource.key === action.key);
5996
5996
  return action.action === "create" && previous && previous.name !== action.name;
@@ -1,2 +1,2 @@
1
- import { c as selectAuthoritativePlatformManifest, s as runInstalledPlatformCommand, u as verifyPlatformInstallationOwnership } from "./platform-management-CCQKGsq4.mjs";
1
+ import { c as selectAuthoritativePlatformManifest, s as runInstalledPlatformCommand, u as verifyPlatformInstallationOwnership } from "./platform-management-eaiaU3uM.mjs";
2
2
  export { runInstalledPlatformCommand, selectAuthoritativePlatformManifest, verifyPlatformInstallationOwnership };
@@ -1,7 +1,7 @@
1
- import { i as createSpinner } from "./output-urU86XeT.mjs";
1
+ import { i as createSpinner } from "./output-CCH48AMM.mjs";
2
2
  import { a as listInstallationManifests, d as readInstallationRecoverySecrets, h as resolveInstallationManifest, m as removePlatformConnectionForInstallation, p as removeInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, v as writeInstallationManifest } from "./platform-registry-BJbgZLS1.mjs";
3
3
  import { E as confirm, I as select, N as note, P as outro, W as isCancel, j as log } from "./dist-Dn6nn2IU.mjs";
4
- import { A as hyperdriveOriginFromConnectionString, C as assertPlatformOperatorCredentialCanApplyPlan, M as verifyPlatformRuntimeTokenPermissions, O as PlatformCloudflareClient, S as platformDatabaseNameFromOwnerUrl, _ as createPlatformInstallPlan, a as REMOTE_INSTALLATION_MANIFEST_KEY, b as platformProvisionIntentHash, d as loadPlatformRuntime, g as trackedPlatformWorkerTraffic, j as hyperdriveOriginMatches, k as hyperdriveOriginConfigHash, l as createPlatformInstallationSecrets, m as resolveBootstrapGitHubId, n as resolvePlatformInstallDatabaseUrl, o as acquirePlatformDatabaseLifecycleLock, t as assertNoninteractivePlatformMutationAcknowledged, u as installPlatform, v as formatPlatformInstallPlan, w as resolvePlatformCloudflareCredential, x as revalidatePlatformInstallAction, y as platformAdoptionIntentHash } from "./platform-lifecycle-BquAaU-5.mjs";
4
+ import { A as hyperdriveOriginFromConnectionString, C as assertPlatformOperatorCredentialCanApplyPlan, M as verifyPlatformRuntimeTokenPermissions, O as PlatformCloudflareClient, S as platformDatabaseNameFromOwnerUrl, _ as createPlatformInstallPlan, a as REMOTE_INSTALLATION_MANIFEST_KEY, b as platformProvisionIntentHash, d as loadPlatformRuntime, g as trackedPlatformWorkerTraffic, j as hyperdriveOriginMatches, k as hyperdriveOriginConfigHash, l as createPlatformInstallationSecrets, m as resolveBootstrapGitHubId, n as resolvePlatformInstallDatabaseUrl, o as acquirePlatformDatabaseLifecycleLock, t as assertNoninteractivePlatformMutationAcknowledged, u as installPlatform, v as formatPlatformInstallPlan, w as resolvePlatformCloudflareCredential, x as revalidatePlatformInstallAction, y as platformAdoptionIntentHash } from "./platform-lifecycle-Di0LbhPM.mjs";
5
5
  import { createHash } from "node:crypto";
6
6
  import { PLATFORM_DISABLED_KEY, PLATFORM_DISABLED_VALUE, PLATFORM_R2_OWNERSHIP_MARKER_KEY, createPlatformResourceOwnershipMarker, parsePlatformInstallationManifest, parsePlatformResourceOwnershipMarker, recordInstallationResource, recordInstallationStep, setInstallationDesiredState, transitionInstallation } from "@void/platform";
7
7
  //#region src/cli/platform-management.ts
@@ -1,7 +1,7 @@
1
1
  import { t as cfAccessHeaders } from "./cf-access-DRsQRe6k.mjs";
2
2
  import { a as listInstallationManifests, g as savePlatformConnection, t as acquirePlatformLifecycleLock, v as writeInstallationManifest } from "./platform-registry-BJbgZLS1.mjs";
3
- import { _ as createPlatformInstallPlan, a as REMOTE_INSTALLATION_MANIFEST_KEY } from "./platform-lifecycle-BquAaU-5.mjs";
4
- import { i as recoverDurablyMarkedProvisionIntents, r as isPlatformManifestMonotonicExtension, u as verifyPlatformInstallationOwnership } from "./platform-management-CCQKGsq4.mjs";
3
+ import { _ as createPlatformInstallPlan, a as REMOTE_INSTALLATION_MANIFEST_KEY } from "./platform-lifecycle-Di0LbhPM.mjs";
4
+ import { i as recoverDurablyMarkedProvisionIntents, r as isPlatformManifestMonotonicExtension, u as verifyPlatformInstallationOwnership } from "./platform-management-eaiaU3uM.mjs";
5
5
  import { parsePlatformInstallationManifest, setInstallationEndpoints } from "@void/platform";
6
6
  //#region src/cli/platform-recovery.ts
7
7
  async function recoverPlatformInstallations(client, accountId, verifyEndpoint = verifyInstallationEndpoint, selector = "") {
@@ -1,4 +1,4 @@
1
- import { r as cliTitle } from "./output-urU86XeT.mjs";
1
+ import { r as cliTitle } from "./output-CCH48AMM.mjs";
2
2
  import { N as note, O as intro, P as outro, j as log } from "./dist-Dn6nn2IU.mjs";
3
3
  import { t as prepareProject } from "./prepare-pcWcxSCh.mjs";
4
4
  //#region src/cli/prepare.ts
@@ -1,4 +1,4 @@
1
- import { a as dim, c as import_picocolors, r as cliTitle, u as tablePrefix } from "./output-urU86XeT.mjs";
1
+ import { a as dim, c as import_picocolors, r as cliTitle, u as tablePrefix } from "./output-CCH48AMM.mjs";
2
2
  import { c as getToken, s as getSiteDomain } from "./auth-B9_D6ygs.mjs";
3
3
  import { i as readDeploymentPlatform } from "./project-CWNIPoXc.mjs";
4
4
  import { O as intro, P as outro, j as log } from "./dist-Dn6nn2IU.mjs";
@@ -39,63 +39,63 @@ async function runProjectsCommand(root) {
39
39
  async function runProjectCommand(root, args) {
40
40
  const cloudflare = readDeploymentPlatform(root) === "cloudflare";
41
41
  if (args.subcommand === "status") {
42
- const { runListCommand } = await import("./list-0wQs0oYg.mjs");
42
+ const { runListCommand } = await import("./list-DHU1Wj6c.mjs");
43
43
  return runListCommand(root, args.name || void 0);
44
44
  }
45
45
  if (args.subcommand === "link") {
46
46
  if (cloudflare) throw new Error("project: Direct Cloudflare apps are identified by cloudflare.name in void.config.ts and do not need linking.");
47
- const { runLink } = await import("./link-DxMOALXk.mjs");
47
+ const { runLink } = await import("./link-BC-mNG9-.mjs");
48
48
  return runLink(root, args.name || void 0);
49
49
  }
50
50
  if (args.subcommand === "list") {
51
51
  if (cloudflare) {
52
- const { runListCommand } = await import("./list-0wQs0oYg.mjs");
52
+ const { runListCommand } = await import("./list-DHU1Wj6c.mjs");
53
53
  return runListCommand(root);
54
54
  }
55
55
  return runProjectsCommand(root);
56
56
  }
57
57
  if (args.subcommand === "token") {
58
58
  if (cloudflare) throw new Error("project: CI deploy credentials are available only for Void platform projects.");
59
- const { runProjectTokenCommand } = await import("./project-token-C90v9SJK.mjs");
59
+ const { runProjectTokenCommand } = await import("./project-token-Bwxjf4y6.mjs");
60
60
  return runProjectTokenCommand(root, args);
61
61
  }
62
62
  if (args.subcommand === "team") {
63
63
  if (args.action === "") {
64
- const { printHelpPage } = await import("./help-CS_nAsWu.mjs");
64
+ const { printHelpPage } = await import("./help-B403BLBB.mjs");
65
65
  printHelpPage(["project", "team"]);
66
66
  return;
67
67
  }
68
68
  const accountInvitationAction = args.action === "pending" || args.action === "accept" || args.action === "decline";
69
69
  if (cloudflare && !accountInvitationAction) throw new Error("project: Teams are available only for projects hosted on a Void platform, not direct Cloudflare deployments.");
70
- const { runProjectTeamCommand } = await import("./project-team-Dapn9HZn.mjs");
70
+ const { runProjectTeamCommand } = await import("./project-team-CzRbO_kA.mjs");
71
71
  return runProjectTeamCommand(root, args);
72
72
  }
73
73
  if (args.subcommand === "logs") {
74
- const { runLogsCommand } = await import("./logs-hxWBSoej.mjs");
74
+ const { runLogsCommand } = await import("./logs-BG11f5PR.mjs");
75
75
  return runLogsCommand(root, args.filter, args.range, args.deployment || void 0, args.level || void 0);
76
76
  }
77
77
  if (args.subcommand === "requests") {
78
78
  if (cloudflare) throw new Error("project: Historical request analytics require the Void platform. Use `void project logs` for a live Cloudflare tail.");
79
- const { runRequestsCommand } = await import("./requests-CzX46I0i.mjs");
79
+ const { runRequestsCommand } = await import("./requests-DwrqUQZ8.mjs");
80
80
  return runRequestsCommand(root, args.range, args.status || void 0);
81
81
  }
82
82
  if (args.subcommand === "rollback") {
83
- const { runRollbackCommand } = await import("./rollback-BEeyc73H.mjs");
83
+ const { runRollbackCommand } = await import("./rollback-B4tFWmkN.mjs");
84
84
  return runRollbackCommand(root, args.deployId || void 0);
85
85
  }
86
86
  if (args.subcommand === "cancel") {
87
87
  if (cloudflare) throw new Error("project: Direct Cloudflare deploys activate only after readiness succeeds, so there is no remote build to cancel.");
88
- const { runCancelDeployCommand } = await import("./cancel-deploy-B3_s9NIN.mjs");
88
+ const { runCancelDeployCommand } = await import("./cancel-deploy-BgmyOwhe.mjs");
89
89
  return runCancelDeployCommand(root, args.deployId || void 0);
90
90
  }
91
91
  if (args.subcommand === "delete") {
92
92
  if (cloudflare) throw new Error("project: Refusing to delete Cloudflare resources through this command. Direct deployments are additive and existing resources may be shared.");
93
- const { runDeleteCommand } = await import("./delete-CghI_NXn.mjs");
93
+ const { runDeleteCommand } = await import("./delete-Ri6JemSU.mjs");
94
94
  return runDeleteCommand(root, args.name || void 0, { force: args.force });
95
95
  }
96
96
  if (args.subcommand === "purge-cache") {
97
97
  if (cloudflare) throw new Error("project: Direct Cloudflare ISR cache purge is not available yet; redeploy or purge the configured KV namespace explicitly.");
98
- const { runPurgeCacheCommand } = await import("./cache-BMw8eMyF.mjs");
98
+ const { runPurgeCacheCommand } = await import("./cache-Be0Fu5Ka.mjs");
99
99
  return runPurgeCacheCommand(root, args.projectSlug || void 0);
100
100
  }
101
101
  }
@@ -1,4 +1,4 @@
1
- import { r as cliTitle } from "./output-urU86XeT.mjs";
1
+ import { r as cliTitle } from "./output-CCH48AMM.mjs";
2
2
  import { c as getToken, i as getAccountCredential } from "./auth-B9_D6ygs.mjs";
3
3
  import { o as readProjectConfig } from "./project-CWNIPoXc.mjs";
4
4
  import { N as note, O as intro, P as outro, j as log } from "./dist-Dn6nn2IU.mjs";
@@ -1,4 +1,4 @@
1
- import { a as dim, r as cliTitle, u as tablePrefix } from "./output-urU86XeT.mjs";
1
+ import { a as dim, r as cliTitle, u as tablePrefix } from "./output-CCH48AMM.mjs";
2
2
  import { c as getToken } from "./auth-B9_D6ygs.mjs";
3
3
  import { o as readProjectConfig } from "./project-CWNIPoXc.mjs";
4
4
  import { O as intro, P as outro, j as log } from "./dist-Dn6nn2IU.mjs";
@@ -1,4 +1,4 @@
1
- import { a as dim, c as import_picocolors, r as cliTitle } from "./output-urU86XeT.mjs";
1
+ import { a as dim, c as import_picocolors, r as cliTitle } from "./output-CCH48AMM.mjs";
2
2
  import { c as getToken } from "./auth-B9_D6ygs.mjs";
3
3
  import { o as readProjectConfig } from "./project-CWNIPoXc.mjs";
4
4
  import { O as intro, P as outro, j as log } from "./dist-Dn6nn2IU.mjs";
@@ -1,4 +1,4 @@
1
- import { a as dim, c as import_picocolors, i as createSpinner, o as ensureUtc, r as cliTitle } from "./output-urU86XeT.mjs";
1
+ import { a as dim, c as import_picocolors, i as createSpinner, o as ensureUtc, r as cliTitle } from "./output-CCH48AMM.mjs";
2
2
  import { c as getToken } from "./auth-B9_D6ygs.mjs";
3
3
  import { i as readDeploymentPlatform, o as readProjectConfig } from "./project-CWNIPoXc.mjs";
4
4
  import { E as confirm, I as select, O as intro, P as outro, T as cancel, W as isCancel, j as log } from "./dist-Dn6nn2IU.mjs";
@@ -1,4 +1,4 @@
1
- import { r as cliTitle } from "./output-urU86XeT.mjs";
1
+ import { r as cliTitle } from "./output-CCH48AMM.mjs";
2
2
  import { c as getToken } from "./auth-B9_D6ygs.mjs";
3
3
  import { i as readDeploymentPlatform, o as readProjectConfig } from "./project-CWNIPoXc.mjs";
4
4
  import { _ as validateSecretValues } from "./env-validation-BsFEXps5.mjs";
@@ -1,4 +1,4 @@
1
- import { c as import_picocolors } from "./output-urU86XeT.mjs";
1
+ import { c as import_picocolors } from "./output-CCH48AMM.mjs";
2
2
  import { S as S_STEP_SUBMIT, _ as S_RADIO_ACTIVE, c as S_CHECKBOX_INACTIVE, i as S_BAR_END, q as wrapAnsi, r as S_BAR, s as S_CHECKBOX_ACTIVE, v as S_RADIO_INACTIVE, y as S_STEP_ACTIVE } from "./dist-Dn6nn2IU.mjs";
3
3
  //#region src/cli/subcommand-prompt.ts
4
4
  function promptSubcommand(command, subcommands) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "void",
3
- "version": "0.21.0",
3
+ "version": "0.21.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/voidzero-dev/void.git",
@@ -325,11 +325,11 @@
325
325
  "@cloudflare/vite-plugin": "1.54.7",
326
326
  "@cloudflare/workers-types": "^4.20260702.1",
327
327
  "@napi-rs/keyring": "2.0.0",
328
- "@void/deploy-cloudflare": "0.21.0",
329
- "@void/deploy-core": "0.21.0",
330
- "@void/edge": "0.21.0",
331
- "@void/isr": "0.21.0",
332
- "@void/platform": "0.21.0",
328
+ "@void/deploy-cloudflare": "0.21.1",
329
+ "@void/deploy-core": "0.21.1",
330
+ "@void/edge": "0.21.1",
331
+ "@void/isr": "0.21.1",
332
+ "@void/platform": "0.21.1",
333
333
  "acorn": "^8.15.0",
334
334
  "better-auth": "^1.7.3",
335
335
  "better-sqlite3": "^13.0.3",
@@ -379,7 +379,7 @@
379
379
  "zod": "^4.6.1"
380
380
  },
381
381
  "peerDependencies": {
382
- "@void/md": "0.21.0",
382
+ "@void/md": "0.21.1",
383
383
  "arktype": ">=2.0.0",
384
384
  "valibot": ">=1.0.0-beta.7",
385
385
  "vite": "^8.0.0",
@@ -4,15 +4,13 @@ outline: deep
4
4
 
5
5
  # Deployment
6
6
 
7
- Use `void deploy` to deploy your app to your own Cloudflare account or a Void platform run by your team. The CLI builds your app, creates the resources it needs, and applies your database migrations.
7
+ `void deploy` builds your app, provisions its resources, applies migrations, and deploys it to your own Cloudflare account or a Void platform run by your team.
8
8
 
9
- Choose Cloudflare if you're deploying an app yourself. Choose Void if your team has a shared platform you can connect to. You can also [install a Void platform](./self-hosted-platform.md) in your company's Cloudflare account.
9
+ Choose Cloudflare for your own account or Void for a shared team platform. You can [install a Void platform](./self-hosted-platform.md) in your team's Cloudflare account.
10
10
 
11
- ## Beta Support
11
+ ## Deployment Targets
12
12
 
13
- Direct Cloudflare deployment runs an application in your account. A self-hosted
14
- Void platform provides that deployment service to a team using the operator's
15
- account. Both use the same application APIs, with the following differences:
13
+ Both targets use the same application APIs. Their deployment features differ:
16
14
 
17
15
  | Feature | Direct Cloudflare | Core self-hosted platform |
18
16
  | ------------------------------------------------ | -------------------------------- | --------------------------------------------- |
@@ -28,14 +26,9 @@ account. Both use the same application APIs, with the following differences:
28
26
  | Generated GitHub deployment workflow | Supported | Use your CI with a scoped developer token |
29
27
  | User dashboard and managed GitHub builds | Not required | Not included in a standard installation |
30
28
 
31
- Ordinary native applications remain compatible with Workers Free within its
32
- quotas. Installing a team platform requires Workers for Platforms and the
33
- [documented infrastructure](./platform/installation/domains.md#cloudflare-footprint).
34
- Application rollback never reverses database migrations.
29
+ Native apps can run on Workers Free within its quotas. A team platform requires Workers for Platforms and the [documented infrastructure](./platform/installation/domains.md#cloudflare-footprint). Rollback does not reverse database migrations.
35
30
 
36
- Routing-rule parity applies to native Void applications and static deployments.
37
- Framework-owned Worker output uses its framework's routing and asset policy;
38
- unsupported Void routing rules are rejected before direct deployment.
31
+ Native Void apps and static sites use Void routing rules. Framework deployments use their framework's routing and asset policies; direct deploy rejects unsupported Void rules.
39
32
 
40
33
  Use matching CLI and framework adapter versions. For a team platform, the available features depend on its installed version and configuration. Ask your administrator if a feature is unavailable or an upgrade is required.
41
34