void 0.21.1 → 0.21.2

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 (52) hide show
  1. package/README.md +3 -2
  2. package/dist/{auth-cmd-g_ymMkUe.mjs → account-cmd-D8OC-U7y.mjs} +8 -8
  3. package/dist/{auth-link-DFvxIyZi.mjs → auth-link-BYFeMJAp.mjs} +3 -3
  4. package/dist/auth-router-OHZNmrb_.mjs +74 -0
  5. package/dist/{build-cmd-wJAv808h.mjs → build-cmd-Bft7EY51.mjs} +1 -1
  6. package/dist/{cache-Be0Fu5Ka.mjs → cache-CKV1Gz2w.mjs} +1 -1
  7. package/dist/{cancel-deploy-BgmyOwhe.mjs → cancel-deploy-BAKmkX4f.mjs} +1 -1
  8. package/dist/cli/cli.mjs +104 -52
  9. package/dist/{connect-LnvW4HKx.mjs → connect-DLx1pRYk.mjs} +3 -3
  10. package/dist/{db-Mzv88E1C.mjs → db-B98_UV4H.mjs} +6 -6
  11. package/dist/{delete-Ri6JemSU.mjs → delete-BEEyqlwd.mjs} +1 -1
  12. package/dist/{deploy-DEsMVrCY.mjs → deploy-Bsymb0_c.mjs} +3 -3
  13. package/dist/{deploy-DAH2-m_-.mjs → deploy-CsjbRNyv.mjs} +1 -1
  14. package/dist/{domain-BA37Ye7T.mjs → domain-Av2AkLQP.mjs} +1 -1
  15. package/dist/{email-C5NsxrQG.mjs → email-CUqa6TtH.mjs} +2 -2
  16. package/dist/{env-U_ohASB0.mjs → env-D4RIGEzz.mjs} +1 -1
  17. package/dist/{github-cmd-DsrkweIl.mjs → github-cmd-BEK4VprE.mjs} +3 -3
  18. package/dist/{help-sBhFH6pi.mjs → help-iQOt7WHk.mjs} +39 -8
  19. package/dist/help-r_vrpH_d.mjs +2 -0
  20. package/dist/index.mjs +3 -3
  21. package/dist/{init-C--Yyj1b.mjs → init-D5niUPAz.mjs} +2 -2
  22. package/dist/{link-BC-mNG9-.mjs → link-3lGrfXzd.mjs} +1 -1
  23. package/dist/{list-DHU1Wj6c.mjs → list-CVjGr_C6.mjs} +1 -1
  24. package/dist/{login-jKe_0QZL.mjs → login-BgQJzxAl.mjs} +2 -2
  25. package/dist/login-Bz0zEPoy.mjs +2 -0
  26. package/dist/{logs-BG11f5PR.mjs → logs-DbzD-QDf.mjs} +1 -1
  27. package/dist/{operator-cmd-BwAS2XZt.mjs → operator-cmd-CR6Lxzt0.mjs} +3 -3
  28. package/dist/{platform-auth-config-C-hv-_Ok.mjs → platform-auth-config-De7BqRJm.mjs} +2 -2
  29. package/dist/{platform-auth-protection-DjTE5Hj-.mjs → platform-auth-protection-Dcat-6zu.mjs} +2 -2
  30. package/dist/{platform-auth-recovery-Cr0r8TEb.mjs → platform-auth-recovery-C9gsM640.mjs} +2 -2
  31. package/dist/{platform-cmd-DE6dw45v.mjs → platform-cmd-Cl9Uhzru.mjs} +1 -1
  32. package/dist/{platform-cmd-0tEh2ZtA.mjs → platform-cmd-CudokNIg.mjs} +3 -3
  33. package/dist/{platform-domain-B_7x6Iqx.mjs → platform-domain-Ckpd2kXw.mjs} +2 -2
  34. package/dist/{platform-lifecycle-Di0LbhPM.mjs → platform-lifecycle-DVzM2T4j.mjs} +7 -7
  35. package/dist/{platform-lifecycle-Dhx9Pnub.mjs → platform-lifecycle-DlpiGcjr.mjs} +1 -1
  36. package/dist/{platform-management-B9LUtMt9.mjs → platform-management-44Bxd3YC.mjs} +1 -1
  37. package/dist/{platform-management-eaiaU3uM.mjs → platform-management-ibuS1as0.mjs} +1 -1
  38. package/dist/{platform-recovery-BxfA8E5C.mjs → platform-recovery-D_KmvdSk.mjs} +2 -2
  39. package/dist/{project-cmd-DrnRJdep.mjs → project-cmd-BuF9doku.mjs} +12 -12
  40. package/dist/{project-team-CzRbO_kA.mjs → project-team-B1Tia8vd.mjs} +2 -2
  41. package/dist/{requests-DwrqUQZ8.mjs → requests-CphRF98D.mjs} +1 -1
  42. package/dist/{rollback-B4tFWmkN.mjs → rollback-BYHJV2yD.mjs} +1 -1
  43. package/dist/{secret-UtrRjhEO.mjs → secret-Rt9c4Ttw.mjs} +1 -1
  44. package/package.json +7 -7
  45. package/skills/migrate-vite-cloudflare-to-void/SKILL.md +1 -1
  46. package/skills/void/SKILL.md +4 -2
  47. package/skills/void/docs/guide/platform/administration/access.md +1 -1
  48. package/skills/void/docs/guide/project-collaboration.md +1 -1
  49. package/skills/void/docs/reference/cli.md +25 -10
  50. package/skills/void/docs/reference/config.md +1 -1
  51. package/dist/help-B403BLBB.mjs +0 -2
  52. package/dist/login-BwiopVdg.mjs +0 -2
package/README.md CHANGED
@@ -11,7 +11,7 @@ for every command.
11
11
 
12
12
  Use `void platform config auth` to manage login methods and company signup.
13
13
  Cloudflare Access protection has separate create/connect controls. Users can
14
- link another enabled login to their account with `void auth link`.
14
+ link another enabled login to their account with `void account link`.
15
15
 
16
16
  ## What It Covers
17
17
 
@@ -57,7 +57,8 @@ export default defineConfig({
57
57
 
58
58
  - `voidPlugin()` — Vite integration, routing, pages mode, codegen, migrations, packaging
59
59
  - `void prepare` — generate `.void` artifacts for CI, editors, and fresh clones
60
- - `void auth login` — platform auth
60
+ - `void auth login` — sign in to the project's saved Cloudflare or Void destination
61
+ - `void account login` — platform auth
61
62
  - `void connect [url]` — choose Cloudflare or a Void platform, sign in, and save the deployment destination
62
63
  - `void platform *` — list, select, inspect, install, recover, repair, upgrade, disable, and safely uninstall a company platform
63
64
  - `void deploy` — build and deploy to the saved Cloudflare or Void target
@@ -1,13 +1,13 @@
1
1
  import { c as getToken, p as removeToken } from "./auth-B9_D6ygs.mjs";
2
2
  import { j as log } from "./dist-Dn6nn2IU.mjs";
3
3
  import { n as PlatformClient } from "./client-PdAJ-F0t.mjs";
4
- import { n as runLoginCommand } from "./login-jKe_0QZL.mjs";
4
+ import { n as runLoginCommand } from "./login-BgQJzxAl.mjs";
5
5
  import { execSync } from "node:child_process";
6
- //#region src/cli/auth-cmd.ts
7
- async function runAuthCommand(root, args) {
6
+ //#region src/cli/account-cmd.ts
7
+ async function runAccountCommand(root, args) {
8
8
  switch (args.subcommand) {
9
9
  case "login": return runLoginCommand(root);
10
- case "link": return import("./auth-link-DFvxIyZi.mjs").then(({ runAuthLink }) => runAuthLink(root, args.connectionId));
10
+ case "link": return import("./auth-link-BYFeMJAp.mjs").then(({ runAuthLink }) => runAuthLink(root, args.connectionId));
11
11
  case "logout":
12
12
  if (removeToken(root)) log.success("Logged out.");
13
13
  else log.info("Not logged in.");
@@ -15,7 +15,7 @@ async function runAuthCommand(root, args) {
15
15
  case "whoami": {
16
16
  const token = getToken(root);
17
17
  if (!token) {
18
- log.error("Not logged in. Run `void auth login` first.");
18
+ log.error("Not logged in. Run `void account login` first.");
19
19
  process.exit(1);
20
20
  }
21
21
  const user = await new PlatformClient(token, { root }).whoami();
@@ -26,7 +26,7 @@ async function runAuthCommand(root, args) {
26
26
  if (!getToken(root)) await runLoginCommand(root);
27
27
  const token = getToken(root);
28
28
  if (!token) {
29
- log.error("Login failed. Run `void auth login` to try again.");
29
+ log.error("Login failed. Run `void account login` to try again.");
30
30
  process.exit(1);
31
31
  }
32
32
  const platform = process.platform;
@@ -35,11 +35,11 @@ async function runAuthCommand(root, args) {
35
35
  execSync(cmd, { input: token });
36
36
  log.success("Token copied to clipboard.");
37
37
  } catch {
38
- log.warn("Could not copy to clipboard. Re-run `void login` to generate a new token.");
38
+ log.warn("Could not copy to clipboard. Run `void account token` again.");
39
39
  }
40
40
  return;
41
41
  }
42
42
  }
43
43
  }
44
44
  //#endregion
45
- export { runAuthCommand };
45
+ export { runAccountCommand };
@@ -1,13 +1,13 @@
1
1
  import { a as getApiUrl, c as getToken, d as openBrowser, g as savePlatformToken, h as runPlatformLogin } from "./auth-B9_D6ygs.mjs";
2
2
  import { j as log } from "./dist-Dn6nn2IU.mjs";
3
3
  import { n as PlatformClient } from "./client-PdAJ-F0t.mjs";
4
- import { r as selectPlatformLoginMethod } from "./login-jKe_0QZL.mjs";
5
- import { t as discoverPlatform } from "./platform-cmd-0tEh2ZtA.mjs";
4
+ import { r as selectPlatformLoginMethod } from "./login-BgQJzxAl.mjs";
5
+ import { t as discoverPlatform } from "./platform-cmd-CudokNIg.mjs";
6
6
  import { execFile } from "node:child_process";
7
7
  //#region src/cli/auth-link.ts
8
8
  async function runAuthLink(root, connectionId) {
9
9
  const token = getToken(root);
10
- if (!token) throw new Error("auth: Sign in to your existing account with `void auth login` first.");
10
+ if (!token) throw new Error("auth: Sign in to your existing account with `void account login` first.");
11
11
  const apiUrl = getApiUrl(root);
12
12
  const platform = await discoverPlatform(apiUrl);
13
13
  if (!platform.authentication) throw new Error("auth: This platform must be upgraded before linking login methods.");
@@ -0,0 +1,74 @@
1
+ import { o as listPlatformConnections } from "./platform-registry-BJbgZLS1.mjs";
2
+ import { i as readDeploymentPlatform } from "./project-CWNIPoXc.mjs";
3
+ import { I as select, W as isCancel } from "./dist-Dn6nn2IU.mjs";
4
+ //#region src/cli/auth-router.ts
5
+ async function chooseDestination(root, args, interactive) {
6
+ const saved = readDeploymentPlatform(root);
7
+ const platform = args.platform ?? (saved === "none" ? null : saved);
8
+ if (platform) return { platform };
9
+ if (!interactive) throw new Error("auth: No deployment destination is saved. Use `void auth login --platform cloudflare|void`, `void account login`, or `void cloudflare login`.");
10
+ const connections = listPlatformConnections();
11
+ const options = [
12
+ {
13
+ value: "cloudflare",
14
+ label: "Cloudflare",
15
+ hint: "Your own Cloudflare account"
16
+ },
17
+ ...connections.map((connection) => ({
18
+ value: connection.apiUrl,
19
+ label: connection.displayName,
20
+ hint: connection.apiUrl
21
+ })),
22
+ ...connections.length === 0 ? [{
23
+ value: "void",
24
+ label: "Void platform",
25
+ hint: "Use the current Void account origin"
26
+ }] : []
27
+ ];
28
+ const selected = await select({
29
+ message: "Where do you want to authenticate?",
30
+ options
31
+ });
32
+ if (isCancel(selected) || typeof selected !== "string") throw new Error("auth: Cancelled.");
33
+ return selected === "cloudflare" ? { platform: "cloudflare" } : {
34
+ platform: "void",
35
+ ...selected === "void" ? {} : { apiUrl: selected }
36
+ };
37
+ }
38
+ async function runAuthRouter(root, args, interactive = Boolean(process.stdin.isTTY)) {
39
+ if (args.subcommand === "link") {
40
+ const { runAccountCommand } = await import("./account-cmd-D8OC-U7y.mjs");
41
+ await runAccountCommand(root, {
42
+ subcommand: "link",
43
+ ...args.connectionId ? { connectionId: args.connectionId } : {}
44
+ });
45
+ return;
46
+ }
47
+ if (args.subcommand === "token") {
48
+ const { runAccountCommand } = await import("./account-cmd-D8OC-U7y.mjs");
49
+ await runAccountCommand(root, { subcommand: "token" });
50
+ return;
51
+ }
52
+ const destination = await chooseDestination(root, args, interactive);
53
+ if (destination.platform === "cloudflare") {
54
+ const { runCloudflareCommand } = await import("./cloudflare-cmd-D6PrKn7o.mjs");
55
+ await runCloudflareCommand(root, { subcommand: args.subcommand === "whoami" || args.subcommand === "status" ? "status" : args.subcommand });
56
+ return;
57
+ }
58
+ const { runAccountCommand } = await import("./account-cmd-D8OC-U7y.mjs");
59
+ const subcommand = args.subcommand === "status" ? "whoami" : args.subcommand;
60
+ if (!destination.apiUrl) {
61
+ await runAccountCommand(root, { subcommand });
62
+ return;
63
+ }
64
+ const previous = process.env.VOID_API_URL;
65
+ process.env.VOID_API_URL = destination.apiUrl;
66
+ try {
67
+ await runAccountCommand(root, { subcommand });
68
+ } finally {
69
+ if (previous === void 0) delete process.env.VOID_API_URL;
70
+ else process.env.VOID_API_URL = previous;
71
+ }
72
+ }
73
+ //#endregion
74
+ export { runAuthRouter };
@@ -65,7 +65,7 @@ async function runBuildLogsCommand(root, args) {
65
65
  intro(cliTitle("build logs"));
66
66
  const token = getToken(root);
67
67
  if (!token) {
68
- log.error("Not logged in. Run `void auth login` first.");
68
+ log.error("Not logged in. Run `void account login` first.");
69
69
  process.exit(1);
70
70
  }
71
71
  const client = new PlatformClient(token, { root });
@@ -10,7 +10,7 @@ async function runPurgeCacheCommand(root, projectSlug) {
10
10
  intro(cliTitle("project purge-cache"));
11
11
  const token = getToken(root);
12
12
  if (!token) {
13
- log.error("Not logged in. Run `void auth login` first.");
13
+ log.error("Not logged in. Run `void account login` first.");
14
14
  process.exit(1);
15
15
  }
16
16
  const requestedSlug = getRequestedProjectSlug({ projectSlug });
@@ -15,7 +15,7 @@ async function runCancelDeployCommand(root, deployId) {
15
15
  intro(cliTitle("project cancel"));
16
16
  const token = getToken(root);
17
17
  if (!token) {
18
- log.error("Not logged in. Run `void auth login` first.");
18
+ log.error("Not logged in. Run `void account login` first.");
19
19
  process.exit(1);
20
20
  }
21
21
  const linked = readProjectConfig(root);
package/dist/cli/cli.mjs CHANGED
@@ -3,11 +3,53 @@ import { a as join } from "../dist-4WkAWhWx.mjs";
3
3
  import { j as log } from "../dist-Dn6nn2IU.mjs";
4
4
  import { n as getPackageDir } from "../agents-gni4eqBu.mjs";
5
5
  import { t as formatCloudflareUserMessage } from "../cloudflare-user-output-Q-k0QoNQ.mjs";
6
- import { a as operatorGroups, i as printVoidHeader, n as printGlobalHelp, o as parseOperatorArgs, r as printHelpPage, t as getHelpPath } from "../help-sBhFH6pi.mjs";
6
+ import { a as operatorGroups, i as printVoidHeader, n as printGlobalHelp, o as parseOperatorArgs, r as printHelpPage, t as getHelpPath } from "../help-iQOt7WHk.mjs";
7
7
  import { r as OperatorClientError } from "../operator-client-A0iex2yi.mjs";
8
8
  import { readFileSync } from "node:fs";
9
9
  import { PLATFORM_LOGIN_KINDS, parsePlatformLoginId } from "@void/platform";
10
10
  import { parseArgs } from "node:util";
11
+ //#region src/cli/account-args.ts
12
+ const accountSubcommands = [
13
+ {
14
+ name: "login",
15
+ description: "Log in with an enabled platform login method"
16
+ },
17
+ {
18
+ name: "link",
19
+ description: "Link another login method to your account"
20
+ },
21
+ {
22
+ name: "logout",
23
+ description: "Log out and remove credentials"
24
+ },
25
+ {
26
+ name: "whoami",
27
+ description: "Show the logged-in username"
28
+ },
29
+ {
30
+ name: "token",
31
+ description: "Copy auth token to clipboard"
32
+ }
33
+ ];
34
+ function parseAccountArgs(args) {
35
+ const [subcommand, extra, trailing] = args;
36
+ if (subcommand === "link") {
37
+ if (trailing || extra !== void 0 && !/^[a-z][a-z0-9_-]{0,63}$/.test(extra)) throw new Error("account: Usage: void account link [connection-id].");
38
+ return {
39
+ subcommand,
40
+ ...extra ? { connectionId: extra } : {}
41
+ };
42
+ }
43
+ if (!subcommand || ![
44
+ "login",
45
+ "logout",
46
+ "whoami",
47
+ "token"
48
+ ].includes(subcommand)) throw new Error("account: Usage: void account <login|link|logout|whoami|token>.");
49
+ if (extra) throw new Error(`account: Unexpected argument '${extra}'.`);
50
+ return { subcommand };
51
+ }
52
+ //#endregion
11
53
  //#region src/cli/args.ts
12
54
  function parseDeployArgs(args) {
13
55
  let parsed;
@@ -86,42 +128,45 @@ function parseDeployArgs(args) {
86
128
  const authSubcommands = [
87
129
  {
88
130
  name: "login",
89
- description: "Log in with an enabled platform login method"
131
+ description: "Sign in to the selected deployment destination"
90
132
  },
91
133
  {
92
- name: "link",
93
- description: "Link another login method to your account"
134
+ name: "status",
135
+ description: "Show the selected destination’s signed-in identity"
94
136
  },
95
137
  {
96
138
  name: "logout",
97
- description: "Log out and remove credentials"
98
- },
99
- {
100
- name: "whoami",
101
- description: "Show the logged-in username"
102
- },
103
- {
104
- name: "token",
105
- description: "Copy auth token to clipboard"
139
+ description: "Sign out of the selected deployment destination"
106
140
  }
107
141
  ];
108
142
  function parseAuthArgs(args) {
109
- const [subcommand, extra, trailing] = args;
110
- if (subcommand === "link") {
111
- if (trailing || extra !== void 0 && !/^[a-z][a-z0-9_-]{0,63}$/.test(extra)) throw new Error("auth: Usage: void auth link [connection-id].");
112
- return {
113
- subcommand,
114
- ...extra ? { connectionId: extra } : {}
115
- };
116
- }
143
+ const [subcommand, ...rest] = args;
117
144
  if (!subcommand || ![
118
145
  "login",
119
146
  "logout",
147
+ "status",
120
148
  "whoami",
149
+ "link",
121
150
  "token"
122
- ].includes(subcommand)) throw new Error("auth: Usage: void auth <login|link|logout|whoami|token>.");
123
- if (extra) throw new Error(`auth: Unexpected argument '${extra}'.`);
124
- return { subcommand };
151
+ ].includes(subcommand)) throw new Error("auth: Usage: void auth <login|status|logout> [--platform cloudflare|void].");
152
+ let platform;
153
+ let connectionId;
154
+ for (let index = 0; index < rest.length; index++) {
155
+ const value = rest[index];
156
+ if (value === "--platform") {
157
+ const target = rest[++index];
158
+ if (target !== "cloudflare" && target !== "void") throw new Error("auth: --platform must be cloudflare or void.");
159
+ if (platform) throw new Error("auth: --platform may be supplied only once.");
160
+ platform = target;
161
+ } else if (subcommand === "link" && !connectionId && /^[a-z][a-z0-9_-]{0,63}$/.test(value)) connectionId = value;
162
+ else throw new Error(`auth: Unexpected argument '${value}'.`);
163
+ }
164
+ if ((subcommand === "link" || subcommand === "token") && platform === "cloudflare") throw new Error(`auth: ${subcommand} belongs to a Void account. Use \`void account ${subcommand}\`.`);
165
+ return {
166
+ subcommand,
167
+ ...platform ? { platform } : {},
168
+ ...connectionId ? { connectionId } : {}
169
+ };
125
170
  }
126
171
  //#endregion
127
172
  //#region src/cli/build-args.ts
@@ -1972,7 +2017,7 @@ if (helpPath) {
1972
2017
  log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
1973
2018
  process.exit(1);
1974
2019
  }
1975
- import("../deploy-DAH2-m_-.mjs").then(({ runDeploy }) => {
2020
+ import("../deploy-CsjbRNyv.mjs").then(({ runDeploy }) => {
1976
2021
  runDeploy(root, {
1977
2022
  projectSlug: deployArgs.projectSlug,
1978
2023
  dir: deployArgs.dir,
@@ -1990,24 +2035,25 @@ if (helpPath) {
1990
2035
  });
1991
2036
  } else if (command === "connect") (async () => {
1992
2037
  const parsed = parseConnectArgs(args.slice(1));
1993
- const { runConnectCommand } = await import("../connect-LnvW4HKx.mjs");
2038
+ const { runConnectCommand } = await import("../connect-DLx1pRYk.mjs");
1994
2039
  await runConnectCommand(process.cwd(), parsed);
1995
2040
  })().catch((err) => {
1996
2041
  log.error(formatCloudflareUserMessage(err instanceof Error ? err.message : String(err)));
1997
2042
  process.exit(1);
1998
2043
  });
1999
- else if (command === "auth") runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (root, parsed) => import("../auth-cmd-g_ymMkUe.mjs").then(({ runAuthCommand }) => runAuthCommand(root, parsed)));
2000
- else if (command === "platform") runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (root, parsed) => import("../platform-cmd-DE6dw45v.mjs").then(({ runPlatformCommand }) => runPlatformCommand(root, parsed)));
2044
+ else if (command === "auth") runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (root, parsed) => import("../auth-router-OHZNmrb_.mjs").then(({ runAuthRouter }) => runAuthRouter(root, parsed)));
2045
+ else if (command === "account") runSubcommandGroup("account", accountSubcommands, parseAccountArgs, (root, parsed) => import("../account-cmd-D8OC-U7y.mjs").then(({ runAccountCommand }) => runAccountCommand(root, parsed)));
2046
+ else if (command === "platform") runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (root, parsed) => import("../platform-cmd-Cl9Uhzru.mjs").then(({ runPlatformCommand }) => runPlatformCommand(root, parsed)));
2001
2047
  else if (command === "cloudflare") runSubcommandGroup("cloudflare", cloudflareSubcommands, parseCloudflareArgs, (root, parsed) => import("../cloudflare-cmd-D6PrKn7o.mjs").then(({ runCloudflareCommand }) => runCloudflareCommand(root, parsed)));
2002
- else if (command === "project") runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (root, parsed) => import("../project-cmd-DrnRJdep.mjs").then(({ runProjectCommand }) => runProjectCommand(root, parsed)));
2003
- else if (command === "secret") runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (root, parsed) => import("../secret-UtrRjhEO.mjs").then(({ runSecretCommand }) => runSecretCommand(root, parsed)));
2004
- else if (command === "domain") runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (root, parsed) => import("../domain-BA37Ye7T.mjs").then(({ runDomainCommand }) => runDomainCommand(root, parsed)));
2005
- else if (command === "email") runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (root, parsed) => import("../email-C5NsxrQG.mjs").then(({ runEmailCommand }) => runEmailCommand(root, parsed)));
2006
- else if (command === "db") runSubcommandGroup("db", dbSubcommands, parseDbArgs, (root, parsed) => import("../db-Mzv88E1C.mjs").then(({ runDbCommand }) => runDbCommand(root, parsed)));
2007
- else if (command === "env") runSubcommandGroup("env", envSubcommands, parseEnvArgs, (root, parsed) => import("../env-U_ohASB0.mjs").then(({ runEnvCommand }) => runEnvCommand(root, parsed)));
2048
+ else if (command === "project") runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (root, parsed) => import("../project-cmd-BuF9doku.mjs").then(({ runProjectCommand }) => runProjectCommand(root, parsed)));
2049
+ else if (command === "secret") runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (root, parsed) => import("../secret-Rt9c4Ttw.mjs").then(({ runSecretCommand }) => runSecretCommand(root, parsed)));
2050
+ else if (command === "domain") runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (root, parsed) => import("../domain-Av2AkLQP.mjs").then(({ runDomainCommand }) => runDomainCommand(root, parsed)));
2051
+ else if (command === "email") runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (root, parsed) => import("../email-CUqa6TtH.mjs").then(({ runEmailCommand }) => runEmailCommand(root, parsed)));
2052
+ else if (command === "db") runSubcommandGroup("db", dbSubcommands, parseDbArgs, (root, parsed) => import("../db-B98_UV4H.mjs").then(({ runDbCommand }) => runDbCommand(root, parsed)));
2053
+ else if (command === "env") runSubcommandGroup("env", envSubcommands, parseEnvArgs, (root, parsed) => import("../env-D4RIGEzz.mjs").then(({ runEnvCommand }) => runEnvCommand(root, parsed)));
2008
2054
  else if (command === "gen") runSubcommandGroup("gen", genSubcommands, parseGenArgs, (root, parsed) => import("../gen-B87rlalt.mjs").then(({ runGenCommand }) => runGenCommand(root, parsed)));
2009
- else if (command === "github") runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (root, parsed) => import("../github-cmd-DsrkweIl.mjs").then(({ runGithubCommand }) => runGithubCommand(root, parsed)));
2010
- else if (command === "build") runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (root, parsed) => import("../build-cmd-wJAv808h.mjs").then(({ runBuildCommand }) => runBuildCommand(root, parsed)));
2055
+ else if (command === "github") runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (root, parsed) => import("../github-cmd-BEK4VprE.mjs").then(({ runGithubCommand }) => runGithubCommand(root, parsed)));
2056
+ else if (command === "build") runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (root, parsed) => import("../build-cmd-Bft7EY51.mjs").then(({ runBuildCommand }) => runBuildCommand(root, parsed)));
2011
2057
  else if (command === "prepare") {
2012
2058
  const root = process.cwd();
2013
2059
  let prepareArgs;
@@ -2025,7 +2071,7 @@ else if (command === "prepare") {
2025
2071
  });
2026
2072
  } else if (command === "init") {
2027
2073
  const root = process.cwd();
2028
- import("../init-C--Yyj1b.mjs").then(({ runInitCommand, parseInitArgs }) => {
2074
+ import("../init-D5niUPAz.mjs").then(({ runInitCommand, parseInitArgs }) => {
2029
2075
  let initArgs;
2030
2076
  try {
2031
2077
  initArgs = parseInitArgs(args.slice(1));
@@ -2076,8 +2122,13 @@ else if (command === "prepare") {
2076
2122
  },
2077
2123
  {
2078
2124
  name: "auth",
2079
- hint: "login | logout | whoami | token",
2080
- description: "Login, account linking, logout, and token management"
2125
+ hint: "login | status | logout",
2126
+ description: "Sign in to this project’s Cloudflare or Void destination"
2127
+ },
2128
+ {
2129
+ name: "account",
2130
+ hint: "login | link | logout | whoami | token",
2131
+ description: "Manage your Void platform account"
2081
2132
  },
2082
2133
  {
2083
2134
  name: "platform",
@@ -2152,12 +2203,12 @@ else if (command === "prepare") {
2152
2203
  const root = process.cwd();
2153
2204
  switch (cmd) {
2154
2205
  case "connect": {
2155
- const { runConnectCommand } = await import("../connect-LnvW4HKx.mjs");
2206
+ const { runConnectCommand } = await import("../connect-DLx1pRYk.mjs");
2156
2207
  await runConnectCommand(root, parseConnectArgs([]));
2157
2208
  return;
2158
2209
  }
2159
2210
  case "init": {
2160
- const { runInitCommand, parseInitArgs } = await import("../init-C--Yyj1b.mjs");
2211
+ const { runInitCommand, parseInitArgs } = await import("../init-D5niUPAz.mjs");
2161
2212
  await runInitCommand(root, parseInitArgs([]));
2162
2213
  return;
2163
2214
  }
@@ -2167,21 +2218,22 @@ else if (command === "prepare") {
2167
2218
  return;
2168
2219
  }
2169
2220
  case "deploy": {
2170
- const { runDeploy } = await import("../deploy-DAH2-m_-.mjs");
2221
+ const { runDeploy } = await import("../deploy-CsjbRNyv.mjs");
2171
2222
  await runDeploy(root);
2172
2223
  return;
2173
2224
  }
2174
- case "auth": return runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (r, p) => import("../auth-cmd-g_ymMkUe.mjs").then(({ runAuthCommand }) => runAuthCommand(r, p)));
2175
- case "platform": return runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (r, p) => import("../platform-cmd-DE6dw45v.mjs").then(({ runPlatformCommand }) => runPlatformCommand(r, p)));
2225
+ case "auth": return runSubcommandGroup("auth", authSubcommands, parseAuthArgs, (r, p) => import("../auth-router-OHZNmrb_.mjs").then(({ runAuthRouter }) => runAuthRouter(r, p)));
2226
+ case "account": return runSubcommandGroup("account", accountSubcommands, parseAccountArgs, (r, p) => import("../account-cmd-D8OC-U7y.mjs").then(({ runAccountCommand }) => runAccountCommand(r, p)));
2227
+ case "platform": return runSubcommandGroup("platform", platformSubcommands, parsePlatformArgs, (r, p) => import("../platform-cmd-Cl9Uhzru.mjs").then(({ runPlatformCommand }) => runPlatformCommand(r, p)));
2176
2228
  case "cloudflare": return runSubcommandGroup("cloudflare", cloudflareSubcommands, parseCloudflareArgs, (r, p) => import("../cloudflare-cmd-D6PrKn7o.mjs").then(({ runCloudflareCommand }) => runCloudflareCommand(r, p)));
2177
- case "project": return runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (r, p) => import("../project-cmd-DrnRJdep.mjs").then(({ runProjectCommand }) => runProjectCommand(r, p)));
2178
- case "secret": return runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (r, p) => import("../secret-UtrRjhEO.mjs").then(({ runSecretCommand }) => runSecretCommand(r, p)));
2179
- case "domain": return runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (r, p) => import("../domain-BA37Ye7T.mjs").then(({ runDomainCommand }) => runDomainCommand(r, p)));
2180
- case "github": return runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (r, p) => import("../github-cmd-DsrkweIl.mjs").then(({ runGithubCommand }) => runGithubCommand(r, p)));
2181
- case "build": return runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (r, p) => import("../build-cmd-wJAv808h.mjs").then(({ runBuildCommand }) => runBuildCommand(r, p)));
2182
- case "email": return runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (r, p) => import("../email-C5NsxrQG.mjs").then(({ runEmailCommand }) => runEmailCommand(r, p)));
2183
- case "db": return runSubcommandGroup("db", dbSubcommands, parseDbArgs, (r, p) => import("../db-Mzv88E1C.mjs").then(({ runDbCommand }) => runDbCommand(r, p)));
2184
- case "env": return runSubcommandGroup("env", envSubcommands, parseEnvArgs, (r, p) => import("../env-U_ohASB0.mjs").then(({ runEnvCommand }) => runEnvCommand(r, p)));
2229
+ case "project": return runSubcommandGroup("project", projectSubcommands, parseProjectArgs, (r, p) => import("../project-cmd-BuF9doku.mjs").then(({ runProjectCommand }) => runProjectCommand(r, p)));
2230
+ case "secret": return runSubcommandGroup("secret", secretSubcommands, parseSecretArgs, (r, p) => import("../secret-Rt9c4Ttw.mjs").then(({ runSecretCommand }) => runSecretCommand(r, p)));
2231
+ case "domain": return runSubcommandGroup("domain", domainSubcommands, parseDomainArgs, (r, p) => import("../domain-Av2AkLQP.mjs").then(({ runDomainCommand }) => runDomainCommand(r, p)));
2232
+ case "github": return runSubcommandGroup("github", githubSubcommands, parseGithubArgs, (r, p) => import("../github-cmd-BEK4VprE.mjs").then(({ runGithubCommand }) => runGithubCommand(r, p)));
2233
+ case "build": return runSubcommandGroup("build", buildSubcommands, parseBuildArgs, (r, p) => import("../build-cmd-Bft7EY51.mjs").then(({ runBuildCommand }) => runBuildCommand(r, p)));
2234
+ case "email": return runSubcommandGroup("email", emailSubcommands, parseEmailArgs, (r, p) => import("../email-CUqa6TtH.mjs").then(({ runEmailCommand }) => runEmailCommand(r, p)));
2235
+ case "db": return runSubcommandGroup("db", dbSubcommands, parseDbArgs, (r, p) => import("../db-B98_UV4H.mjs").then(({ runDbCommand }) => runDbCommand(r, p)));
2236
+ case "env": return runSubcommandGroup("env", envSubcommands, parseEnvArgs, (r, p) => import("../env-D4RIGEzz.mjs").then(({ runEnvCommand }) => runEnvCommand(r, p)));
2185
2237
  case "gen": return runSubcommandGroup("gen", genSubcommands, parseGenArgs, (r, p) => import("../gen-B87rlalt.mjs").then(({ runGenCommand }) => runGenCommand(r, p)));
2186
2238
  case "prepare": {
2187
2239
  const { runPrepareCommand } = await import("../prepare-_T-Haxrr.mjs");
@@ -3,8 +3,8 @@ import { o as listPlatformConnections, s as normalizePlatformApiUrl } from "./pl
3
3
  import { i as readDeploymentPlatform, l as writeDeploymentPlatform, u as writePlatformSelection } from "./project-CWNIPoXc.mjs";
4
4
  import { I as select, W as isCancel, j as log } from "./dist-Dn6nn2IU.mjs";
5
5
  import { i as isExpiredTokenError, n as PlatformClient } from "./client-PdAJ-F0t.mjs";
6
- import { t as promptForLoginToken } from "./login-jKe_0QZL.mjs";
7
- import { i as saveDiscoveredPlatform, n as promptPlatformUrl, t as discoverPlatform } from "./platform-cmd-0tEh2ZtA.mjs";
6
+ import { t as promptForLoginToken } from "./login-BgQJzxAl.mjs";
7
+ import { i as saveDiscoveredPlatform, n as promptPlatformUrl, t as discoverPlatform } from "./platform-cmd-CudokNIg.mjs";
8
8
  import { t as connectCloudflare } from "./cloudflare-connect-DloREDlc.mjs";
9
9
  //#region src/cli/connect.ts
10
10
  async function selectVoidPlatform(interactive) {
@@ -74,7 +74,7 @@ async function runConnectCommand(root, args, interactive = Boolean(process.stdin
74
74
  const selected = Boolean(envUrl && normalizePlatformApiUrl(envUrl) !== discovery.apiUrl || process.env.VOID_TOKEN && !envUrl) ? false : writePlatformSelection(root, discovery);
75
75
  log.success(`Connected to ${discovery.displayName} at ${discovery.apiUrl}.`);
76
76
  if (!selected) log.info("Saved the connection. The current project link or environment still selects its existing destination.");
77
- if (args.noLogin) log.info("Connection saved without login. Run `void auth login` in a project using this platform when ready.");
77
+ if (args.noLogin) log.info("Connection saved without login. Run `void account login` in a project using this platform when ready.");
78
78
  else if (selected) log.info("Run `void project link` to select a project, then `void deploy`.");
79
79
  }
80
80
  //#endregion
@@ -622,7 +622,7 @@ async function runExecute(root, command, file, dialect, remote) {
622
622
  }
623
623
  const token = getToken(root);
624
624
  if (!token) {
625
- log.error("Not logged in. Run `void auth login` first.");
625
+ log.error("Not logged in. Run `void account login` first.");
626
626
  process.exit(1);
627
627
  }
628
628
  const projectConfig = readProjectConfig(root);
@@ -826,7 +826,7 @@ async function runMigrate(root, dialect, remote) {
826
826
  log.error(getErrorMessage(error));
827
827
  process.exit(1);
828
828
  }
829
- const { checkWranglerMigrationApplySet, parseRootWranglerConfig } = await import("./deploy-DAH2-m_-.mjs");
829
+ const { checkWranglerMigrationApplySet, parseRootWranglerConfig } = await import("./deploy-CsjbRNyv.mjs");
830
830
  const applySet = await checkWranglerMigrationApplySet(context.operation.configPath, parseRootWranglerConfig(context.operation.configPath), binding, context.migrationsDir, rawMigrations);
831
831
  if (!applySet.ok) {
832
832
  log.error(applySet.reason);
@@ -846,7 +846,7 @@ async function runMigrate(root, dialect, remote) {
846
846
  }
847
847
  const token = getToken(root);
848
848
  if (!token) {
849
- log.error("Not logged in. Run `void auth login` first.");
849
+ log.error("Not logged in. Run `void account login` first.");
850
850
  process.exit(1);
851
851
  }
852
852
  const config = readProjectConfig(root);
@@ -978,7 +978,7 @@ async function runStudio(root, dialect, remote) {
978
978
  } else {
979
979
  const token = getToken(root);
980
980
  if (!token) {
981
- log.error("Not logged in. Run `void auth login` first.");
981
+ log.error("Not logged in. Run `void account login` first.");
982
982
  process.exit(1);
983
983
  }
984
984
  const projectConfig = readProjectConfig(root);
@@ -1109,7 +1109,7 @@ async function runRenameMigrations(root, dialect) {
1109
1109
  const config = readProjectConfig(root);
1110
1110
  let remoteRenamed = false;
1111
1111
  if (config && !token) {
1112
- log.error("Project is linked but you are not logged in.\nRun `void auth login` first so remote migration records can be updated.");
1112
+ log.error("Project is linked but you are not logged in.\nRun `void account login` first so remote migration records can be updated.");
1113
1113
  process.exit(1);
1114
1114
  }
1115
1115
  if (token && config) try {
@@ -1448,7 +1448,7 @@ async function runSetUrl(root) {
1448
1448
  }
1449
1449
  const token = getToken(root);
1450
1450
  if (!token) {
1451
- log.error("No auth token found. Run `void auth login` first.");
1451
+ log.error("No auth token found. Run `void account login` first.");
1452
1452
  process.exit(1);
1453
1453
  }
1454
1454
  const projectConfig = readProjectConfig(root);
@@ -10,7 +10,7 @@ async function runDeleteCommand(root, slug, options) {
10
10
  intro(cliTitle("delete"));
11
11
  const token = getToken(root);
12
12
  if (!token) {
13
- log.error("Not logged in. Run `void auth login` first.");
13
+ log.error("Not logged in. Run `void account login` first.");
14
14
  process.exit(1);
15
15
  }
16
16
  const client = new PlatformClient(token, { root });
@@ -42,7 +42,7 @@ import { t as formatCloudflareUserMessage } from "./cloudflare-user-output-Q-k0Q
42
42
  import { a as promptProjectSetupAction, i as promptProjectSelection, r as promptAndCreateProject } from "./create-project-BZBl_gQ0.mjs";
43
43
  import { r as resolveProjectBySlug, t as getRequestedProjectSlug } from "./resolve-project-Xvis70DG.mjs";
44
44
  import { t as collectGitDeployMetadata } from "./git-metadata-D-gurjzG.mjs";
45
- import { t as promptForLoginToken } from "./login-jKe_0QZL.mjs";
45
+ import { t as promptForLoginToken } from "./login-BgQJzxAl.mjs";
46
46
  import { createRequire } from "node:module";
47
47
  import { copyFileSync, cpSync, createWriteStream, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
48
48
  import { fileURLToPath } from "node:url";
@@ -7855,7 +7855,7 @@ async function runManagedDeploy(root, options, cliLog) {
7855
7855
  }
7856
7856
  token ??= getToken(root);
7857
7857
  if (!token) {
7858
- log.error("No auth token found. Run `void auth login` first.");
7858
+ log.error("No auth token found. Run `void account login` first.");
7859
7859
  process.exit(1);
7860
7860
  }
7861
7861
  const client = new PlatformClient(token, {
@@ -7942,7 +7942,7 @@ async function runManagedDeploy(root, options, cliLog) {
7942
7942
  } catch (error) {
7943
7943
  if (isExpiredTokenError(error)) {
7944
7944
  if (getTokenSource() === "ci") throw new Error("`VOID_TOKEN` is invalid or expired. Generate a new token and try again.");
7945
- if (!process.stdin.isTTY || reauthenticated) throw new Error("Auth token expired. Run `void auth login` and try again.");
7945
+ if (!process.stdin.isTTY || reauthenticated) throw new Error("Auth token expired. Run `void account login` and try again.");
7946
7946
  log.warn("Auth token expired. Re-authenticating...");
7947
7947
  await promptForLoginToken(root);
7948
7948
  log.success("Re-authenticated. Retrying deploy...");
@@ -1,2 +1,2 @@
1
- import { A as parseRootWranglerConfig, f as checkWranglerMigrationApplySet, q as runDeploy } from "./deploy-DEsMVrCY.mjs";
1
+ import { A as parseRootWranglerConfig, f as checkWranglerMigrationApplySet, q as runDeploy } from "./deploy-Bsymb0_c.mjs";
2
2
  export { checkWranglerMigrationApplySet, parseRootWranglerConfig, runDeploy };
@@ -10,7 +10,7 @@ async function runDomainCommand(root, args) {
10
10
  if (platform === "none") throw new Error("domain: Deployment is disabled. Run `void init` to choose a platform.");
11
11
  const token = getToken(root);
12
12
  if (!token) {
13
- log.error("Not logged in. Run `void auth login` first.");
13
+ log.error("Not logged in. Run `void account login` first.");
14
14
  process.exit(1);
15
15
  }
16
16
  const client = new PlatformClient(token, { root });
@@ -1,6 +1,6 @@
1
1
  import { a as join } from "./dist-4WkAWhWx.mjs";
2
2
  import { c as import_picocolors, i as createSpinner } from "./output-CCH48AMM.mjs";
3
- import { I as resolveDeployTransport, O as isWranglerNonInteractiveOrCI, Y as runWranglerAuthToken, _ as deriveWorkerName, _t as preflightEmail, gt as findEmailConfigConflicts, h as createDeployWranglerRunner, ht as createNodeEmailDns, k as loadProvisionModule, mt as applyEmailSetup, v as discoverRootWranglerConfig, vt as renderAddressMap, yt as renderEmailChecklist } from "./deploy-DEsMVrCY.mjs";
3
+ import { I as resolveDeployTransport, O as isWranglerNonInteractiveOrCI, Y as runWranglerAuthToken, _ as deriveWorkerName, _t as preflightEmail, gt as findEmailConfigConflicts, h as createDeployWranglerRunner, ht as createNodeEmailDns, k as loadProvisionModule, mt as applyEmailSetup, v as discoverRootWranglerConfig, vt as renderAddressMap, yt as renderEmailChecklist } from "./deploy-Bsymb0_c.mjs";
4
4
  import { n as readProjectPaths } from "./project-paths-CKQ-Q5JS.mjs";
5
5
  import { c as getToken, d as openBrowser } from "./auth-B9_D6ygs.mjs";
6
6
  import { o as readProjectConfig } from "./project-CWNIPoXc.mjs";
@@ -26,7 +26,7 @@ async function runEmailCommand(root, args) {
26
26
  }
27
27
  const token = getToken(root);
28
28
  if (!token) {
29
- log.error("Not logged in. Run `void auth login` first.");
29
+ log.error("Not logged in. Run `void account login` first.");
30
30
  process.exit(1);
31
31
  }
32
32
  const client = new PlatformClient(token, { root });
@@ -31,7 +31,7 @@ async function runCheck(root, useRemoteSecrets) {
31
31
  } else {
32
32
  const token = getToken(root);
33
33
  if (!token) {
34
- log.error("--remote requires authentication. Run `void auth login` first.");
34
+ log.error("--remote requires authentication. Run `void account login` first.");
35
35
  process.exit(1);
36
36
  }
37
37
  const config = readProjectConfig(root);
@@ -102,7 +102,7 @@ function formatConnection(connection) {
102
102
  async function runGithubCommand(root, args) {
103
103
  const token = getToken(root);
104
104
  if (!token) {
105
- log.error("Not logged in. Run `void auth login` first.");
105
+ log.error("Not logged in. Run `void account login` first.");
106
106
  process.exit(1);
107
107
  }
108
108
  const client = new PlatformClient(token, { root });
@@ -122,7 +122,7 @@ async function runGithubCommand(root, args) {
122
122
  *
123
123
  * If the account has no linked GitHub identity, the server returns a 403 with
124
124
  * the stable code `github_identity_required` (Task 3). Rather than telling the
125
- * user to `void auth login` (which risks forking into a second account), we run
125
+ * user to `void account login` (which risks forking into a second account), we run
126
126
  * the link flow inline and retry the install URL exactly once.
127
127
  *
128
128
  * `linkIdentity` is injectable so tests can supply a fake linker instead of
@@ -155,7 +155,7 @@ async function runInstall(root, client, linkIdentity = runGithubLink) {
155
155
  /**
156
156
  * Link the current Void account (the logged-in CLI token holder) to a GitHub
157
157
  * identity. Drives the platform's 3-endpoint link flow with a localhost +
158
- * PKCE handshake, mirroring `void auth login`.
158
+ * PKCE handshake, mirroring `void account login`.
159
159
  *
160
160
  * Exported so Task 5 can call it (e.g. when `github install` returns 403 for a
161
161
  * GitHub-less account, prompt to link and retry). The success path is