wp-studio 1.7.8-beta3 → 1.7.8-beta4

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 (106) hide show
  1. package/README.md +21 -1
  2. package/dist/cli/{_events-C60cNJ1W.mjs → _events-C2dFSpKE.mjs} +2 -2
  3. package/dist/cli/{certificate-manager-Dd4zv2_k.mjs → certificate-manager-BMngpL-s.mjs} +12 -4
  4. package/dist/cli/{index-D9syEMMz.mjs → index-CkFXAp-n.mjs} +5 -5
  5. package/dist/cli/{index-Ru6CUP6w.mjs → index-odShRBgM.mjs} +157 -115
  6. package/dist/cli/{login-C3QlGVbr.mjs → login-BeT1uKwW.mjs} +2 -2
  7. package/dist/cli/{logout-B63eZwJZ.mjs → logout-BFQJBJD0.mjs} +2 -2
  8. package/dist/cli/main.mjs +2 -2
  9. package/dist/cli/proxy-daemon.mjs +1 -1
  10. package/dist/cli/{resume-DQT_MK6A.mjs → resume-D_K0QEl5.mjs} +1 -1
  11. package/dist/cli/{set-CjTbueyB.mjs → set-C5l116L7.mjs} +2 -2
  12. package/dist/cli/{set-C805heQS.mjs → set-DzcR6sFr.mjs} +2 -2
  13. package/dist/cli/{status-SnKm1rRP.mjs → status-CbXnAskz.mjs} +1 -1
  14. package/dist/cli/{wp-D0HZdudM.mjs → wp-CUKyZNTP.mjs} +1 -1
  15. package/dist/cli/wp-files/latest/available-site-translations.json +1 -1
  16. package/dist/cli/wp-files/latest/languages/admin-de_DE.l10n.php +2 -2
  17. package/dist/cli/wp-files/latest/languages/admin-network-de_DE.l10n.php +1 -1
  18. package/dist/cli/wp-files/latest/languages/admin-pl_PL.l10n.php +2 -2
  19. package/dist/cli/wp-files/latest/languages/de_DE-0cc31205f20441b3df1d1b46100f6b8d.json +1 -1
  20. package/dist/cli/wp-files/latest/languages/de_DE-0ce75ad2f775d1cac9696967d484808c.json +1 -1
  21. package/dist/cli/wp-files/latest/languages/de_DE-0eebe503220d4a00341eb011b92769b4.json +1 -1
  22. package/dist/cli/wp-files/latest/languages/de_DE-17179a5f2930647c89151e365f843b6e.json +1 -1
  23. package/dist/cli/wp-files/latest/languages/de_DE-1780a2033cf98d69ce13c2e5c8510004.json +1 -1
  24. package/dist/cli/wp-files/latest/languages/de_DE-1a0cd6a7128913b15c1a10dd68951869.json +1 -1
  25. package/dist/cli/wp-files/latest/languages/de_DE-1bba9045bb07c89671c88a3f328548e8.json +1 -1
  26. package/dist/cli/wp-files/latest/languages/de_DE-1c4303f02ff93b290e9faad991eeb06f.json +1 -1
  27. package/dist/cli/wp-files/latest/languages/de_DE-1d17475f620f63a92e2c5d2681c51ee8.json +1 -1
  28. package/dist/cli/wp-files/latest/languages/de_DE-2617ce121227a46077ede6c69aa9fcb5.json +1 -1
  29. package/dist/cli/wp-files/latest/languages/de_DE-270d72d1cff17227d37f3244759cbecb.json +1 -1
  30. package/dist/cli/wp-files/latest/languages/de_DE-28b3c3d595952907e08d98287077426c.json +1 -1
  31. package/dist/cli/wp-files/latest/languages/de_DE-2b390f85a3048c5b4255fb45960b6514.json +1 -1
  32. package/dist/cli/wp-files/latest/languages/de_DE-2c5d274ea625dd91556554ad82901529.json +1 -1
  33. package/dist/cli/wp-files/latest/languages/de_DE-320f4ad9792aaa6dedb1e71cbdf85d57.json +1 -1
  34. package/dist/cli/wp-files/latest/languages/de_DE-440127dd25bde48a531ded36f33e927b.json +1 -1
  35. package/dist/cli/wp-files/latest/languages/de_DE-49c6d4acf36cf3aca9f0b2a77617304f.json +1 -1
  36. package/dist/cli/wp-files/latest/languages/de_DE-4a38fe1c0c45989e44682ba6109d9f46.json +1 -1
  37. package/dist/cli/wp-files/latest/languages/de_DE-4bfa11da57ff2600004bb500368247f4.json +1 -1
  38. package/dist/cli/wp-files/latest/languages/de_DE-50278328b502f4eb3f2b8b7ab49324a1.json +1 -1
  39. package/dist/cli/wp-files/latest/languages/de_DE-5251f7623766a714c8207c7edb938628.json +1 -1
  40. package/dist/cli/wp-files/latest/languages/de_DE-529362903a5a05b34b06b5e793fb4cf8.json +1 -1
  41. package/dist/cli/wp-files/latest/languages/de_DE-569e85ef168299eb8c8f24d8ef8c8a78.json +1 -1
  42. package/dist/cli/wp-files/latest/languages/de_DE-6025add6bde16aaeb12787d250f9b414.json +1 -1
  43. package/dist/cli/wp-files/latest/languages/de_DE-60d06fac6f98e8e8f0ec5a945738b660.json +1 -1
  44. package/dist/cli/wp-files/latest/languages/de_DE-68f2cec7514bf8563c723a4d675fcfe6.json +1 -1
  45. package/dist/cli/wp-files/latest/languages/de_DE-7233008897033de5ee0d14f86a42a65a.json +1 -1
  46. package/dist/cli/wp-files/latest/languages/de_DE-7289286ed59e90a8f36ae797df62220b.json +1 -1
  47. package/dist/cli/wp-files/latest/languages/de_DE-7436b7ee9e4f11ac0d618d8cc886eb66.json +1 -1
  48. package/dist/cli/wp-files/latest/languages/de_DE-77fdfadaf2e1ca3a027d1956b910bc50.json +1 -1
  49. package/dist/cli/wp-files/latest/languages/de_DE-7b74c8457eaa7fcc50db41b431f8a003.json +1 -1
  50. package/dist/cli/wp-files/latest/languages/de_DE-7c90cd4398ee2d9d3628c387a87a70e5.json +1 -1
  51. package/dist/cli/wp-files/latest/languages/de_DE-7d5ca435e60d92f024d46c9257aaa0f7.json +1 -1
  52. package/dist/cli/wp-files/latest/languages/de_DE-7f13c36c641b114bf18cd0bcc9ecc7e0.json +1 -1
  53. package/dist/cli/wp-files/latest/languages/de_DE-803bf1ce2131e13efc590c1bc47851fc.json +1 -1
  54. package/dist/cli/wp-files/latest/languages/de_DE-81c889563f09dd13de1701135dc62941.json +1 -1
  55. package/dist/cli/wp-files/latest/languages/de_DE-81d6f084cb273e02e15b01bd9ece87f7.json +1 -1
  56. package/dist/cli/wp-files/latest/languages/de_DE-8240df461220d1d3a028a9a4c5652a5b.json +1 -1
  57. package/dist/cli/wp-files/latest/languages/de_DE-8860e58c20c6a2ab5876a0f07be43bd9.json +1 -1
  58. package/dist/cli/wp-files/latest/languages/de_DE-93882e8f9976382d7f724ac595ed7151.json +1 -1
  59. package/dist/cli/wp-files/latest/languages/de_DE-947c76bb5095da30e16668eec15406b2.json +1 -1
  60. package/dist/cli/wp-files/latest/languages/de_DE-9b256ea9cd54df92095e04c76758ceb0.json +1 -1
  61. package/dist/cli/wp-files/latest/languages/de_DE-9c3519f4870fac83dc0dbf18cb6bd4c4.json +1 -1
  62. package/dist/cli/wp-files/latest/languages/de_DE-9d47a87c240c1d10701cd6a02b28aa1b.json +1 -1
  63. package/dist/cli/wp-files/latest/languages/de_DE-a25d1cc7bf7ca0b4e114f6bea64943f4.json +1 -1
  64. package/dist/cli/wp-files/latest/languages/de_DE-a2796e57f680e25d84c4b352ee6d7280.json +1 -1
  65. package/dist/cli/wp-files/latest/languages/de_DE-a9dc201dcd011fe71849743133052619.json +1 -1
  66. package/dist/cli/wp-files/latest/languages/de_DE-aabfce98c410957228848dc581e3c420.json +1 -1
  67. package/dist/cli/wp-files/latest/languages/de_DE-ac23eee47530ac63a1178c827db28087.json +1 -1
  68. package/dist/cli/wp-files/latest/languages/de_DE-bf0f094965d3d4a95b47babcb35fc136.json +1 -1
  69. package/dist/cli/wp-files/latest/languages/de_DE-bf23b24175490c2e46aaf92ff6a0c70f.json +1 -1
  70. package/dist/cli/wp-files/latest/languages/de_DE-c31d5f185753910c14afebc6deb2ce24.json +1 -1
  71. package/dist/cli/wp-files/latest/languages/de_DE-ca28138671823450e87dfd354f7afc6b.json +1 -1
  72. package/dist/cli/wp-files/latest/languages/de_DE-daeb084aab42199d26393a56c3465bc0.json +1 -1
  73. package/dist/cli/wp-files/latest/languages/de_DE-e2791ba830489d23043be8650a22a22b.json +1 -1
  74. package/dist/cli/wp-files/latest/languages/de_DE-e2e4c4b80f3adf2c70b431bfdb1b4872.json +1 -1
  75. package/dist/cli/wp-files/latest/languages/de_DE-e53526243551a102928735ec9eed4edf.json +1 -1
  76. package/dist/cli/wp-files/latest/languages/de_DE-f575f481034e90e21d832e415fd95fcf.json +1 -1
  77. package/dist/cli/wp-files/latest/languages/de_DE-f70806bf0c7d62f2908bd5a1c3fe4efc.json +1 -1
  78. package/dist/cli/wp-files/latest/languages/de_DE-f8f49d9fc4a9cf7d78ec99285417bd9c.json +1 -1
  79. package/dist/cli/wp-files/latest/languages/de_DE.l10n.php +27 -27
  80. package/dist/cli/wp-files/latest/languages/pl_PL-0cc31205f20441b3df1d1b46100f6b8d.json +1 -1
  81. package/dist/cli/wp-files/latest/languages/pl_PL-0eebe503220d4a00341eb011b92769b4.json +1 -1
  82. package/dist/cli/wp-files/latest/languages/pl_PL-1c4303f02ff93b290e9faad991eeb06f.json +1 -1
  83. package/dist/cli/wp-files/latest/languages/pl_PL-1d17475f620f63a92e2c5d2681c51ee8.json +1 -1
  84. package/dist/cli/wp-files/latest/languages/pl_PL-2b390f85a3048c5b4255fb45960b6514.json +1 -1
  85. package/dist/cli/wp-files/latest/languages/pl_PL-4a38fe1c0c45989e44682ba6109d9f46.json +1 -1
  86. package/dist/cli/wp-files/latest/languages/pl_PL-4bfa11da57ff2600004bb500368247f4.json +1 -1
  87. package/dist/cli/wp-files/latest/languages/pl_PL-50278328b502f4eb3f2b8b7ab49324a1.json +1 -1
  88. package/dist/cli/wp-files/latest/languages/pl_PL-5251f7623766a714c8207c7edb938628.json +1 -1
  89. package/dist/cli/wp-files/latest/languages/pl_PL-529362903a5a05b34b06b5e793fb4cf8.json +1 -1
  90. package/dist/cli/wp-files/latest/languages/pl_PL-569e85ef168299eb8c8f24d8ef8c8a78.json +1 -1
  91. package/dist/cli/wp-files/latest/languages/pl_PL-6025add6bde16aaeb12787d250f9b414.json +1 -1
  92. package/dist/cli/wp-files/latest/languages/pl_PL-7436b7ee9e4f11ac0d618d8cc886eb66.json +1 -1
  93. package/dist/cli/wp-files/latest/languages/pl_PL-77fdfadaf2e1ca3a027d1956b910bc50.json +1 -1
  94. package/dist/cli/wp-files/latest/languages/pl_PL-7b74c8457eaa7fcc50db41b431f8a003.json +1 -1
  95. package/dist/cli/wp-files/latest/languages/pl_PL-7d5ca435e60d92f024d46c9257aaa0f7.json +1 -1
  96. package/dist/cli/wp-files/latest/languages/pl_PL-81d6f084cb273e02e15b01bd9ece87f7.json +1 -1
  97. package/dist/cli/wp-files/latest/languages/pl_PL-8240df461220d1d3a028a9a4c5652a5b.json +1 -1
  98. package/dist/cli/wp-files/latest/languages/pl_PL-9b256ea9cd54df92095e04c76758ceb0.json +1 -1
  99. package/dist/cli/wp-files/latest/languages/pl_PL-9c3519f4870fac83dc0dbf18cb6bd4c4.json +1 -1
  100. package/dist/cli/wp-files/latest/languages/pl_PL-9d47a87c240c1d10701cd6a02b28aa1b.json +1 -1
  101. package/dist/cli/wp-files/latest/languages/pl_PL-a9dc201dcd011fe71849743133052619.json +1 -1
  102. package/dist/cli/wp-files/latest/languages/pl_PL-aabfce98c410957228848dc581e3c420.json +1 -1
  103. package/dist/cli/wp-files/latest/languages/pl_PL-ca28138671823450e87dfd354f7afc6b.json +1 -1
  104. package/dist/cli/wp-files/latest/languages/pl_PL-e2e4c4b80f3adf2c70b431bfdb1b4872.json +1 -1
  105. package/package.json +1 -1
  106. package/patches/archiver+7.0.1.patch +14 -0
package/README.md CHANGED
@@ -11,7 +11,8 @@ The Studio CLI lets you:
11
11
  - Import and export site backups.
12
12
  - Pull from and push to WordPress.com sites.
13
13
  - Publish ephemeral preview sites to share (requires WordPress.com login).
14
- - Integrate with AI coding agents. Every site comes with an `AGENTS.md` file.
14
+ - Build WordPress sites in Studio Code with an interactive AI agent specialized in WordPress, backed by the full power of the Studio CLI.
15
+ - Integrate with other AI coding agents. Every site comes with an `AGENTS.md` file.
15
16
 
16
17
  <p align="center">
17
18
  <br>
@@ -25,6 +26,7 @@ The Studio CLI lets you:
25
26
  - [Installation](#installation)
26
27
  - [Quick start](#quick-start)
27
28
  - [Usage](#usage)
29
+ - [Studio Code](#studio-code)
28
30
  - [Import and export](#import-and-export)
29
31
  - [Sync with WordPress.com and Pressable](#sync-with-wordpresscom-and-pressable)
30
32
  - [Preview sites](#preview-sites)
@@ -78,6 +80,24 @@ studio wp plugin list --path ~/Studio/my-site
78
80
  studio wp option get home --path ~/Studio/my-site
79
81
  ```
80
82
 
83
+ ## Studio Code
84
+
85
+ > 🧪 _Studio Code is currently in early access. Features, capabilities, and usage limits may change as it evolves._
86
+
87
+ Studio Code is an interactive AI agent specialized in building and optimizing WordPress sites. It integrates seamlessly with your Studio sites and can create themes, install plugins, edit code and content, and run WP-CLI commands autonomously from your terminal. It validates its own work through a built-in feedback loop that takes screenshots and confirms block syntax. You can use frontier models through the WordPress.com provider or bring your own API keys.
88
+
89
+ ```bash
90
+ studio code
91
+ ```
92
+
93
+ Delete, lis,t or resume a previous session:
94
+
95
+ ```bash
96
+ studio code sessions delete
97
+ studio code sessions list
98
+ studio code sessions resume
99
+ ```
100
+
81
101
  ## Import and export
82
102
 
83
103
  The Studio CLI allows you to import and export local backups.
@@ -1,8 +1,8 @@
1
1
  import fs__default from "fs";
2
- import { k as socketEventSchema, e as SITE_EVENTS, S as SNAPSHOT_EVENTS, A as AUTH_EVENTS, r as readCliConfig, m as siteDetailsSchema } from "./certificate-manager-Dd4zv2_k.mjs";
2
+ import { k as socketEventSchema, h as SITE_EVENTS, S as SNAPSHOT_EVENTS, A as AUTH_EVENTS, r as readCliConfig, m as siteDetailsSchema } from "./certificate-manager-BMngpL-s.mjs";
3
3
  import { v as isEmptyDir } from "./rewrite-wp-cli-post-content-CWC1GEL6.mjs";
4
4
  import { s as sequential } from "./sequential-BQFuixXz.mjs";
5
- import { K as SITE_EVENTS_SOCKET_PATH, t as SiteCommandLoggerAction, y as connectToDaemon, L as getDaemonBus, M as SITE_PROCESS_PREFIX, H as disconnectFromDaemon, N as removeSiteFromConfig, e as getSiteUrl, i as isSiteRunning } from "./index-Ru6CUP6w.mjs";
5
+ import { K as SITE_EVENTS_SOCKET_PATH, t as SiteCommandLoggerAction, y as connectToDaemon, L as getDaemonBus, M as SITE_PROCESS_PREFIX, H as disconnectFromDaemon, N as removeSiteFromConfig, e as getSiteUrl, i as isSiteRunning } from "./index-odShRBgM.mjs";
6
6
  import { __ } from "@wordpress/i18n";
7
7
  import { g as SocketServer } from "./process-manager-ipc-heiF195f.mjs";
8
8
  import { L as LoggerError, d as Logger } from "./well-known-paths-d6uuOzUp.mjs";
@@ -621,6 +621,14 @@ var StatsGroup = /* @__PURE__ */ ((StatsGroup2) => {
621
621
  StatsGroup2["STUDIO_CLI_USAGE_UNIQUE"] = "studio-cli-usage-unique";
622
622
  StatsGroup2["STUDIO_CLI_WEEKLY_UNIQUE_NPM"] = "studio-cli-weekly-unq-npm";
623
623
  StatsGroup2["STUDIO_CLI_WEEKLY_UNIQUE_APP"] = "studio-cli-weekly-unq-app";
624
+ StatsGroup2["STUDIO_CLI_MONTHLY_UNIQUE_NPM"] = "studio-cli-mon-unq-npm";
625
+ StatsGroup2["STUDIO_CLI_MONTHLY_UNIQUE_APP"] = "studio-cli-mon-unq-app";
626
+ StatsGroup2["STUDIO_CLI_FIRST_LAUNCH_NPM"] = "studio-cli-lch-1st-npm";
627
+ StatsGroup2["STUDIO_CLI_FIRST_LAUNCH_APP"] = "studio-cli-lch-1st-app";
628
+ StatsGroup2["STUDIO_CLI_TOTAL_LAUNCHES_NPM"] = "studio-cli-lch-tot-npm";
629
+ StatsGroup2["STUDIO_CLI_TOTAL_LAUNCHES_APP"] = "studio-cli-lch-tot-app";
630
+ StatsGroup2["STUDIO_CLI_SITE_CREATE_NPM"] = "studio-cli-site-crt-npm";
631
+ StatsGroup2["STUDIO_CLI_SITE_CREATE_APP"] = "studio-cli-site-crt-app";
624
632
  return StatsGroup2;
625
633
  })(StatsGroup || {});
626
634
  var StatsMetric = /* @__PURE__ */ ((StatsMetric2) => {
@@ -962,11 +970,11 @@ export {
962
970
  unlockFileAsync as b,
963
971
  authTokenSchema as c,
964
972
  requireSignalExit as d,
965
- SITE_EVENTS as e,
966
- deleteSiteCertificate as f,
973
+ StatsMetric as e,
974
+ StatsGroup as f,
967
975
  generateSiteCertificate as g,
968
- StatsMetric as h,
969
- StatsGroup as i,
976
+ SITE_EVENTS as h,
977
+ deleteSiteCertificate as i,
970
978
  updateCliConfigWithPartial as j,
971
979
  socketEventSchema as k,
972
980
  lockCliConfig as l,
@@ -1,19 +1,19 @@
1
- import { S as STUDIO_SITES_ROOT, c as createRemoteSiteTools, a as createStudioTools, r as readAuthToken, b as getSitesRunningStatus, d as getWpComSites, i as isSiteRunning, o as openBrowser, e as getSiteUrl, f as getSnapshotsFromConfig, h as isSnapshotExpired, j as captureCommandOutput, k as runCommand$2, l as runCommand$3 } from "./index-Ru6CUP6w.mjs";
1
+ import { S as STUDIO_SITES_ROOT, c as createRemoteSiteTools, a as createStudioTools, r as readAuthToken, b as getSitesRunningStatus, d as getWpComSites, i as isSiteRunning, o as openBrowser, e as getSiteUrl, f as getSnapshotsFromConfig, h as isSnapshotExpired, j as captureCommandOutput, k as runCommand$2, l as runCommand$3 } from "./index-odShRBgM.mjs";
2
2
  import { __, sprintf, _n } from "@wordpress/i18n";
3
3
  import fs__default from "fs";
4
4
  import path__default from "path";
5
5
  import { query } from "@anthropic-ai/claude-agent-sdk";
6
6
  import os from "os";
7
7
  import { password } from "@inquirer/prompts";
8
- import { r as readCliConfig, j as updateCliConfigWithPartial } from "./certificate-manager-Dd4zv2_k.mjs";
8
+ import { r as readCliConfig, j as updateCliConfigWithPartial } from "./certificate-manager-BMngpL-s.mjs";
9
9
  import { L as LoggerError, d as Logger, s as setProgressCallback } from "./well-known-paths-d6uuOzUp.mjs";
10
10
  import crypto from "crypto";
11
11
  import fs from "fs/promises";
12
12
  import { g as getAiSessionsDirectoryForDate, b as buildAiSessionFileName } from "./paths-DmFmyv9t.mjs";
13
13
  import { ProcessTerminal, TUI, Container, Loader, CombinedAutocompleteProvider, isKeyRelease, matchesKey, Text, SelectList, Input, Markdown, Editor, visibleWidth, CURSOR_MARKER, truncateToWidth } from "@mariozechner/pi-tui";
14
14
  import chalk from "chalk";
15
- import { runCommand as runCommand$1 } from "./login-C3QlGVbr.mjs";
16
- import { runCommand as runCommand$4 } from "./logout-B63eZwJZ.mjs";
15
+ import { runCommand as runCommand$1 } from "./login-BeT1uKwW.mjs";
16
+ import { runCommand as runCommand$4 } from "./logout-BFQJBJD0.mjs";
17
17
  const ALLOWED_TOOLS = [
18
18
  "mcp__studio__*",
19
19
  "Read",
@@ -1953,7 +1953,7 @@ ${chalk.dim(message)}
1953
1953
  this.tui.start();
1954
1954
  }
1955
1955
  showWelcome() {
1956
- const version = "1.7.8-beta3";
1956
+ const version = "1.7.8-beta4";
1957
1957
  const cwd = process.cwd();
1958
1958
  const home = process.env.HOME ?? process.env.USERPROFILE ?? "";
1959
1959
  const displayCwd = home && cwd.startsWith(home) ? "~" + cwd.slice(home.length) : cwd;
@@ -51,7 +51,7 @@ import * as path from "path";
51
51
  import path__default from "path";
52
52
  import { L as LoggerError, a as LOCKFILE_STALE_TIME, b as LOCKFILE_WAIT_TIME, g as getDefaultExportFromCjs, c as LatestSupportedPHPVersion, D as DEFAULT_PHP_VERSION, A as ARCHIVER_OPTIONS, d as Logger, S as SupportedPHPVersionsList, P as PLAYGROUND_CLI_MAX_TIMEOUT, e as PLAYGROUND_CLI_INACTIVITY_TIMEOUT, f as PLAYGROUND_CLI_ACTIVITY_CHECK_INTERVAL, h as getServerFilesPath, i as commonjsGlobal, j as getSharedConfigPath, k as getConfigDirectory, l as SHARED_CONFIG_LOCKFILE_NAME, m as DEMO_SITE_EXPIRATION_DAYS, H as HOUR_MS, n as DAY_MS, o as DEMO_SITE_SIZE_LIMIT_BYTES, p as DEMO_SITE_SIZE_LIMIT_GB, M as MINIMUM_WORDPRESS_VERSION, q as DEFAULT_WORDPRESS_VERSION$1, r as emitProgress, s as setProgressCallback, t as getProgressCallback } from "./well-known-paths-d6uuOzUp.mjs";
53
53
  import { a as arePathsEqual, i as isWordPressDirectory, g as getWordPressVersionPath, r as recursiveCopyDirectory, b as getWordPressVersionUrl, I as IS_JSPI_AVAILABLE, c as cleanupLegacyMuPlugins, d as getMuPlugins, e as getWpCliPharPath, f as getSqliteCommandPath, k as keepSqliteIntegrationUpdated, h as createDeployIgnoreFilter, j as calculateDirectorySizeForArchive, p as pathExists, l as isWordPressBetaVersion, m as isWordPressDevVersion, n as getWpFilesPath, o as getSqlitePluginPath, q as getLanguagePacksPath, s as getAiInstructionsPath, t as getPhpMyAdminPath, u as getSqliteVersionFromInstallation, v as isEmptyDir, w as decodePassword, x as validateAdminUsername, y as validateAdminEmail, z as encodePassword, A as createPassword, B as isValidWordPressVersion, C as isWordPressVersionAtLeast, D as getUnsupportedWpCliPostContentMessage } from "./rewrite-wp-cli-post-content-CWC1GEL6.mjs";
54
- import { l as lockCliConfig, r as readCliConfig, s as saveCliConfig, u as unlockCliConfig, a as lockFileAsync, b as unlockFileAsync, c as authTokenSchema, S as SNAPSHOT_EVENTS, d as requireSignalExit, g as generateSiteCertificate, e as SITE_EVENTS, f as deleteSiteCertificate, h as StatsMetric, i as StatsGroup } from "./certificate-manager-Dd4zv2_k.mjs";
54
+ import { l as lockCliConfig, r as readCliConfig, s as saveCliConfig, u as unlockCliConfig, a as lockFileAsync, b as unlockFileAsync, c as authTokenSchema, S as SNAPSHOT_EVENTS, d as requireSignalExit, e as StatsMetric, f as StatsGroup, g as generateSiteCertificate, h as SITE_EVENTS, i as deleteSiteCertificate } from "./certificate-manager-BMngpL-s.mjs";
55
55
  import require$$0$7, { spawn } from "child_process";
56
56
  import crypto$1 from "crypto";
57
57
  import { EventEmitter } from "events";
@@ -1467,6 +1467,11 @@ function compareAsc(dateLeft, dateRight) {
1467
1467
  return diff;
1468
1468
  }
1469
1469
  }
1470
+ function isSameDay(dateLeft, dateRight) {
1471
+ const dateLeftStartOfDay = startOfDay(dateLeft);
1472
+ const dateRightStartOfDay = startOfDay(dateRight);
1473
+ return +dateLeftStartOfDay === +dateRightStartOfDay;
1474
+ }
1470
1475
  function isDate(value) {
1471
1476
  return value instanceof Date || typeof value === "object" && Object.prototype.toString.call(value) === "[object Date]";
1472
1477
  }
@@ -3025,6 +3030,11 @@ function isSameWeek(dateLeft, dateRight, options) {
3025
3030
  const dateRightStartOfWeek = startOfWeek(dateRight, options);
3026
3031
  return +dateLeftStartOfWeek === +dateRightStartOfWeek;
3027
3032
  }
3033
+ function isSameMonth(dateLeft, dateRight) {
3034
+ const _dateLeft = toDate(dateLeft);
3035
+ const _dateRight = toDate(dateRight);
3036
+ return _dateLeft.getFullYear() === _dateRight.getFullYear() && _dateLeft.getMonth() === _dateRight.getMonth();
3037
+ }
3028
3038
  function generateBackupFilename(name) {
3029
3039
  const timestamp = format(/* @__PURE__ */ new Date(), "yyyy-MM-dd-HH-mm-ss");
3030
3040
  return sanitizeFolderName(`studio-backup-${name}-${timestamp}`);
@@ -26039,6 +26049,7 @@ async function archiveSiteContent(siteFolder, archivePath) {
26039
26049
  const output = fs__default.createWriteStream(archivePath);
26040
26050
  const archiveBuilder = archiver("zip", {
26041
26051
  zlib: { level: ZIP_COMPRESSION_LEVEL },
26052
+ // @ts-expect-error The `followSymlinks` option comes from a patch
26042
26053
  followSymlinks: true
26043
26054
  });
26044
26055
  output.on("close", () => {
@@ -48196,6 +48207,116 @@ async function fetchWordPressVersions() {
48196
48207
  }
48197
48208
  return versions;
48198
48209
  }
48210
+ const MAX_GROUP_LENGTH = 27;
48211
+ const MAX_STAT_LENGTH = 32;
48212
+ function __bumpStat(group, stat, bumpInDev = false) {
48213
+ if (group.length > MAX_GROUP_LENGTH) {
48214
+ console.error(
48215
+ `Stat group "${group}" exceeds maximum length of ${MAX_GROUP_LENGTH} characters (actual: ${group.length}). Stat will not be bumped.`
48216
+ );
48217
+ return false;
48218
+ }
48219
+ if (stat.length > MAX_STAT_LENGTH) {
48220
+ console.error(
48221
+ `Stat name "${stat}" exceeds maximum length of ${MAX_STAT_LENGTH} characters (actual: ${stat.length}). Stat will not be bumped.`
48222
+ );
48223
+ return false;
48224
+ }
48225
+ if (process.env.E2E || process.env.NODE_ENV === "development" && !bumpInDev) {
48226
+ console.info(`Would have bumped stat: ${group}=${stat}`);
48227
+ return false;
48228
+ }
48229
+ fetch("https://public-api.wordpress.com/wpcom/v2/studio-app/bump-stat", {
48230
+ method: "POST",
48231
+ headers: {
48232
+ "Content-Type": "application/json"
48233
+ },
48234
+ body: JSON.stringify({ group, stat })
48235
+ }).catch(() => {
48236
+ });
48237
+ return true;
48238
+ }
48239
+ async function __bumpAggregatedUniqueStat(group, stat, aggregateBy, provider, bumpInDev = false) {
48240
+ const lastBump = await getLastBump(group, stat, provider);
48241
+ if (lastBump === null) {
48242
+ __bumpStat(group, stat, bumpInDev);
48243
+ await updateLastBump(group, stat, provider);
48244
+ return;
48245
+ }
48246
+ if (aggregateBy === "forever") {
48247
+ return;
48248
+ }
48249
+ const now = Date.now();
48250
+ if (aggregateBy === "daily" && isSameDay(lastBump, now)) {
48251
+ return;
48252
+ }
48253
+ if (aggregateBy === "weekly" && isSameWeek(lastBump, now)) {
48254
+ return;
48255
+ }
48256
+ if (aggregateBy === "monthly" && isSameMonth(lastBump, now)) {
48257
+ return;
48258
+ }
48259
+ const didBump = __bumpStat(group, stat, bumpInDev);
48260
+ if (didBump) {
48261
+ await updateLastBump(group, stat, provider);
48262
+ }
48263
+ }
48264
+ async function getLastBump(group, stat, provider) {
48265
+ const lastBumpStats = await provider.load();
48266
+ return lastBumpStats?.[group]?.[stat] ?? null;
48267
+ }
48268
+ async function updateLastBump(group, stat, provider) {
48269
+ try {
48270
+ await provider.lock();
48271
+ const lastBumpStats = await provider.load();
48272
+ lastBumpStats[group] ??= {};
48273
+ lastBumpStats[group][stat] = Date.now();
48274
+ await provider.save(lastBumpStats);
48275
+ } finally {
48276
+ await provider.unlock();
48277
+ }
48278
+ }
48279
+ const lastBumpStatsProvider = {
48280
+ load: async () => {
48281
+ const { lastBumpStats } = await readCliConfig();
48282
+ return lastBumpStats ?? {};
48283
+ },
48284
+ lock: lockCliConfig,
48285
+ unlock: unlockCliConfig,
48286
+ save: async (lastBumpStats) => {
48287
+ const config = await readCliConfig();
48288
+ config.lastBumpStats = lastBumpStats;
48289
+ await saveCliConfig(config);
48290
+ }
48291
+ };
48292
+ function bumpStat(group, stat, bumpInDev = false) {
48293
+ return __bumpStat(group, stat, bumpInDev);
48294
+ }
48295
+ async function bumpAggregatedUniqueStat(group, stat, aggregateBy, bumpInDev = false) {
48296
+ return __bumpAggregatedUniqueStat(group, stat, aggregateBy, lastBumpStatsProvider, bumpInDev);
48297
+ }
48298
+ function getPlatformMetric() {
48299
+ switch (process.platform) {
48300
+ case "darwin":
48301
+ return StatsMetric.DARWIN;
48302
+ case "linux":
48303
+ return StatsMetric.LINUX;
48304
+ case "win32":
48305
+ return StatsMetric.WINDOWS;
48306
+ default:
48307
+ return StatsMetric.UNKNOWN_PLATFORM;
48308
+ }
48309
+ }
48310
+ function getInstallTypeLaunchStatGroups() {
48311
+ {
48312
+ return {
48313
+ weeklyUnique: StatsGroup.STUDIO_CLI_WEEKLY_UNIQUE_NPM,
48314
+ monthlyUnique: StatsGroup.STUDIO_CLI_MONTHLY_UNIQUE_NPM,
48315
+ firstLaunch: StatsGroup.STUDIO_CLI_FIRST_LAUNCH_NPM,
48316
+ totalLaunches: StatsGroup.STUDIO_CLI_TOTAL_LAUNCHES_NPM
48317
+ };
48318
+ }
48319
+ }
48199
48320
  var fastDeepEqual$1;
48200
48321
  var hasRequiredFastDeepEqual;
48201
48322
  function requireFastDeepEqual() {
@@ -75457,6 +75578,12 @@ const registerCommand$6 = (yargs2) => {
75457
75578
  }
75458
75579
  try {
75459
75580
  await runCommand$6(sitePath, config);
75581
+ if (!argv.avoidTelemetry) {
75582
+ bumpStat(
75583
+ true ? StatsGroup.STUDIO_CLI_SITE_CREATE_NPM : StatsGroup.STUDIO_CLI_SITE_CREATE_APP,
75584
+ getPlatformMetric()
75585
+ );
75586
+ }
75460
75587
  } catch (error2) {
75461
75588
  if (error2 instanceof LoggerError) {
75462
75589
  logger$6.reportError(error2);
@@ -76851,95 +76978,7 @@ const registerCommand = (yargs2) => {
76851
76978
  }
76852
76979
  });
76853
76980
  };
76854
- const MAX_GROUP_LENGTH = 27;
76855
- const MAX_STAT_LENGTH = 32;
76856
- function __bumpStat(group, stat, bumpInDev = false) {
76857
- if (group.length > MAX_GROUP_LENGTH) {
76858
- console.error(
76859
- `Stat group "${group}" exceeds maximum length of ${MAX_GROUP_LENGTH} characters (actual: ${group.length}). Stat will not be bumped.`
76860
- );
76861
- return false;
76862
- }
76863
- if (stat.length > MAX_STAT_LENGTH) {
76864
- console.error(
76865
- `Stat name "${stat}" exceeds maximum length of ${MAX_STAT_LENGTH} characters (actual: ${stat.length}). Stat will not be bumped.`
76866
- );
76867
- return false;
76868
- }
76869
- if (process.env.E2E || process.env.NODE_ENV === "development" && !bumpInDev) {
76870
- console.info(`Would have bumped stat: ${group}=${stat}`);
76871
- return false;
76872
- }
76873
- fetch("https://public-api.wordpress.com/wpcom/v2/studio-app/bump-stat", {
76874
- method: "POST",
76875
- headers: {
76876
- "Content-Type": "application/json"
76877
- },
76878
- body: JSON.stringify({ group, stat })
76879
- }).catch(() => {
76880
- });
76881
- return true;
76882
- }
76883
- async function __bumpAggregatedUniqueStat(group, stat, aggregateBy, provider, bumpInDev = false) {
76884
- const lastBump = await getLastBump(group, stat, provider);
76885
- if (lastBump === null) {
76886
- __bumpStat(group, stat, bumpInDev);
76887
- await updateLastBump(group, stat, provider);
76888
- return;
76889
- }
76890
- const now = Date.now();
76891
- if (isSameWeek(lastBump, now)) {
76892
- return;
76893
- }
76894
- const didBump = __bumpStat(group, stat, bumpInDev);
76895
- if (didBump) {
76896
- await updateLastBump(group, stat, provider);
76897
- }
76898
- }
76899
- async function getLastBump(group, stat, provider) {
76900
- const lastBumpStats = await provider.load();
76901
- return lastBumpStats?.[group]?.[stat] ?? null;
76902
- }
76903
- async function updateLastBump(group, stat, provider) {
76904
- try {
76905
- await provider.lock();
76906
- const lastBumpStats = await provider.load();
76907
- lastBumpStats[group] ??= {};
76908
- lastBumpStats[group][stat] = Date.now();
76909
- await provider.save(lastBumpStats);
76910
- } finally {
76911
- await provider.unlock();
76912
- }
76913
- }
76914
- const lastBumpStatsProvider = {
76915
- load: async () => {
76916
- const { lastBumpStats } = await readCliConfig();
76917
- return lastBumpStats ?? {};
76918
- },
76919
- lock: lockCliConfig,
76920
- unlock: unlockCliConfig,
76921
- save: async (lastBumpStats) => {
76922
- const config = await readCliConfig();
76923
- config.lastBumpStats = lastBumpStats;
76924
- await saveCliConfig(config);
76925
- }
76926
- };
76927
- async function bumpAggregatedUniqueStat(group, stat, aggregateBy, bumpInDev = false) {
76928
- return __bumpAggregatedUniqueStat(group, stat, aggregateBy, lastBumpStatsProvider, bumpInDev);
76929
- }
76930
- function getPlatformMetric() {
76931
- switch (process.platform) {
76932
- case "darwin":
76933
- return StatsMetric.DARWIN;
76934
- case "linux":
76935
- return StatsMetric.LINUX;
76936
- case "win32":
76937
- return StatsMetric.WINDOWS;
76938
- default:
76939
- return StatsMetric.UNKNOWN_PLATFORM;
76940
- }
76941
- }
76942
- const version = "1.7.8-beta3";
76981
+ const version = "1.7.8-beta4";
76943
76982
  suppressPunycodeWarning();
76944
76983
  async function main() {
76945
76984
  const yargsLocale = await loadTranslations();
@@ -76973,22 +77012,25 @@ async function main() {
76973
77012
  await runMigrations(migrations);
76974
77013
  }).middleware(async (argv) => {
76975
77014
  if (!argv.avoidTelemetry) {
76976
- try {
76977
- await bumpAggregatedUniqueStat(
76978
- StatsGroup.STUDIO_CLI_USAGE_UNIQUE,
76979
- StatsMetric.SUCCESS,
76980
- "weekly"
76981
- );
76982
- if (true) {
76983
- await bumpAggregatedUniqueStat(
76984
- StatsGroup.STUDIO_CLI_WEEKLY_UNIQUE_NPM,
76985
- getPlatformMetric(),
76986
- "weekly"
76987
- );
76988
- }
76989
- } catch (error2) {
76990
- console.error("Failed to bump stat:", error2);
76991
- }
77015
+ const platformMetric = getPlatformMetric();
77016
+ const launchGroups = getInstallTypeLaunchStatGroups();
77017
+ bumpStat(launchGroups.totalLaunches, platformMetric);
77018
+ bumpAggregatedUniqueStat(launchGroups.firstLaunch, platformMetric, "forever").catch(
77019
+ () => console.error("Failed to bump stat:", launchGroups.firstLaunch)
77020
+ );
77021
+ bumpAggregatedUniqueStat(
77022
+ StatsGroup.STUDIO_CLI_USAGE_UNIQUE,
77023
+ StatsMetric.SUCCESS,
77024
+ "weekly"
77025
+ ).catch(
77026
+ () => console.error("Failed to bump stat:", StatsGroup.STUDIO_CLI_USAGE_UNIQUE)
77027
+ );
77028
+ bumpAggregatedUniqueStat(launchGroups.weeklyUnique, platformMetric, "weekly").catch(
77029
+ () => console.error("Failed to bump stat:", launchGroups.weeklyUnique)
77030
+ );
77031
+ bumpAggregatedUniqueStat(launchGroups.monthlyUnique, platformMetric, "monthly").catch(
77032
+ () => console.error("Failed to bump stat:", launchGroups.monthlyUnique)
77033
+ );
76992
77034
  }
76993
77035
  }).middleware(async () => {
76994
77036
  await setupServerFiles();
@@ -76998,9 +77040,9 @@ async function main() {
76998
77040
  { registerCommand: registerAuthLogoutCommand },
76999
77041
  { registerCommand: registerAuthStatusCommand }
77000
77042
  ] = await Promise.all([
77001
- import("./login-C3QlGVbr.mjs"),
77002
- import("./logout-B63eZwJZ.mjs"),
77003
- import("./status-SnKm1rRP.mjs")
77043
+ import("./login-BeT1uKwW.mjs"),
77044
+ import("./logout-BFQJBJD0.mjs"),
77045
+ import("./status-CbXnAskz.mjs")
77004
77046
  ]);
77005
77047
  registerAuthLoginCommand(authYargs);
77006
77048
  registerAuthLogoutCommand(authYargs);
@@ -77008,7 +77050,7 @@ async function main() {
77008
77050
  authYargs.version(false).demandCommand(1, __("You must provide a valid auth command"));
77009
77051
  });
77010
77052
  const studioCodeCommandBuilder = async (aiYargs) => {
77011
- const { registerCommand: registerAiCommand } = await import("./index-D9syEMMz.mjs");
77053
+ const { registerCommand: registerAiCommand } = await import("./index-CkFXAp-n.mjs");
77012
77054
  registerAiCommand(aiYargs);
77013
77055
  aiYargs.command("sessions", __("Manage code sessions"), async (sessionsYargs) => {
77014
77056
  const [
@@ -77018,7 +77060,7 @@ async function main() {
77018
77060
  ] = await Promise.all([
77019
77061
  import("./delete-Cx1BaI3O.mjs"),
77020
77062
  import("./list-BCMF7dGI.mjs"),
77021
- import("./resume-DQT_MK6A.mjs")
77063
+ import("./resume-D_K0QEl5.mjs")
77022
77064
  ]);
77023
77065
  sessionsYargs.option("path", {
77024
77066
  hidden: true
@@ -77055,7 +77097,7 @@ async function main() {
77055
77097
  Promise.resolve().then(() => list$2),
77056
77098
  Promise.resolve().then(() => _delete$1),
77057
77099
  Promise.resolve().then(() => update),
77058
- import("./set-C805heQS.mjs")
77100
+ import("./set-DzcR6sFr.mjs")
77059
77101
  ]);
77060
77102
  registerPreviewCreateCommand(previewYargs);
77061
77103
  registerPreviewListCommand(previewYargs);
@@ -77082,7 +77124,7 @@ async function main() {
77082
77124
  Promise.resolve().then(() => start),
77083
77125
  Promise.resolve().then(() => stop),
77084
77126
  Promise.resolve().then(() => _delete),
77085
- import("./set-CjTbueyB.mjs")
77127
+ import("./set-C5l116L7.mjs")
77086
77128
  ]);
77087
77129
  registerSiteStatusCommand(sitesYargs);
77088
77130
  registerSiteCreateCommand(sitesYargs);
@@ -77104,7 +77146,7 @@ async function main() {
77104
77146
  });
77105
77147
  },
77106
77148
  handler: async (argv) => {
77107
- const { commandHandler: wpCliCommandHandler } = await import("./wp-D0HZdudM.mjs");
77149
+ const { commandHandler: wpCliCommandHandler } = await import("./wp-CUKyZNTP.mjs");
77108
77150
  return wpCliCommandHandler(argv);
77109
77151
  }
77110
77152
  }).command({
@@ -77112,7 +77154,7 @@ async function main() {
77112
77154
  describe: false,
77113
77155
  // Hidden command
77114
77156
  handler: async () => {
77115
- const { commandHandler: eventsCommandHandler } = await import("./_events-C60cNJ1W.mjs");
77157
+ const { commandHandler: eventsCommandHandler } = await import("./_events-C2dFSpKE.mjs");
77116
77158
  return eventsCommandHandler();
77117
77159
  }
77118
77160
  }).demandCommand(1, __("You must provide a valid command")).strict();
@@ -1,7 +1,7 @@
1
1
  import { input } from "@inquirer/prompts";
2
2
  import { z as PROTOCOL_PREFIX, B as CLIENT_ID, d as Logger, L as LoggerError, E as DEFAULT_TOKEN_LIFETIME_MS } from "./well-known-paths-d6uuOzUp.mjs";
3
- import { A as AUTH_EVENTS } from "./certificate-manager-Dd4zv2_k.mjs";
4
- import { r as readAuthToken, A as AuthCommandLoggerAction, m as getAppLocale, o as openBrowser, g as getUserInfo, u as updateSharedConfig, n as emitCliEvent } from "./index-Ru6CUP6w.mjs";
3
+ import { A as AUTH_EVENTS } from "./certificate-manager-BMngpL-s.mjs";
4
+ import { r as readAuthToken, A as AuthCommandLoggerAction, m as getAppLocale, o as openBrowser, g as getUserInfo, u as updateSharedConfig, n as emitCliEvent } from "./index-odShRBgM.mjs";
5
5
  import { __, sprintf } from "@wordpress/i18n";
6
6
  const SCOPES = "global";
7
7
  const REDIRECT_URI = `${PROTOCOL_PREFIX}://auth`;
@@ -1,5 +1,5 @@
1
- import { A as AUTH_EVENTS } from "./certificate-manager-Dd4zv2_k.mjs";
2
- import { A as AuthCommandLoggerAction, r as readAuthToken, p as revokeAuthToken, u as updateSharedConfig, n as emitCliEvent } from "./index-Ru6CUP6w.mjs";
1
+ import { A as AUTH_EVENTS } from "./certificate-manager-BMngpL-s.mjs";
2
+ import { A as AuthCommandLoggerAction, r as readAuthToken, p as revokeAuthToken, u as updateSharedConfig, n as emitCliEvent } from "./index-odShRBgM.mjs";
3
3
  import { __ } from "@wordpress/i18n";
4
4
  import { d as Logger, L as LoggerError } from "./well-known-paths-d6uuOzUp.mjs";
5
5
  async function runCommand() {
package/dist/cli/main.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import "node:path";
3
- import "./index-Ru6CUP6w.mjs";
3
+ import "./index-odShRBgM.mjs";
4
4
  import "@wordpress/i18n";
5
5
  import "semver";
6
6
  import "yargs";
7
- import "./certificate-manager-Dd4zv2_k.mjs";
7
+ import "./certificate-manager-BMngpL-s.mjs";
@@ -3,7 +3,7 @@ import require$$1 from "https";
3
3
  import { createSecureContext } from "node:tls";
4
4
  import { domainToASCII } from "node:url";
5
5
  import httpProxy from "http-proxy";
6
- import { g as generateSiteCertificate, r as readCliConfig } from "./certificate-manager-Dd4zv2_k.mjs";
6
+ import { g as generateSiteCertificate, r as readCliConfig } from "./certificate-manager-BMngpL-s.mjs";
7
7
  let httpProxyServer = null;
8
8
  let httpsProxyServer = null;
9
9
  let isHttpProxyRunning = false;
@@ -1,6 +1,6 @@
1
1
  import { __ } from "@wordpress/i18n";
2
2
  import { c as chooseSessionForAction, l as listAiSessions, b as loadAiSession } from "./helpers-B-e5rgsh.mjs";
3
- import { runCommand as runCommand$1 } from "./index-D9syEMMz.mjs";
3
+ import { runCommand as runCommand$1 } from "./index-CkFXAp-n.mjs";
4
4
  import { L as LoggerError, d as Logger } from "./well-known-paths-d6uuOzUp.mjs";
5
5
  const logger = new Logger();
6
6
  async function runCommand(sessionIdOrPrefix, options = {}) {
@@ -45,8 +45,8 @@ var __callDispose = (stack, error, hasError) => {
45
45
  };
46
46
  import { SupportedPHPVersions } from "@php-wasm/universal";
47
47
  import { L as LoggerError, d as Logger, M as MINIMUM_WORDPRESS_VERSION, q as DEFAULT_WORDPRESS_VERSION } from "./well-known-paths-d6uuOzUp.mjs";
48
- import { r as readCliConfig, l as lockCliConfig, s as saveCliConfig, u as unlockCliConfig, g as generateSiteCertificate, e as SITE_EVENTS } from "./certificate-manager-Dd4zv2_k.mjs";
49
- import { V as ValidationError, t as SiteCommandLoggerAction, v as getSiteByFolder, w as getDomainNameValidationError, x as updateDomainInHosts, y as connectToDaemon, z as isServerRunning, B as stopWordPressServer, C as validatePhpVersion, D as runWpCliCommand, E as setupCustomDomain, F as startWordPressServer, G as updateSiteLatestCliPid, n as emitCliEvent, H as disconnectFromDaemon } from "./index-Ru6CUP6w.mjs";
48
+ import { r as readCliConfig, l as lockCliConfig, s as saveCliConfig, u as unlockCliConfig, g as generateSiteCertificate, h as SITE_EVENTS } from "./certificate-manager-BMngpL-s.mjs";
49
+ import { V as ValidationError, t as SiteCommandLoggerAction, v as getSiteByFolder, w as getDomainNameValidationError, x as updateDomainInHosts, y as connectToDaemon, z as isServerRunning, B as stopWordPressServer, C as validatePhpVersion, D as runWpCliCommand, E as setupCustomDomain, F as startWordPressServer, G as updateSiteLatestCliPid, n as emitCliEvent, H as disconnectFromDaemon } from "./index-odShRBgM.mjs";
50
50
  import { B as isValidWordPressVersion, C as isWordPressVersionAtLeast, x as validateAdminUsername, y as validateAdminEmail, a as arePathsEqual, z as encodePassword, b as getWordPressVersionUrl } from "./rewrite-wp-cli-post-content-CWC1GEL6.mjs";
51
51
  import { __, sprintf } from "@wordpress/i18n";
52
52
  function siteNeedsRestart(changes) {
@@ -1,5 +1,5 @@
1
- import { S as SNAPSHOT_EVENTS } from "./certificate-manager-Dd4zv2_k.mjs";
2
- import { q as normalizeHostname, P as PreviewCommandLoggerAction, s as setSnapshotInConfig, n as emitCliEvent } from "./index-Ru6CUP6w.mjs";
1
+ import { S as SNAPSHOT_EVENTS } from "./certificate-manager-BMngpL-s.mjs";
2
+ import { q as normalizeHostname, P as PreviewCommandLoggerAction, s as setSnapshotInConfig, n as emitCliEvent } from "./index-odShRBgM.mjs";
3
3
  import { __ } from "@wordpress/i18n";
4
4
  import { L as LoggerError, d as Logger } from "./well-known-paths-d6uuOzUp.mjs";
5
5
  async function runCommand(host, options) {
@@ -1,4 +1,4 @@
1
- import { A as AuthCommandLoggerAction, r as readAuthToken, g as getUserInfo } from "./index-Ru6CUP6w.mjs";
1
+ import { A as AuthCommandLoggerAction, r as readAuthToken, g as getUserInfo } from "./index-odShRBgM.mjs";
2
2
  import { __, sprintf } from "@wordpress/i18n";
3
3
  import { d as Logger, L as LoggerError } from "./well-known-paths-d6uuOzUp.mjs";
4
4
  async function runCommand() {
@@ -45,7 +45,7 @@ var __callDispose = (stack, error, hasError) => {
45
45
  };
46
46
  import { __ } from "@wordpress/i18n";
47
47
  import yargsParser from "yargs-parser";
48
- import { I as runGlobalWpCliCommand, v as getSiteByFolder, C as validatePhpVersion, H as disconnectFromDaemon, y as connectToDaemon, z as isServerRunning, J as sendWpCliCommand, D as runWpCliCommand } from "./index-Ru6CUP6w.mjs";
48
+ import { I as runGlobalWpCliCommand, v as getSiteByFolder, C as validatePhpVersion, H as disconnectFromDaemon, y as connectToDaemon, z as isServerRunning, J as sendWpCliCommand, D as runWpCliCommand } from "./index-odShRBgM.mjs";
49
49
  import { L as LoggerError, d as Logger } from "./well-known-paths-d6uuOzUp.mjs";
50
50
  const logger = new Logger();
51
51
  async function pipePHPResponse(response) {