void 0.26.1 → 0.27.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 (78) hide show
  1. package/dist/{account-cmd-CfUXh_nU.mjs → account-cmd-l-FM7Ioq.mjs} +4 -4
  2. package/dist/{auth-B5_tZLxT.mjs → auth-Dn2vw-SG.mjs} +3 -3
  3. package/dist/{auth-BgX2qYSY.mjs → auth-LMJcNESe.mjs} +1 -1
  4. package/dist/{auth-link-D5RmKnzh.mjs → auth-link-vz9Z2kmG.mjs} +4 -4
  5. package/dist/{auth-router-Bap-pvbn.mjs → auth-router-DvsCUVw4.mjs} +3 -3
  6. package/dist/{build-cmd-B58c8iS8.mjs → build-cmd-D6we0VjO.mjs} +3 -3
  7. package/dist/{cache-Bo52trKF.mjs → cache-CZRdzKx1.mjs} +3 -3
  8. package/dist/{cancel-deploy-BZNz3Q26.mjs → cancel-deploy-CQ3NnMvf.mjs} +3 -3
  9. package/dist/{cf-access-ngGqZpHZ.mjs → cf-access-BcIBSKqG.mjs} +1 -1
  10. package/dist/cf-user-agent-lKblH3zU.mjs +17 -0
  11. package/dist/cli/cli.mjs +20 -20
  12. package/dist/cli/cloudflare-operation-process.mjs +7 -1
  13. package/dist/{client-C2Prx_Bi.mjs → client-DlDJuY0s.mjs} +5 -5
  14. package/dist/client-tso2OfcG.mjs +2 -0
  15. package/dist/{connect-X0MUA1gk.mjs → connect-BfPBHHm-.mjs} +6 -6
  16. package/dist/{create-project-DxiyW6iX.mjs → create-project-BdXEFKal.mjs} +3 -3
  17. package/dist/{create-project-iwkbqiBU.mjs → create-project-qFDC45zg.mjs} +1 -1
  18. package/dist/{db-XnVMHzoV.mjs → db-Xs80hcaA.mjs} +5 -5
  19. package/dist/{delete-esYlMiSJ.mjs → delete-d2vuou3j.mjs} +3 -3
  20. package/dist/{deploy-BsEvnlJl.mjs → deploy-Bqe1PYBw.mjs} +10 -7
  21. package/dist/{deploy-C1d-YTfp.mjs → deploy-VsWsVQkw.mjs} +1 -1
  22. package/dist/{domain-CbbBWhWE.mjs → domain-BsDUBAvt.mjs} +3 -3
  23. package/dist/{email-CpuT42g7.mjs → email-_lGAHOhp.mjs} +4 -4
  24. package/dist/{env-w9jOyGZn.mjs → env-C74QepDE.mjs} +3 -3
  25. package/dist/{github-cmd-D_FsOFxq.mjs → github-cmd-DaDdBbSS.mjs} +3 -3
  26. package/dist/{help-CVFBTmBx.mjs → help-0bTe_lID.mjs} +1 -1
  27. package/dist/help-DfQYVfGY.mjs +2 -0
  28. package/dist/index.mjs +7 -7
  29. package/dist/{init-Bw-fRKGp.mjs → init-DaBGmaXC.mjs} +8 -8
  30. package/dist/{link-DlPG8iX3.mjs → link-C6fjafep.mjs} +4 -4
  31. package/dist/{list-2GN7_ueV.mjs → list-BTFBlqKl.mjs} +3 -3
  32. package/dist/{login-D-Q4xw3Q.mjs → login-GKcNUmtI.mjs} +3 -3
  33. package/dist/login-mx_ydhmp.mjs +2 -0
  34. package/dist/{logs-rd8J-OFh.mjs → logs-BiMSULmc.mjs} +3 -3
  35. package/dist/{operator-args-BNsW5gfp.mjs → operator-args-DOBhIaIg.mjs} +1 -1
  36. package/dist/{operator-auth-AzVLbrr3.mjs → operator-auth-BEZ_u0Cz.mjs} +2 -2
  37. package/dist/{operator-client-BQtzyG-g.mjs → operator-client-DbDv4vtE.mjs} +2 -2
  38. package/dist/{operator-cmd-B6f6Cg9Z.mjs → operator-cmd-BT4hgavL.mjs} +6 -6
  39. package/dist/operator-cmd-CwBB-1yb.mjs +2 -0
  40. package/dist/platform-args-D4E1PjVw.mjs +2 -0
  41. package/dist/{platform-args-BoZkWQnJ.mjs → platform-args-DUeXY9Om.mjs} +1 -1
  42. package/dist/{platform-auth-config-n603OANg.mjs → platform-auth-config-CkSx3usH.mjs} +7 -7
  43. package/dist/{platform-auth-protection-zxDr0hWW.mjs → platform-auth-protection-BJimB_p9.mjs} +6 -6
  44. package/dist/{platform-auth-recovery-tw9lgtgE.mjs → platform-auth-recovery-BU6izFAU.mjs} +5 -5
  45. package/dist/{platform-cmd-B8-bCb7t.mjs → platform-cmd-BbY1dWiM.mjs} +10 -9
  46. package/dist/{platform-cmd-C00YM14r.mjs → platform-cmd-BbmJiq5O.mjs} +1 -1
  47. package/dist/{platform-discovery-BC0HCKYt.mjs → platform-discovery-DIYz8V63.mjs} +1 -1
  48. package/dist/{platform-domain-p0kobLV8.mjs → platform-domain-CHVS6cV0.mjs} +3 -3
  49. package/dist/{platform-lifecycle-vFqtNPPa.mjs → platform-lifecycle-ByAlpkhV.mjs} +1 -1
  50. package/dist/{platform-lifecycle-D_QEY32D.mjs → platform-lifecycle-DzCwqhFq.mjs} +10 -10
  51. package/dist/{platform-management-oi-SvI3f.mjs → platform-management-CBOT4BSM.mjs} +1 -1
  52. package/dist/{platform-management-BdYblvvE.mjs → platform-management-CuuVDhyt.mjs} +2 -2
  53. package/dist/{platform-plans-config-CjiFv5J4.mjs → platform-plans-config-CN-heS4q.mjs} +2 -2
  54. package/dist/{platform-recovery-PvNS9Nl2.mjs → platform-recovery-CskSJgLh.mjs} +3 -3
  55. package/dist/{platform-registry-P387v42A.mjs → platform-registry-Cjv2Qf0r.mjs} +5 -1
  56. package/dist/{platform-setup-DVe42Ws7.mjs → platform-setup-BBxRxmFC.mjs} +1 -1
  57. package/dist/{project-DQstYTxO.mjs → project-BAm2aB6Q.mjs} +1 -1
  58. package/dist/{project-BiaPQ7ur.mjs → project-DedqCp59.mjs} +1 -1
  59. package/dist/{project-cmd-ti8_yTcA.mjs → project-cmd-DaoRrn-8.mjs} +17 -17
  60. package/dist/{project-team-CDPE1Tsg.mjs → project-team-Q_lCA7Io.mjs} +3 -3
  61. package/dist/{project-token-CkZ1cN0Z.mjs → project-token-BArgK9o1.mjs} +3 -3
  62. package/dist/{project-zero-trust-DdjLR61k.mjs → project-zero-trust-KO9Hu2Pq.mjs} +3 -3
  63. package/dist/{requests-DFAqyYy8.mjs → requests-C7Oeoh5u.mjs} +3 -3
  64. package/dist/{rollback-BKYXBduI.mjs → rollback-DVAtrLAl.mjs} +3 -3
  65. package/dist/{secret-BAt2KMmO.mjs → secret-BvtB7IjY.mjs} +3 -3
  66. package/docs/guide/deployment.md +2 -2
  67. package/docs/guide/platform/administration/access.md +1 -1
  68. package/docs/guide/platform/installation/first-deployment.md +1 -1
  69. package/docs/guide/project-collaboration.md +1 -1
  70. package/docs/reference/cli/auth.md +1 -1
  71. package/docs/reference/cli/deploy.md +1 -1
  72. package/package.json +8 -8
  73. package/skills/void/SKILL.md +3 -2
  74. package/dist/client-By4JjMw_.mjs +0 -2
  75. package/dist/help-DzKUrQvk.mjs +0 -2
  76. package/dist/login-Dc-wuTDq.mjs +0 -2
  77. package/dist/operator-cmd-Cwn50lOV.mjs +0 -2
  78. package/dist/platform-args-DYgITk0D.mjs +0 -2
@@ -2,24 +2,24 @@ import { a as join, i as isAbsolute, l as relative, n as dirname, t as basename,
2
2
  import { r as detectFramework } from "./plugin-inference-BlQbOL0P.mjs";
3
3
  import { n as readProjectPaths, o as TYPED_CONFIG_FILE } from "./project-paths-GgcMozYz.mjs";
4
4
  import { m as readConfig, u as getDatabaseDialect } from "./config-DiowPT80.mjs";
5
- import { l as writeProjectConfig, n as readDeploymentPlatform, r as readProjectConfig, s as writeDeploymentPlatform, t as attachSelectedPlatform } from "./project-DQstYTxO.mjs";
5
+ import { l as writeProjectConfig, n as readDeploymentPlatform, r as readProjectConfig, s as writeDeploymentPlatform, t as attachSelectedPlatform } from "./project-BAm2aB6Q.mjs";
6
6
  import { r as materializeCloudflareConfig } from "./cloudflare-config-BmhBv3HV.mjs";
7
7
  import { i as LATEST_KNOWN_COMPAT_DATE, j as writeProvisionedWranglerConfig } from "./wrangler-D9KTuqnv.mjs";
8
- import { c as getToken } from "./auth-B5_tZLxT.mjs";
8
+ import { c as getToken } from "./auth-Dn2vw-SG.mjs";
9
9
  import { A as confirm, K as select, L as log, O as cancel, X as text, tt as isCancel } from "./dist-D3m88sjf.mjs";
10
10
  import { d as printSuccess, u as note } from "./output-C50ag2r3.mjs";
11
11
  import { n as ensureProjectTsconfig, t as createProjectTsconfig } from "./project-tsconfig-CVJhNMxs.mjs";
12
12
  import { t as MagicString } from "./dist-Cegxq8gs.mjs";
13
13
  import { t as parseDotenvFile } from "./dotenv-BfU6eqFt.mjs";
14
14
  import { n as getPackageDir, t as detectAgents } from "./agents-B_pX_HmQ.mjs";
15
- import { r as PlatformClient } from "./client-C2Prx_Bi.mjs";
15
+ import { r as PlatformClient } from "./client-DlDJuY0s.mjs";
16
16
  import { i as migrateFrameworkAdapterPaths, t as migrateLegacyVoidConfig } from "./migrate-NLsjBbuM.mjs";
17
17
  import { s as formatProjectCommand } from "./cloudflare-process-2-TfIEzB.mjs";
18
- import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-DxiyW6iX.mjs";
18
+ import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-BdXEFKal.mjs";
19
19
  import { n as writeDrizzleConfig } from "./config-CLYAosnQ.mjs";
20
20
  import { n as writeVoidProjectConfig, t as canRewriteVoidProjectConfig } from "./config-write-AHGesphx.mjs";
21
- import { t as promptForLoginToken } from "./login-D-Q4xw3Q.mjs";
22
- import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-B8-bCb7t.mjs";
21
+ import { t as promptForLoginToken } from "./login-GKcNUmtI.mjs";
22
+ import { i as saveDiscoveredPlatform, t as discoverPlatform } from "./platform-cmd-BbY1dWiM.mjs";
23
23
  import { t as connectCloudflare } from "./cloudflare-connect-2G3rL2rP.mjs";
24
24
  import { n as findInstalledYarnPnpRuntime, r as hasLocalLockfile, t as buildDrizzleKitSpawnEnv } from "./yarn-pnp-CUX_iTPA.mjs";
25
25
  import { createRequire } from "node:module";
@@ -1885,7 +1885,7 @@ async function ensureVoidPlatformConnection(root) {
1885
1885
  let selectedApiUrl = null;
1886
1886
  let promptedForPlatform = false;
1887
1887
  try {
1888
- const { getApiUrl, getSiteDomain } = await import("./auth-BgX2qYSY.mjs");
1888
+ const { getApiUrl, getSiteDomain } = await import("./auth-LMJcNESe.mjs");
1889
1889
  selectedApiUrl = getApiUrl(root);
1890
1890
  getSiteDomain(root);
1891
1891
  } catch (error) {
@@ -2676,7 +2676,7 @@ async function runInitCommand(root, initArgs) {
2676
2676
  let shouldSetupGithub = targeted ? initArgs?.github === true : deploymentPlatform !== "none";
2677
2677
  if (shouldSetupGithub && !githubStepSkipForSubpackage && deploymentPlatform !== "cloudflare" && deploymentPlatform !== "none") {
2678
2678
  if (!voidPlatformDiscovery) {
2679
- const { getApiUrl } = await import("./auth-BgX2qYSY.mjs");
2679
+ const { getApiUrl } = await import("./auth-LMJcNESe.mjs");
2680
2680
  voidPlatformDiscovery = await discoverPlatform(getApiUrl(root));
2681
2681
  }
2682
2682
  if (!voidPlatformDiscovery.capabilities.githubActions) {
@@ -1,9 +1,9 @@
1
- import { l as writeProjectConfig, r as readProjectConfig, t as attachSelectedPlatform } from "./project-DQstYTxO.mjs";
2
- import { c as getToken, s as getSiteDomain } from "./auth-B5_tZLxT.mjs";
1
+ import { l as writeProjectConfig, r as readProjectConfig, t as attachSelectedPlatform } from "./project-BAm2aB6Q.mjs";
2
+ import { c as getToken, s as getSiteDomain } from "./auth-Dn2vw-SG.mjs";
3
3
  import { H as outro, L as log, O as cancel } from "./dist-D3m88sjf.mjs";
4
4
  import { d as printSuccess, l as import_picocolors } from "./output-C50ag2r3.mjs";
5
- import { r as PlatformClient } from "./client-C2Prx_Bi.mjs";
6
- import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-DxiyW6iX.mjs";
5
+ import { r as PlatformClient } from "./client-DlDJuY0s.mjs";
6
+ import { a as promptProjectSelection, r as promptAndCreateProject } from "./create-project-BdXEFKal.mjs";
7
7
  import { i as resolveProjectBySlug } from "./resolve-project-CP8rZs_p.mjs";
8
8
  //#region src/cli/link.ts
9
9
  function projectLabel(slug, root, url) {
@@ -1,8 +1,8 @@
1
- import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DQstYTxO.mjs";
2
- import { c as getToken } from "./auth-B5_tZLxT.mjs";
1
+ import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-BAm2aB6Q.mjs";
2
+ import { c as getToken } from "./auth-Dn2vw-SG.mjs";
3
3
  import { H as outro, L as log } from "./dist-D3m88sjf.mjs";
4
4
  import { a as ensureUtc, f as sanitizeTerminalText, i as dim, l as import_picocolors, m as tablePrefix, s as formatCount } from "./output-C50ag2r3.mjs";
5
- import { r as PlatformClient } from "./client-C2Prx_Bi.mjs";
5
+ import { r as PlatformClient } from "./client-DlDJuY0s.mjs";
6
6
  import { i as resolveProjectBySlug } from "./resolve-project-CP8rZs_p.mjs";
7
7
  //#region src/cli/list.ts
8
8
  async function runListCommand(root, slug) {
@@ -1,7 +1,7 @@
1
- import { a as getApiUrl, c as getToken, f as removeToken, g as saveToken, h as savePlatformToken, l as getTokenSource, m as runPlatformLogin, p as runLogin } from "./auth-B5_tZLxT.mjs";
1
+ import { a as getApiUrl, c as getToken, f as removeToken, g as saveToken, h as savePlatformToken, l as getTokenSource, m as runPlatformLogin, p as runLogin } from "./auth-Dn2vw-SG.mjs";
2
2
  import { H as outro, K as select, L as log, O as cancel, tt as isCancel } from "./dist-D3m88sjf.mjs";
3
3
  import { d as printSuccess, l as import_picocolors, r as createSpinner } from "./output-C50ag2r3.mjs";
4
- import { a as isExpiredTokenError, r as PlatformClient } from "./client-C2Prx_Bi.mjs";
4
+ import { a as isExpiredTokenError, r as PlatformClient } from "./client-DlDJuY0s.mjs";
5
5
  //#region src/cli/login.ts
6
6
  async function selectPlatformLoginMethod(platform, requestedId) {
7
7
  const providers = platform?.authenticationProviders ?? ["github", "google"];
@@ -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-C00YM14r.mjs").then(({ discoverPlatform }) => discoverPlatform(getApiUrl(root))));
32
+ const { id: provider, label: providerName } = await selectPlatformLoginMethod(platform ?? await import("./platform-cmd-BbmJiq5O.mjs").then(({ discoverPlatform }) => discoverPlatform(getApiUrl(root))));
33
33
  const s = createSpinner();
34
34
  s.start(`Opening browser for ${providerName} login...`);
35
35
  try {
@@ -0,0 +1,2 @@
1
+ import { r as selectPlatformLoginMethod } from "./login-GKcNUmtI.mjs";
2
+ export { selectPlatformLoginMethod };
@@ -1,8 +1,8 @@
1
- import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-DQstYTxO.mjs";
2
- import { c as getToken } from "./auth-B5_tZLxT.mjs";
1
+ import { n as readDeploymentPlatform, r as readProjectConfig } from "./project-BAm2aB6Q.mjs";
2
+ import { c as getToken } from "./auth-Dn2vw-SG.mjs";
3
3
  import { $ as wrapTextWithPrefix, H as outro, L as log } from "./dist-D3m88sjf.mjs";
4
4
  import { i as dim, l as import_picocolors, o as errorStackFrames, s as formatCount } from "./output-C50ag2r3.mjs";
5
- import { r as PlatformClient } from "./client-C2Prx_Bi.mjs";
5
+ import { r as PlatformClient } from "./client-DlDJuY0s.mjs";
6
6
  import { t as sanitizeTerminalLogText } from "./terminal-log-text-D9ACPOuG.mjs";
7
7
  //#region src/cli/logs.ts
8
8
  async function runLogsCommand(root, filter, range, deployment, level) {
@@ -1,4 +1,4 @@
1
- import { t as OPERATOR_MAX_TIMEOUT_MS } from "./operator-client-BQtzyG-g.mjs";
1
+ import { t as OPERATOR_MAX_TIMEOUT_MS } from "./operator-client-DbDv4vtE.mjs";
2
2
  //#region src/cli/operator-args.ts
3
3
  const operatorCommands = [
4
4
  {
@@ -1,5 +1,5 @@
1
- import { C as deleteKeyringPassword, T as writeKeyringPassword, c as normalizePlatformApiUrl, i as getActivePlatformConnection, r as findPlatformConnections, u as platformCredentialAccount, w as readKeyringPassword } from "./platform-registry-P387v42A.mjs";
2
- import { n as OperatorClient, r as OperatorClientError } from "./operator-client-BQtzyG-g.mjs";
1
+ import { C as deleteKeyringPassword, T as writeKeyringPassword, c as normalizePlatformApiUrl, i as getActivePlatformConnection, r as findPlatformConnections, u as platformCredentialAccount, w as readKeyringPassword } from "./platform-registry-Cjv2Qf0r.mjs";
2
+ import { n as OperatorClient, r as OperatorClientError } from "./operator-client-DbDv4vtE.mjs";
3
3
  /** Operator authority never comes from repository-controlled metadata. */
4
4
  function resolveOperatorOrigin(connection = "") {
5
5
  if (connection) {
@@ -1,6 +1,6 @@
1
- import { c as normalizePlatformApiUrl } from "./platform-registry-P387v42A.mjs";
1
+ import { c as normalizePlatformApiUrl } from "./platform-registry-Cjv2Qf0r.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
3
- import { t as ensureCloudflaredToken } from "./cf-access-ngGqZpHZ.mjs";
3
+ import { t as ensureCloudflaredToken } from "./cf-access-BcIBSKqG.mjs";
4
4
  const OPERATOR_MAX_TIMEOUT_MS = 36e5;
5
5
  var OperatorClientError = class extends Error {
6
6
  code;
@@ -1,6 +1,6 @@
1
1
  import { d as printSuccess, f as sanitizeTerminalText } from "./output-C50ag2r3.mjs";
2
- import { n as OperatorClient, r as OperatorClientError } from "./operator-client-BQtzyG-g.mjs";
3
- import { a as resolveOperatorOrigin, i as removeOperatorToken, n as readOperatorApiTokenStdin, o as saveOperatorToken, r as readOperatorToken, t as exchangeOperatorSession } from "./operator-auth-AzVLbrr3.mjs";
2
+ import { n as OperatorClient, r as OperatorClientError } from "./operator-client-DbDv4vtE.mjs";
3
+ import { a as resolveOperatorOrigin, i as removeOperatorToken, n as readOperatorApiTokenStdin, o as saveOperatorToken, r as readOperatorToken, t as exchangeOperatorSession } from "./operator-auth-BEZ_u0Cz.mjs";
4
4
  import { createHash } from "node:crypto";
5
5
  import { setTimeout } from "node:timers/promises";
6
6
  import { createInterface } from "node:readline/promises";
@@ -163,9 +163,9 @@ async function runAuth(origin, args) {
163
163
  if (args.action === "login" || args.action === "token" && args.tokenStdin) {
164
164
  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");
165
165
  const apiToken = args.tokenStdin ? await readOperatorApiTokenStdin() : await (async () => {
166
- const { discoverPlatform } = await import("./platform-cmd-C00YM14r.mjs");
167
- const { selectPlatformLoginMethod } = await import("./login-Dc-wuTDq.mjs");
168
- const { runPlatformLogin } = await import("./auth-BgX2qYSY.mjs");
166
+ const { discoverPlatform } = await import("./platform-cmd-BbmJiq5O.mjs");
167
+ const { selectPlatformLoginMethod } = await import("./login-mx_ydhmp.mjs");
168
+ const { runPlatformLogin } = await import("./auth-LMJcNESe.mjs");
169
169
  return runPlatformLogin(origin, (await selectPlatformLoginMethod(await discoverPlatform(origin), args.providerExplicit ? args.provider : void 0)).id, (url) => process.stderr.write(`Sign in at ${url}\n`));
170
170
  })();
171
171
  const session = await exchangeOperatorSession(origin, apiToken);
@@ -344,7 +344,7 @@ async function migrateDeploymentAssets(client, origin, args) {
344
344
  }
345
345
  async function runOperatorCommand(args) {
346
346
  if (!args.action) {
347
- const { printHelpPage } = await import("./help-DzKUrQvk.mjs");
347
+ const { printHelpPage } = await import("./help-DfQYVfGY.mjs");
348
348
  printHelpPage(["platform", args.group]);
349
349
  return;
350
350
  }
@@ -0,0 +1,2 @@
1
+ import { a as runOperatorCommand } from "./operator-cmd-BT4hgavL.mjs";
2
+ export { runOperatorCommand };
@@ -0,0 +1,2 @@
1
+ import { t as parsePlatformArgs } from "./platform-args-DUeXY9Om.mjs";
2
+ export { parsePlatformArgs };
@@ -1,4 +1,4 @@
1
- import { n as operatorGroups, r as parseOperatorArgs } from "./operator-args-BNsW5gfp.mjs";
1
+ import { n as operatorGroups, r as parseOperatorArgs } from "./operator-args-DOBhIaIg.mjs";
2
2
  import { PLATFORM_LOGIN_KINDS, normalizePlatformDashboardUrl, parsePlatformLoginId } from "@void/platform";
3
3
  import { parsePlatformPlanId } from "@void/platform/plans";
4
4
  //#region src/cli/platform-config-args.ts
@@ -1,10 +1,10 @@
1
- import { u as openBrowser } from "./auth-B5_tZLxT.mjs";
1
+ import { u as openBrowser } from "./auth-Dn2vw-SG.mjs";
2
2
  import { A as confirm, K as select, U as password, X as text, z as multiselect } from "./dist-D3m88sjf.mjs";
3
3
  import { d as printSuccess } from "./output-C50ag2r3.mjs";
4
- import { n as OperatorClient } from "./operator-client-BQtzyG-g.mjs";
5
- import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-AzVLbrr3.mjs";
6
- import { i as humanLines } from "./operator-cmd-B6f6Cg9Z.mjs";
7
- import { o as platformPromptAnswer } from "./platform-setup-DVe42Ws7.mjs";
4
+ import { n as OperatorClient } from "./operator-client-DbDv4vtE.mjs";
5
+ import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-BEZ_u0Cz.mjs";
6
+ import { i as humanLines } from "./operator-cmd-BT4hgavL.mjs";
7
+ import { o as platformPromptAnswer } from "./platform-setup-BBxRxmFC.mjs";
8
8
  import { parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration } from "@void/platform";
9
9
  import { stripVTControlCharacters } from "node:util";
10
10
  import { execFile } from "node:child_process";
@@ -143,11 +143,11 @@ async function configurationInput(args, existing) {
143
143
  }
144
144
  async function runPlatformAuthConfig(args) {
145
145
  if (args.action === "recover") {
146
- const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-tw9lgtgE.mjs");
146
+ const { runPlatformAuthRecovery } = await import("./platform-auth-recovery-BU6izFAU.mjs");
147
147
  return runPlatformAuthRecovery(args);
148
148
  }
149
149
  if (args.action === "protection") {
150
- const { runPlatformProtectionConfig } = await import("./platform-auth-protection-zxDr0hWW.mjs");
150
+ const { runPlatformProtectionConfig } = await import("./platform-auth-protection-BJimB_p9.mjs");
151
151
  return runPlatformProtectionConfig(args);
152
152
  }
153
153
  const origin = resolveOperatorOrigin(args.connection);
@@ -1,12 +1,12 @@
1
- import { S as writePendingInstallationSecrets, c as normalizePlatformApiUrl, m as readInstallationRecoverySecrets, p as promoteInstallationSecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest, x as writeInstallationManifest } from "./platform-registry-P387v42A.mjs";
1
+ import { S as writePendingInstallationSecrets, c as normalizePlatformApiUrl, m as readInstallationRecoverySecrets, p as promoteInstallationSecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest, x as writeInstallationManifest } from "./platform-registry-Cjv2Qf0r.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
3
- import { n as ensurePlatformAccessToken } from "./cf-access-ngGqZpHZ.mjs";
3
+ import { n as ensurePlatformAccessToken } from "./cf-access-BcIBSKqG.mjs";
4
4
  import { A as confirm, tt as isCancel } from "./dist-D3m88sjf.mjs";
5
5
  import { d as printSuccess } from "./output-C50ag2r3.mjs";
6
- import { n as OperatorClient } from "./operator-client-BQtzyG-g.mjs";
7
- import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-AzVLbrr3.mjs";
8
- import { G as preparePlatformAccessSetup, K as PlatformCloudflareClient, U as checkpointPlatformAccessResources, V as resolvePlatformCloudflareCredential, W as parsePlatformAccessSetupSpec, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLock } from "./platform-lifecycle-D_QEY32D.mjs";
9
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-BdYblvvE.mjs";
6
+ import { n as OperatorClient } from "./operator-client-DbDv4vtE.mjs";
7
+ import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-BEZ_u0Cz.mjs";
8
+ import { G as preparePlatformAccessSetup, K as PlatformCloudflareClient, U as checkpointPlatformAccessResources, V as resolvePlatformCloudflareCredential, W as parsePlatformAccessSetupSpec, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLock } from "./platform-lifecycle-DzCwqhFq.mjs";
9
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-CuuVDhyt.mjs";
10
10
  import { parsePlatformAccessProtection, platformProtectionProofMessage } from "@void/platform";
11
11
  import { createHmac } from "node:crypto";
12
12
  import { readFile } from "node:fs/promises";
@@ -1,10 +1,10 @@
1
- import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest } from "./platform-registry-P387v42A.mjs";
2
- import { u as openBrowser } from "./auth-B5_tZLxT.mjs";
1
+ import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest } from "./platform-registry-Cjv2Qf0r.mjs";
2
+ import { u as openBrowser } from "./auth-Dn2vw-SG.mjs";
3
3
  import { A as confirm, tt as isCancel } from "./dist-D3m88sjf.mjs";
4
4
  import { d as printSuccess } from "./output-C50ag2r3.mjs";
5
- import { a as resolveOperatorOrigin } from "./operator-auth-AzVLbrr3.mjs";
6
- import { K as PlatformCloudflareClient, V as resolvePlatformCloudflareCredential, c as acquirePlatformDatabaseLifecycleLockConnection, l as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl } from "./platform-lifecycle-D_QEY32D.mjs";
7
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-BdYblvvE.mjs";
5
+ import { a as resolveOperatorOrigin } from "./operator-auth-BEZ_u0Cz.mjs";
6
+ import { K as PlatformCloudflareClient, V as resolvePlatformCloudflareCredential, c as acquirePlatformDatabaseLifecycleLockConnection, l as platformDatabaseClientUrl, n as resolvePlatformInstallDatabaseUrl } from "./platform-lifecycle-DzCwqhFq.mjs";
7
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-CuuVDhyt.mjs";
8
8
  import { parsePlatformAccessProtection, parsePlatformAdmissionPolicy, parsePlatformLoginConfiguration, platformAuthenticationRecoveryMessage, validatePlatformAdmissionPolicy } from "@void/platform";
9
9
  import { createCipheriv, createDecipheriv, createHash, createHmac, hkdfSync, randomBytes, randomUUID } from "node:crypto";
10
10
  import { execFile } from "node:child_process";
@@ -1,13 +1,14 @@
1
- import { b as selectPlatformConnection, c as normalizePlatformApiUrl, i as getActivePlatformConnection, l as platformConnectionSlug, o as listInstallationManifests, s as listPlatformConnections, y as savePlatformConnection } from "./platform-registry-P387v42A.mjs";
1
+ import { b as selectPlatformConnection, c as normalizePlatformApiUrl, i as getActivePlatformConnection, l as platformConnectionSlug, o as listInstallationManifests, s as listPlatformConnections, y as savePlatformConnection } from "./platform-registry-Cjv2Qf0r.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
3
- import { i as isCloudflareAccessChallenge, n as ensurePlatformAccessToken, t as ensureCloudflaredToken } from "./cf-access-ngGqZpHZ.mjs";
3
+ import { i as isCloudflareAccessChallenge, n as ensurePlatformAccessToken, t as ensureCloudflaredToken } from "./cf-access-BcIBSKqG.mjs";
4
4
  import { K as select, L as log, X as text, tt as isCancel } from "./dist-D3m88sjf.mjs";
5
5
  import { d as printSuccess, l as import_picocolors } from "./output-C50ag2r3.mjs";
6
- import { n as readPlatformDiscoveryResponse, t as PlatformDisabledError } from "./platform-discovery-BC0HCKYt.mjs";
6
+ import { n as readPlatformDiscoveryResponse, t as PlatformDisabledError } from "./platform-discovery-DIYz8V63.mjs";
7
7
  //#region src/cli/platform-cmd.ts
8
8
  function normalizePlatformInputUrl(input) {
9
9
  const value = input.trim();
10
- return normalizePlatformApiUrl(value.includes("://") ? value : `https://${value}`);
10
+ const protocol = /^(?:localhost|127\.0\.0\.1|\[::1\])(?::\d+)?\/?$/i.test(value) ? "http" : "https";
11
+ return normalizePlatformApiUrl(value.includes("://") ? value : `${protocol}://${value}`);
11
12
  }
12
13
  async function discoverPlatform(input, fetcher = fetch) {
13
14
  const apiUrl = normalizePlatformInputUrl(input);
@@ -95,19 +96,19 @@ async function runPlatformCommand(_root, args) {
95
96
  }]
96
97
  });
97
98
  if (isCancel(group)) return;
98
- const { parsePlatformArgs } = await import("./platform-args-DYgITk0D.mjs");
99
+ const { parsePlatformArgs } = await import("./platform-args-D4E1PjVw.mjs");
99
100
  return runPlatformCommand(_root, parsePlatformArgs(["config", group]));
100
101
  }
101
- const { runPlatformPlansConfig } = await import("./platform-plans-config-CjiFv5J4.mjs");
102
+ const { runPlatformPlansConfig } = await import("./platform-plans-config-CN-heS4q.mjs");
102
103
  await runPlatformPlansConfig(args);
103
104
  return;
104
105
  }
105
- const { runPlatformAuthConfig } = await import("./platform-auth-config-n603OANg.mjs");
106
+ const { runPlatformAuthConfig } = await import("./platform-auth-config-CkSx3usH.mjs");
106
107
  await runPlatformAuthConfig(args);
107
108
  return;
108
109
  }
109
110
  if (args.subcommand === "operator") {
110
- const { runOperatorCommand } = await import("./operator-cmd-Cwn50lOV.mjs");
111
+ const { runOperatorCommand } = await import("./operator-cmd-CwBB-1yb.mjs");
111
112
  await runOperatorCommand(args);
112
113
  return;
113
114
  }
@@ -175,7 +176,7 @@ async function runPlatformCommand(_root, args) {
175
176
  console.log(`Capabilities: ${Object.entries(discovery.capabilities).filter(([, enabled]) => enabled).map(([name]) => name).join(", ")}`);
176
177
  return;
177
178
  }
178
- const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-vFqtNPPa.mjs");
179
+ const { runPlatformLifecycleCommand } = await import("./platform-lifecycle-ByAlpkhV.mjs");
179
180
  await runPlatformLifecycleCommand(args);
180
181
  }
181
182
  function showSavedInstallationStatus(manifest) {
@@ -1,2 +1,2 @@
1
- import { r as runPlatformCommand, t as discoverPlatform } from "./platform-cmd-B8-bCb7t.mjs";
1
+ import { r as runPlatformCommand, t as discoverPlatform } from "./platform-cmd-BbY1dWiM.mjs";
2
2
  export { discoverPlatform, runPlatformCommand };
@@ -1,4 +1,4 @@
1
- import { c as normalizePlatformApiUrl } from "./platform-registry-P387v42A.mjs";
1
+ import { c as normalizePlatformApiUrl } from "./platform-registry-Cjv2Qf0r.mjs";
2
2
  import { parsePlatformDiscoveryDocument } from "@void/platform";
3
3
  //#region src/cli/platform-discovery.ts
4
4
  /** Discovery was refused because the platform traffic gate is closed. */
@@ -1,9 +1,9 @@
1
- import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, x as writeInstallationManifest, y as savePlatformConnection } from "./platform-registry-P387v42A.mjs";
1
+ import { m as readInstallationRecoverySecrets, t as acquirePlatformLifecycleLock, x as writeInstallationManifest, y as savePlatformConnection } from "./platform-registry-Cjv2Qf0r.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
3
3
  import { A as confirm, X as text, tt as isCancel } from "./dist-D3m88sjf.mjs";
4
4
  import { d as printSuccess, u as note } from "./output-C50ag2r3.mjs";
5
- import { B as assertPlatformOperatorCredentialCanApplyPlan, K as PlatformCloudflareClient, M as recordPlatformWorkerTraffic, O as createPlatformHealthProbeToken, P as createPlatformInstallPlan, V as resolvePlatformCloudflareCredential, j as recordResource, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLock, t as assertNoninteractivePlatformMutationAcknowledged } from "./platform-lifecycle-D_QEY32D.mjs";
6
- import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest, o as resolveInstalledPlatformManifest } from "./platform-management-BdYblvvE.mjs";
5
+ import { B as assertPlatformOperatorCredentialCanApplyPlan, K as PlatformCloudflareClient, M as recordPlatformWorkerTraffic, O as createPlatformHealthProbeToken, P as createPlatformInstallPlan, V as resolvePlatformCloudflareCredential, j as recordResource, n as resolvePlatformInstallDatabaseUrl, s as acquirePlatformDatabaseLifecycleLock, t as assertNoninteractivePlatformMutationAcknowledged } from "./platform-lifecycle-DzCwqhFq.mjs";
6
+ import { d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest, o as resolveInstalledPlatformManifest } from "./platform-management-CuuVDhyt.mjs";
7
7
  import { PLATFORM_HEALTH_HOSTNAME_LABEL, PLATFORM_REMOTE_INSTALLATION_MANIFEST_KEY, createApplicationRoutes, createPlatformDeploymentManifest, normalizeApplicationDomain } from "@void/platform";
8
8
  //#region src/cli/platform-domain.ts
9
9
  function platformDomainTarget(manifest, domain, zone, dedicatedZone) {
@@ -1,2 +1,2 @@
1
- import { r as runPlatformLifecycleCommand } from "./platform-lifecycle-D_QEY32D.mjs";
1
+ import { r as runPlatformLifecycleCommand } from "./platform-lifecycle-DzCwqhFq.mjs";
2
2
  export { runPlatformLifecycleCommand };
@@ -1,14 +1,14 @@
1
1
  import { a as join, n as dirname, u as resolve } from "./dist-BVqXeR_h.mjs";
2
- import { S as writePendingInstallationSecrets, a as latestPlatformWorkerCutoverGeneration, c as normalizePlatformApiUrl, d as platformRegistryDirectory, f as platformWorkerSecretUpdateIntentState, h as readPendingInstallationSecrets, m as readInstallationRecoverySecrets, n as assertPlatformInstallationSlugAvailable, o as listInstallationManifests, p as promoteInstallationSecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest, x as writeInstallationManifest, y as savePlatformConnection } from "./platform-registry-P387v42A.mjs";
2
+ import { S as writePendingInstallationSecrets, a as latestPlatformWorkerCutoverGeneration, c as normalizePlatformApiUrl, d as platformRegistryDirectory, f as platformWorkerSecretUpdateIntentState, h as readPendingInstallationSecrets, m as readInstallationRecoverySecrets, n as assertPlatformInstallationSlugAvailable, o as listInstallationManifests, p as promoteInstallationSecrets, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest, x as writeInstallationManifest, y as savePlatformConnection } from "./platform-registry-Cjv2Qf0r.mjs";
3
3
  import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
4
- import { n as ensurePlatformAccessToken } from "./cf-access-ngGqZpHZ.mjs";
4
+ import { n as ensurePlatformAccessToken } from "./cf-access-BcIBSKqG.mjs";
5
5
  import { A as confirm, H as outro, K as select, L as log, U as password, X as text$1, tt as isCancel, z as multiselect } from "./dist-D3m88sjf.mjs";
6
6
  import { d as printSuccess, l as import_picocolors, n as cliCommandName, r as createSpinner, u as note } from "./output-C50ag2r3.mjs";
7
7
  import { l as resolveCloudflareOperationArgv } from "./cloudflare-process-2-TfIEzB.mjs";
8
8
  import { o as runCloudflareAuthCommand } from "./cloudflare-auth-CuxfF6OA.mjs";
9
9
  import { _ as resolvePinnedApiBaseUrl, o as createDefaultRunWrangler } from "./provision-BfaLiWbj.mjs";
10
- import { t as parsePlatformArgs } from "./platform-args-BoZkWQnJ.mjs";
11
- import { a as platformManagementSetupPage, c as platformSetupLink, i as platformInstallCommandArguments, l as platformSetupPages, n as formatPlatformSetupPlan, o as platformPromptAnswer, r as openPlatformSetupPage, s as platformSetupFieldHelp, t as formatPlatformInstallCommand } from "./platform-setup-DVe42Ws7.mjs";
10
+ import { t as parsePlatformArgs } from "./platform-args-DUeXY9Om.mjs";
11
+ import { a as platformManagementSetupPage, c as platformSetupLink, i as platformInstallCommandArguments, l as platformSetupPages, n as formatPlatformSetupPlan, o as platformPromptAnswer, r as openPlatformSetupPage, s as platformSetupFieldHelp, t as formatPlatformInstallCommand } from "./platform-setup-BBxRxmFC.mjs";
12
12
  import { copyFileSync, cpSync, existsSync, lstatSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
13
13
  import { fileURLToPath } from "node:url";
14
14
  import { isRecord } from "@void/deploy-core";
@@ -4984,7 +4984,7 @@ async function verifyInstalledPlatformAccessProtection(input) {
4984
4984
  }
4985
4985
  const existingWorkers = input.plan.actions.filter((action) => action.kind === "worker" && action.action === "update").map((action) => action.name);
4986
4986
  if (existingWorkers.length) {
4987
- const { verifyProtectionWorkerOrigins } = await import("./platform-auth-protection-zxDr0hWW.mjs");
4987
+ const { verifyProtectionWorkerOrigins } = await import("./platform-auth-protection-BJimB_p9.mjs");
4988
4988
  await verifyProtectionWorkerOrigins({
4989
4989
  request: input.client.request.bind(input.client),
4990
4990
  listWorkerDomains: input.client.listWorkerDomains.bind(input.client),
@@ -7876,14 +7876,14 @@ function resolvePlatformInstallDatabaseUrl(checkpoint, manifest = null) {
7876
7876
  }
7877
7877
  async function runPlatformLifecycleCommand(commandArgs) {
7878
7878
  if (commandArgs.subcommand === "domain") {
7879
- const { runPlatformDomainCommand } = await import("./platform-domain-p0kobLV8.mjs");
7879
+ const { runPlatformDomainCommand } = await import("./platform-domain-CHVS6cV0.mjs");
7880
7880
  await runPlatformDomainCommand(commandArgs);
7881
7881
  return;
7882
7882
  }
7883
7883
  if (commandArgs.subcommand === "discover") {
7884
7884
  const client = new PlatformCloudflareClient((await resolvePlatformCloudflareCredential()).token);
7885
7885
  const accountId = await selectAccount(await readAccounts(client), commandArgs.account);
7886
- const { recoverPlatformInstallations } = await import("./platform-recovery-PvNS9Nl2.mjs");
7886
+ const { recoverPlatformInstallations } = await import("./platform-recovery-CskSJgLh.mjs");
7887
7887
  const recovered = await recoverPlatformInstallations(client, accountId, void 0, commandArgs.selector);
7888
7888
  if (recovered.length === 0) {
7889
7889
  log.info(`No recoverable Void platform installations were found in ${accountId}.`);
@@ -7894,7 +7894,7 @@ async function runPlatformLifecycleCommand(commandArgs) {
7894
7894
  return;
7895
7895
  }
7896
7896
  if (commandArgs.subcommand !== "install") {
7897
- const { runInstalledPlatformCommand } = await import("./platform-management-oi-SvI3f.mjs");
7897
+ const { runInstalledPlatformCommand } = await import("./platform-management-CBOT4BSM.mjs");
7898
7898
  await runInstalledPlatformCommand(commandArgs);
7899
7899
  return;
7900
7900
  }
@@ -8067,7 +8067,7 @@ async function runPlatformLifecycleCommand(commandArgs) {
8067
8067
  progress?.stop("Read the saved installation.");
8068
8068
  progress = void 0;
8069
8069
  if (authoritative) {
8070
- const { selectAuthoritativePlatformManifest } = await import("./platform-management-oi-SvI3f.mjs");
8070
+ const { selectAuthoritativePlatformManifest } = await import("./platform-management-CBOT4BSM.mjs");
8071
8071
  const selected = selectAuthoritativePlatformManifest(existing, authoritative);
8072
8072
  authoritativeProvisionIntents = true;
8073
8073
  if (!args.plan && JSON.stringify(selected) !== JSON.stringify(existing)) writeInstallationManifest(selected);
@@ -8472,7 +8472,7 @@ async function runPlatformLifecycleCommand(commandArgs) {
8472
8472
  })).actions.filter((action) => action.kind === "worker"),
8473
8473
  revalidateBeforeWorkerDeploy: (manifest, action) => revalidatePlatformInstallAction(client, plan, manifest, action),
8474
8474
  verifyExistingOwnership: async (manifest, databaseCheckpointExists) => {
8475
- const { verifyPlatformInstallationOwnership } = await import("./platform-management-oi-SvI3f.mjs");
8475
+ const { verifyPlatformInstallationOwnership } = await import("./platform-management-CBOT4BSM.mjs");
8476
8476
  const retainedReplacementKeys = new Set(plan.actions.filter((action) => {
8477
8477
  const previous = manifest.resources.find((resource) => resource.key === action.key);
8478
8478
  return action.action === "create" && previous && previous.name !== action.name;
@@ -1,2 +1,2 @@
1
- import { c as runInstalledPlatformCommand, d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-BdYblvvE.mjs";
1
+ import { c as runInstalledPlatformCommand, d as verifyPlatformInstallationOwnership, l as selectAuthoritativePlatformManifest } from "./platform-management-CuuVDhyt.mjs";
2
2
  export { runInstalledPlatformCommand, selectAuthoritativePlatformManifest, verifyPlatformInstallationOwnership };
@@ -1,7 +1,7 @@
1
- import { _ as removePlatformConnectionForInstallation, g as removeInstallationRecoverySecrets, m as readInstallationRecoverySecrets, o as listInstallationManifests, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest, x as writeInstallationManifest } from "./platform-registry-P387v42A.mjs";
1
+ import { _ as removePlatformConnectionForInstallation, g as removeInstallationRecoverySecrets, m as readInstallationRecoverySecrets, o as listInstallationManifests, t as acquirePlatformLifecycleLock, v as resolveInstallationManifest, x as writeInstallationManifest } from "./platform-registry-Cjv2Qf0r.mjs";
2
2
  import { A as confirm, H as outro, K as select, L as log, tt as isCancel } from "./dist-D3m88sjf.mjs";
3
3
  import { d as printSuccess, l as import_picocolors, r as createSpinner, u as note } from "./output-C50ag2r3.mjs";
4
- import { A as resolveBootstrapGitHubId, B as assertPlatformOperatorCredentialCanApplyPlan, C as purgeResourcesKeptReason, D as loadPlatformRuntime, E as runPurgeResourcesTeardown, F as formatPlatformInstallPlan, H as verifyPlatformCloudflareCredential, I as platformAdoptionIntentHash, J as hyperdriveOriginFromConnectionString, K as PlatformCloudflareClient, L as platformProvisionIntentHash, N as trackedPlatformWorkerTraffic, P as createPlatformInstallPlan, R as revalidatePlatformInstallAction, S as purgeResourcesHandlesEmailRouting, T as purgeResourcesPermissions, V as resolvePlatformCloudflareCredential, X as verifyPlatformRuntimeTokenPermissions, Y as hyperdriveOriginMatches, _ as describePurgeResourcesPlan, a as REMOTE_INSTALLATION_MANIFEST_KEY, b as isPurgedAccessResource, d as readPlatformProjectZeroTrustState, f as assertProjectZeroTrustAllowsUninstall, g as checkPurgeResourcesCredentials, h as assertNoPlatformProjects, k as createPlatformInstallationSecrets, m as PlatformResourceChangedError, n as resolvePlatformInstallDatabaseUrl, o as installPlatform, q as hyperdriveOriginConfigHash, s as acquirePlatformDatabaseLifecycleLock, t as assertNoninteractivePlatformMutationAcknowledged, u as readPlatformProjectSlugs, v as isPlatformTailWorker, w as purgeResourcesKeptResources, x as purgeResourcesAlwaysKept, y as isPurgeResourcesCandidate, z as platformDatabaseNameFromOwnerUrl } from "./platform-lifecycle-D_QEY32D.mjs";
4
+ import { A as resolveBootstrapGitHubId, B as assertPlatformOperatorCredentialCanApplyPlan, C as purgeResourcesKeptReason, D as loadPlatformRuntime, E as runPurgeResourcesTeardown, F as formatPlatformInstallPlan, H as verifyPlatformCloudflareCredential, I as platformAdoptionIntentHash, J as hyperdriveOriginFromConnectionString, K as PlatformCloudflareClient, L as platformProvisionIntentHash, N as trackedPlatformWorkerTraffic, P as createPlatformInstallPlan, R as revalidatePlatformInstallAction, S as purgeResourcesHandlesEmailRouting, T as purgeResourcesPermissions, V as resolvePlatformCloudflareCredential, X as verifyPlatformRuntimeTokenPermissions, Y as hyperdriveOriginMatches, _ as describePurgeResourcesPlan, a as REMOTE_INSTALLATION_MANIFEST_KEY, b as isPurgedAccessResource, d as readPlatformProjectZeroTrustState, f as assertProjectZeroTrustAllowsUninstall, g as checkPurgeResourcesCredentials, h as assertNoPlatformProjects, k as createPlatformInstallationSecrets, m as PlatformResourceChangedError, n as resolvePlatformInstallDatabaseUrl, o as installPlatform, q as hyperdriveOriginConfigHash, s as acquirePlatformDatabaseLifecycleLock, t as assertNoninteractivePlatformMutationAcknowledged, u as readPlatformProjectSlugs, v as isPlatformTailWorker, w as purgeResourcesKeptResources, x as purgeResourcesAlwaysKept, y as isPurgeResourcesCandidate, z as platformDatabaseNameFromOwnerUrl } from "./platform-lifecycle-DzCwqhFq.mjs";
5
5
  import { PLATFORM_DISABLED_KEY, PLATFORM_DISABLED_VALUE, PLATFORM_R2_OWNERSHIP_MARKER_KEY, createPlatformResourceOwnershipMarker, parsePlatformInstallationManifest, parsePlatformResourceOwnershipMarker, recordInstallationResource, recordInstallationStep, setInstallationDesiredState, transitionInstallation } from "@void/platform";
6
6
  import { createHash } from "node:crypto";
7
7
  //#region src/cli/platform-management.ts
@@ -1,7 +1,7 @@
1
1
  import { A as confirm, K as select, X as text, tt as isCancel } from "./dist-D3m88sjf.mjs";
2
2
  import { d as printSuccess } from "./output-C50ag2r3.mjs";
3
- import { n as OperatorClient, r as OperatorClientError } from "./operator-client-BQtzyG-g.mjs";
4
- import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-AzVLbrr3.mjs";
3
+ import { n as OperatorClient, r as OperatorClientError } from "./operator-client-DbDv4vtE.mjs";
4
+ import { a as resolveOperatorOrigin, r as readOperatorToken } from "./operator-auth-BEZ_u0Cz.mjs";
5
5
  import { stripVTControlCharacters } from "node:util";
6
6
  import { PLAN_EDITABLE_LIMIT_KEYS, PLAN_LIMITS, parseBuildInstanceType, parsePlanLimitsPatch, parsePlanName, parsePlatformPlanId } from "@void/platform/plans";
7
7
  import { readFile } from "node:fs/promises";
@@ -1,7 +1,7 @@
1
- import { o as listInstallationManifests, t as acquirePlatformLifecycleLock, x as writeInstallationManifest, y as savePlatformConnection } from "./platform-registry-P387v42A.mjs";
1
+ import { o as listInstallationManifests, t as acquirePlatformLifecycleLock, x as writeInstallationManifest, y as savePlatformConnection } from "./platform-registry-Cjv2Qf0r.mjs";
2
2
  import { t as cfAccessHeaders } from "./cf-access-TWNzXltp.mjs";
3
- import { P as createPlatformInstallPlan, a as REMOTE_INSTALLATION_MANIFEST_KEY } from "./platform-lifecycle-D_QEY32D.mjs";
4
- import { a as recoverDurablyMarkedProvisionIntents, d as verifyPlatformInstallationOwnership, r as isPlatformManifestMonotonicExtension } from "./platform-management-BdYblvvE.mjs";
3
+ import { P as createPlatformInstallPlan, a as REMOTE_INSTALLATION_MANIFEST_KEY } from "./platform-lifecycle-DzCwqhFq.mjs";
4
+ import { a as recoverDurablyMarkedProvisionIntents, d as verifyPlatformInstallationOwnership, r as isPlatformManifestMonotonicExtension } from "./platform-management-CuuVDhyt.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 = "") {
@@ -45,7 +45,11 @@ function normalizePlatformApiUrl(value) {
45
45
  } catch {
46
46
  throw new Error(`platform: Invalid platform URL ${JSON.stringify(value)}.`);
47
47
  }
48
- if (!(url.protocol === "http:" && (url.hostname === "localhost" || url.hostname === "127.0.0.1" || url.hostname === "::1")) && url.protocol !== "https:" || url.username || url.password) throw new Error("platform: Platform URLs must use HTTPS and must not contain credentials.");
48
+ if (!(url.protocol === "http:" && [
49
+ "localhost",
50
+ "127.0.0.1",
51
+ "[::1]"
52
+ ].includes(url.hostname)) && url.protocol !== "https:" || url.username || url.password) throw new Error("platform: Platform URLs must use HTTPS and must not contain credentials.");
49
53
  if (url.search || url.hash) throw new Error("platform: Platform URLs must not contain query parameters or fragments.");
50
54
  if (url.pathname !== "/" && url.pathname !== "") throw new Error("platform: Platform URLs must not contain a path.");
51
55
  return url.origin;
@@ -1,4 +1,4 @@
1
- import { u as openBrowser } from "./auth-B5_tZLxT.mjs";
1
+ import { u as openBrowser } from "./auth-Dn2vw-SG.mjs";
2
2
  import { L as log, tt as isCancel } from "./dist-D3m88sjf.mjs";
3
3
  import { l as import_picocolors } from "./output-C50ag2r3.mjs";
4
4
  import { execFile } from "node:child_process";
@@ -1,5 +1,5 @@
1
1
  import { a as join, n as dirname } from "./dist-BVqXeR_h.mjs";
2
- import { c as normalizePlatformApiUrl, s as listPlatformConnections } from "./platform-registry-P387v42A.mjs";
2
+ import { c as normalizePlatformApiUrl, s as listPlatformConnections } from "./platform-registry-Cjv2Qf0r.mjs";
3
3
  import { mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
4
4
  import { normalizeApplicationDomain } from "@void/platform";
5
5
  //#region src/cli/project.ts
@@ -1,2 +1,2 @@
1
- import { l as writeProjectConfig, t as attachSelectedPlatform } from "./project-DQstYTxO.mjs";
1
+ import { l as writeProjectConfig, t as attachSelectedPlatform } from "./project-BAm2aB6Q.mjs";
2
2
  export { attachSelectedPlatform, writeProjectConfig };