stim 1.11.0 → 1.13.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 (82) hide show
  1. package/README.md +3 -1
  2. package/dist/{activity-BtG4Va9l.mjs → activity-DfVKZTEB.mjs} +44 -26
  3. package/dist/{android-BA2i_KAV.mjs → android-BHfAu2mf.mjs} +1 -1
  4. package/dist/{android-C1q4l523.mjs → android-CD8pr8Q2.mjs} +112 -54
  5. package/dist/{android-cas-DfJkwCXW.mjs → android-cas-B9Kv9aIy.mjs} +12 -10
  6. package/dist/{android-C4zG2Tuc.mjs → android-qx_31wJo.mjs} +414 -118
  7. package/dist/{app-install-DHut6JnV.mjs → app-install-CDFY2nUL.mjs} +1 -1
  8. package/dist/budget-E5o91NR1.mjs +1739 -0
  9. package/dist/{build-plan-CeAYgKAx.mjs → build-plan-BTa93o_r.mjs} +125 -107
  10. package/dist/{build-progress-CDwogz6R.mjs → build-progress-l7d-X-ZP.mjs} +76 -8
  11. package/dist/{cache-manifest-Pubfp8wV.mjs → cache-manifest-DWPF4RKJ.mjs} +1 -1
  12. package/dist/cache-manifest.mjs +1 -1
  13. package/dist/cdp-Dq_ypAlJ.mjs +115 -0
  14. package/dist/chrome-B5hWgQJS.mjs +61 -0
  15. package/dist/cli.mjs +17 -16
  16. package/dist/collector-run.mjs +15 -9
  17. package/dist/{command-output-D5z2_bcF.mjs → command-output-BIL7rlX7.mjs} +1 -1
  18. package/dist/{config-BEq0Qw_a.mjs → config-0jCcMM0E.mjs} +10 -1
  19. package/dist/created-devices-Cd558h31.mjs +37 -0
  20. package/dist/{dependency-state-r9UesA9a.mjs → dependency-state-DNN0yfx6.mjs} +1 -1
  21. package/dist/{deps-OF7CD5Dx.mjs → deps-2Wo81np9.mjs} +2 -2
  22. package/dist/{device-BwH2iI3O.mjs → device-Cf7vl-so.mjs} +7 -7
  23. package/dist/{device-lease-D83nqeMX.mjs → device-lease-CL9dZf73.mjs} +55 -6
  24. package/dist/{device-pool-DHj7cdPy.mjs → device-pool-MuoiyRcu.mjs} +4 -4
  25. package/dist/{device-remote-BQZSnnmE.mjs → device-remote-DT9ngZiD.mjs} +254 -579
  26. package/dist/{doctor-D8QdMRMf.mjs → doctor-D2iysNNH.mjs} +50 -20
  27. package/dist/{error-diagnostics-UYFSQwRy.mjs → error-diagnostics-BoiOhck8.mjs} +7 -7
  28. package/dist/{gc-COZteyiq.mjs → gc-eA-PRBX8.mjs} +1022 -131
  29. package/dist/{guide-NDvTmMi-.mjs → guide-BfZ0OmiP.mjs} +909 -132
  30. package/dist/{guide-status-CWvti2Lg.mjs → guide-status-BaMYu55M.mjs} +2 -2
  31. package/dist/{idle-NETbeNiQ.mjs → idle-DxLi5OkN.mjs} +43 -10
  32. package/dist/{in-use-DVhlSoyn.mjs → in-use-wYEaKQM9.mjs} +11 -7
  33. package/dist/{ios-CQLKpNfr.mjs → ios-CcfCeZ19.mjs} +103 -58
  34. package/dist/{ios-DArbmwer.mjs → ios-CmEzZiOj.mjs} +31 -22
  35. package/dist/{ios-device-CwDZo0X4.mjs → ios-device-BW-t_Lkv.mjs} +1 -1
  36. package/dist/{launch-verify-CuPDGXdr.mjs → launch-verify-CuJaBpEa.mjs} +33 -20
  37. package/dist/{logs-B44a1UeU.mjs → logs-DcSRbC2t.mjs} +12 -11
  38. package/dist/{merge-state-DDxS-XIZ.mjs → merge-state-ytFQCeh4.mjs} +38 -8
  39. package/dist/{metro-BWLOJ_Wr.mjs → metro-BPeY1YMh.mjs} +5 -5
  40. package/dist/{named-ports-Dc7neAlc.mjs → named-ports-n7tnJsI8.mjs} +78 -6
  41. package/dist/native-runtime-CiiFHt0e.mjs +74 -0
  42. package/dist/{ownership-D2xbLVoz.mjs → ownership-Bz2kETAS.mjs} +2 -2
  43. package/dist/{ownership-BiojdtAp.mjs → ownership-PUP4Dwai.mjs} +175 -217
  44. package/dist/page-BTu7I60K.mjs +29 -0
  45. package/dist/{ports-DwBaRFJs.mjs → ports-C5UutqpJ.mjs} +5 -5
  46. package/dist/{project-BXZzOABt.mjs → project-DGeclhvO.mjs} +55 -87
  47. package/dist/{reload-By9Dwsrt.mjs → reload-C-cV5yy_.mjs} +80 -21
  48. package/dist/remote-cache--aehr4Pr.mjs +526 -0
  49. package/dist/{server-bare-D_RK1RCj.mjs → server-bare-Bq8BpSIo.mjs} +1 -1
  50. package/dist/server-expo-BeYwP_Xy.mjs +2 -0
  51. package/dist/{server-expo-o6H5gcBc.mjs → server-expo-DUCg52-K.mjs} +2 -2
  52. package/dist/{settings-C0ugALSC.mjs → settings-ssVBToDR.mjs} +29 -17
  53. package/dist/{settings-B5oFZEri.mjs → settings-xB0Frkg6.mjs} +13 -4
  54. package/dist/settings.schema.json +74 -2
  55. package/dist/{simslim-CIR3IYJO.mjs → simslim-Bbg9UWrt.mjs} +13 -6
  56. package/dist/{slot-launch-rggO1Esw.mjs → slot-launch-BIWEW-wI.mjs} +4 -4
  57. package/dist/{spawn-claims-BJwXTMPt.mjs → spawn-claims-PT8aQpCa.mjs} +1 -1
  58. package/dist/{start-BSsf2tUs.mjs → start-BZhItkiL.mjs} +110 -18
  59. package/dist/{start-i8zc9VmS.mjs → start-Rw2GD3nV.mjs} +1 -1
  60. package/dist/{state-WGdIbi_d.mjs → state-DwAU2_-D.mjs} +15 -3
  61. package/dist/state-l1pYwOre.mjs +148 -0
  62. package/dist/{stats-DBYJ5bxL.mjs → stats-CaSwmsSZ.mjs} +4 -4
  63. package/dist/{stats-BAgJaLA4.mjs → stats-D8rUTPHd.mjs} +1 -1
  64. package/dist/{status-CitcBRsC.mjs → status-TJlL0HWo.mjs} +649 -116
  65. package/dist/{status-Q-WDEGCB.mjs → status-sszP4XKU.mjs} +130 -28
  66. package/dist/stim-desktop-CXt8-Z3J.mjs +40 -0
  67. package/dist/{stop-DIhrvu0B.mjs → stop-BZ2qMiBP.mjs} +50 -18
  68. package/dist/{stop-rst5mL14.mjs → stop-DskDKNTU.mjs} +2 -2
  69. package/dist/supervisor-run.mjs +11 -11
  70. package/dist/web-run.d.mts +22 -0
  71. package/dist/web-run.mjs +481 -0
  72. package/dist/web-sWXd5iek.mjs +394 -0
  73. package/dist/{worktree-DhxDTK44.mjs → worktree-3cBa-bQt.mjs} +1 -1
  74. package/dist/{worktree-KOjMX3zA.mjs → worktree-D4Do_XiQ.mjs} +229 -21
  75. package/dist/{worktree-BlizKDpZ.mjs → worktree-DeBQSVtR.mjs} +3 -1
  76. package/dist/{xcode-B5SPD--o.mjs → xcode-LM6A8cNZ.mjs} +7 -7
  77. package/package.json +5 -5
  78. package/dist/budget-De3P2rq_.mjs +0 -620
  79. package/dist/native-run-D7yB_AsB.mjs +0 -143
  80. package/dist/server-expo-B-CCUJZj.mjs +0 -2
  81. package/dist/workspace-process-lock-Cx74RSDZ.mjs +0 -57
  82. package/dist/workspaces-COD2xCz-.mjs +0 -1013
@@ -1,23 +1,24 @@
1
- import { g as loadConfig$1, l as getConcurrencyLimits, o as configCorruptRepair } from "./config-BEq0Qw_a.mjs";
1
+ import { _ as loadConfig$1, s as configCorruptRepair, u as getConcurrencyLimits } from "./config-0jCcMM0E.mjs";
2
2
  import { t as getExecutor } from "./exec-DK8KaVHK.mjs";
3
- import { D as workspaceDerivedData, S as sharedBuildCache } from "./metro-BWLOJ_Wr.mjs";
4
- import { D as makeTemporaryDirectory, E as filesystemDevice, a as dirtyFingerprintFiles, h as locallyKnownUpstream, k as temporaryRoot, m as listWorktrees, s as gitCommonDir, x as resolveSourceCheckout, y as repoRoot } from "./worktree-BlizKDpZ.mjs";
5
- import { a as detectIsExpo, n as appProjectProblem, o as findProjectRoot } from "./project-BXZzOABt.mjs";
6
- import { d as quotedPath, f as refuseNoProject, l as phaseLine, u as plural } from "./command-output-D5z2_bcF.mjs";
7
- import { T as fingerprintProject, h as listBuildLocks, x as diffFingerprintSources } from "./device-lease-D83nqeMX.mjs";
8
- import { C as hostSystemImageArch, T as listAdbDevices } from "./android-C4zG2Tuc.mjs";
9
- import { F as settingsLayers, H as compilerCacheFallbackMessage, L as unknownSettingKeys, N as settingOrigin, O as remoteAndroidSetting, P as settingShapeErrors, T as projectOptimizations, W as resolveOptimizations, a as SETTING_SHAPE_REMEDY, i as SETTINGS_WITH_RESOLVE_TIME_FALLBACK, j as resolveSettings, k as remoteIosSetting, n as PATH_SETTINGS, v as iosSimSlimProfileSetting, y as mergeSettingsLayers } from "./settings-B5oFZEri.mjs";
10
- import { h as POOL_SETTING_REMEDY, y as parkedMaxSetting } from "./ownership-BiojdtAp.mjs";
11
- import { O as hostMemoryPressureAdvice, k as readHostMemoryPressure, l as listAllIosSims } from "./ios-DArbmwer.mjs";
12
- import { o as listBuildSlots } from "./in-use-DVhlSoyn.mjs";
13
- import { L as ownerFromConfig, M as checkEasAuth$1, R as providerFromConfig, _ as easCliSupport, g as MIN_EAS_CLI_SIMULATOR_VERSION, s as readInstalledEasCliVersion, v as easCliUpgradeRemedy, z as resolveEasCliBin } from "./device-remote-BQZSnnmE.mjs";
3
+ import { C as sharedBuildCache, O as workspaceDerivedData } from "./metro-BPeY1YMh.mjs";
4
+ import { D as makeTemporaryDirectory, E as filesystemDevice, a as dirtyFingerprintFiles, h as locallyKnownUpstream, k as temporaryRoot, m as listWorktrees, s as gitCommonDir, x as resolveSourceCheckout, y as repoRoot } from "./worktree-DeBQSVtR.mjs";
5
+ import { a as findProjectRoot, n as appProjectProblem, r as detectIsExpo, s as isPackageResolvable } from "./project-DGeclhvO.mjs";
6
+ import { d as quotedPath, f as refuseNoProject, l as phaseLine, u as plural } from "./command-output-BIL7rlX7.mjs";
7
+ import { C as diffFingerprintSources, D as fingerprintProject, h as listBuildLocks } from "./device-lease-CL9dZf73.mjs";
8
+ import { D as listAdbDevices, E as hostSystemImageArch, a as androidHome, ct as parkedMaxSetting, rt as POOL_SETTING_REMEDY } from "./android-qx_31wJo.mjs";
9
+ import { F as settingsLayers, G as resolveOptimizations, L as unknownSettingKeys, N as settingOrigin, O as remoteAndroidSetting, P as settingShapeErrors, R as webSettings, T as projectOptimizations, U as compilerCacheFallbackMessage, a as SETTING_SHAPE_REMEDY, i as SETTINGS_WITH_RESOLVE_TIME_FALLBACK, j as resolveSettings, k as remoteIosSetting, n as PATH_SETTINGS, v as iosSimSlimProfileSetting, y as mergeSettingsLayers } from "./settings-xB0Frkg6.mjs";
10
+ import { O as hostMemoryPressureAdvice, k as readHostMemoryPressure, l as listAllIosSims } from "./ios-CmEzZiOj.mjs";
11
+ import { o as listBuildSlots } from "./in-use-wYEaKQM9.mjs";
12
+ import { i as findChrome, t as CHROME_INSTALL_REMEDY } from "./chrome-B5hWgQJS.mjs";
13
+ import { f as resolveEasCliBin, i as checkEasAuth$1, l as ownerFromConfig, u as providerFromConfig } from "./remote-cache--aehr4Pr.mjs";
14
+ import { D as MIN_EAS_CLI_SIMULATOR_VERSION, O as easCliSupport, k as easCliUpgradeRemedy, s as readInstalledEasCliVersion } from "./device-remote-DT9ngZiD.mjs";
14
15
  import { n as inspectStimVersions, t as compareStimVersions } from "./stim-installations-CINXy_su.mjs";
15
- import { a as liveOwnedDeviceCount, n as simslimIsOnPath, u as MIN_EAS_CLI_BUILD_DOWNLOAD_VERSION } from "./simslim-CIR3IYJO.mjs";
16
- import { n as budgetLine, r as inspectBudget } from "./budget-De3P2rq_.mjs";
17
- import { d as projectCmakeLauncher, g as androidPathRoomRemedy, h as androidPathRoomMessage, i as apkOutputsDir, m as androidPathRoom, r as resolveAndroidCompilerCache, t as readAndroidCasToolchain } from "./android-cas-DfJkwCXW.mjs";
18
- import { h as podInstallCommand, i as ccacheEnabled, o as detectXcodeMajor } from "./xcode-B5SPD--o.mjs";
19
- import { n as recordDoctorRun } from "./guide-status-CWvti2Lg.mjs";
20
- import { n as hasInstalledDependencies, r as installedNpmTreeIsValid, t as dependencyState } from "./dependency-state-r9UesA9a.mjs";
16
+ import { a as liveOwnedDeviceCount, d as MIN_EAS_CLI_BUILD_DOWNLOAD_VERSION, n as simslimIsOnPath } from "./simslim-Bbg9UWrt.mjs";
17
+ import { n as budgetLine, r as inspectBudget } from "./budget-E5o91NR1.mjs";
18
+ import { _ as androidPathRoomRemedy, a as apkOutputsDir, f as projectCmakeLauncher, g as androidPathRoomMessage, h as androidPathRoom, i as androidSdkRefusal, r as resolveAndroidCompilerCache, t as readAndroidCasToolchain } from "./android-cas-B9Kv9aIy.mjs";
19
+ import { h as podInstallCommand, i as ccacheEnabled, o as detectXcodeMajor } from "./xcode-LM6A8cNZ.mjs";
20
+ import { n as recordDoctorRun } from "./guide-status-BaMYu55M.mjs";
21
+ import { n as hasInstalledDependencies, r as installedNpmTreeIsValid, t as dependencyState } from "./dependency-state-DNN0yfx6.mjs";
21
22
  import { existsSync, lstatSync, readFileSync, readdirSync, realpathSync, rmSync } from "node:fs";
22
23
  import { InvalidArgumentError } from "commander";
23
24
  import { existsSync as existsSync$1, lstatSync as lstatSync$1, mkdirSync as mkdirSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, realpathSync as realpathSync$1, renameSync as renameSync$1, rmSync as rmSync$1, writeFileSync as writeFileSync$1 } from "fs";
@@ -845,6 +846,15 @@ function checkCcacheConflict(podfileSource, podfileProperties) {
845
846
  if (!ccacheEnabled(podfileProperties)) return null;
846
847
  return finding("cost", "ccache is enabled, so Stim leaves Xcode compilation caching off", "The ccache launcher script is what disables explicitly built modules, which compilation caching requires -- so enabling both tends to mean neither works. Stim will not add its compilation-cache settings to a build whose project has apple.ccacheEnabled=true, and in its default configuration ccache hashes the working directory and every absolute include path, so it misses across worktrees. (Stim relocates ccache itself on Android, where it drives the compile and can set CCACHE_BASEDIR and CCACHE_NOHASHDIR; the Podfile launcher script here is the project's, not Stim's.)", "Pick one, and on Xcode 26 the compilation cache is the one that survives a different workspace path -- Stim supplies it on its own builds as soon as ccache is off. Turn it off where the value comes FROM: on Expo that is the expo-build-properties plugin in the app config (ios.ccacheEnabled), because prebuild rewrites ios/Podfile.properties.json from it; on a bare project edit ios/Podfile.properties.json directly. Then re-run pod install (or let `stim ios` do it).");
847
848
  }
849
+ function checkChrome({ usesWeb, chrome = findChrome }) {
850
+ if (!usesWeb() || chrome()) return null;
851
+ return finding("cost", "No Chrome is installed, so `stim web` cannot open this app", "`stim web` drives the installed Google Chrome or Chromium with a Stim-owned profile, and found neither in /Applications, ~/Applications, Program Files or on PATH. This project renders on the web (web.url is set, app.json lists the web platform, or react-native-web is installed).", CHROME_INSTALL_REMEDY);
852
+ }
853
+ function projectUsesWeb(projectRoot, settings, appConfig, platform) {
854
+ if (platform) return false;
855
+ const platforms = (appConfig?.expo ?? appConfig)?.platforms;
856
+ return webSettings(settings).url !== null || Array.isArray(platforms) && platforms.includes("web") || isPackageResolvable(projectRoot, "react-native-web");
857
+ }
848
858
  function checkCcacheInstalled(onPath) {
849
859
  if (onPath) return null;
850
860
  return finding("cost", "ccache is not on PATH, so Android C++ recompiles in every worktree", "Stim resolves the launcher with a PATH lookup for `ccache` -- the same lookup the build itself uses -- and found nothing, so it passes no CMAKE_C_COMPILER_LAUNCHER / CMAKE_CXX_COMPILER_LAUNCHER to Gradle and every AGP CMake task compiles without one. Those tasks are uncacheable by Gradle, so not one C++ object crosses a worktree. Measured on trailhead (arm64, fresh worktree): 49.6s without the launcher against 34.2s with it.", "brew install ccache, then delete android/app/.cxx and node_modules/**/android/.cxx once so CMake reconfigures with the launcher. The shell that runs Stim must have the install location on PATH -- agent shells often lack /opt/homebrew/bin.");
@@ -954,7 +964,7 @@ function checkXcodeEnvLineEndings(projectRoot, platform, host) {
954
964
  if (!content.includes("\r")) return null;
955
965
  return finding("cost", "ios/.xcode.env has CRLF line endings", "An EAS build uploads the working-tree bytes of ios/.xcode.env, and Xcode sources that file with sh on the build worker, where each carriage return becomes part of the line and the build fails with `: command not found`. On Windows the usual cause is core.autocrlf=true rewriting the file at checkout.", "Run `git config core.autocrlf input` then `git checkout -- ios/.xcode.env`, or add `ios/.xcode.env text eol=lf` to .gitattributes and check the file out again.");
956
966
  }
957
- function runDoctor(projectRoot, { readFile = readFileSync$1, xcodeMajor = null, easAuth = checkEasAuth$1, concurrency = getConcurrencyLimits, liveDevices = null, activeBuilds = null, remoteEnv = process.env, lookupAgentDevice = null, lookupEasCli = null, lookupSimSlim = null, memoryPressure = readHostMemoryPressure, lookupCcache = null, platform, host = process.platform } = {}) {
967
+ function runDoctor(projectRoot, { readFile = readFileSync$1, xcodeMajor = null, easAuth = checkEasAuth$1, concurrency = getConcurrencyLimits, liveDevices = null, activeBuilds = null, remoteEnv = process.env, lookupAgentDevice = null, lookupEasCli = null, lookupSimSlim = null, memoryPressure = readHostMemoryPressure, lookupCcache = null, lookupChrome, platform, host = process.platform } = {}) {
958
968
  const localIos = platform !== "android" && host === "darwin";
959
969
  const read = (rel) => {
960
970
  const p = join(projectRoot, rel);
@@ -1061,6 +1071,11 @@ function runDoctor(projectRoot, { readFile = readFileSync$1, xcodeMajor = null,
1061
1071
  localIos && optimizations?.ios.compilationCache ? checkCcacheConflict(podfile, podfileProperties) : null,
1062
1072
  ...platform === "ios" || optimizations?.android.compilerCache !== "ccache" ? [] : androidCcacheFindings(projectRoot, platform, lookupCcache),
1063
1073
  checkAndroidPathRoom(projectRoot, platform, host),
1074
+ checkAndroidSdk(projectRoot, platform),
1075
+ checkChrome({
1076
+ usesWeb: () => projectUsesWeb(projectRoot, projectSettings, appConfig, platform),
1077
+ chrome: lookupChrome
1078
+ }),
1064
1079
  remoteBuildCache ? checkBuildCacheProvider(appConfig, sdkMajor, isExpo, dynamicConfig) : null,
1065
1080
  easFinding,
1066
1081
  easBuildDownloadFinding,
@@ -1089,6 +1104,21 @@ function checkAndroidPathRoom(projectRoot, platform, host, hostArch = process.ar
1089
1104
  ...finding("cost", "The project path leaves no room for Android native object paths", `${androidPathRoomMessage(room)} \`stim android\` refuses to build here with STIM_PATH_TOO_LONG, because Gradle would fail deep inside ninja instead.`, androidPathRoomRemedy(room))
1090
1105
  };
1091
1106
  }
1107
+ function checkAndroidSdk(projectRoot, platform) {
1108
+ const androidDir = join(projectRoot, "android");
1109
+ if (platform === "ios" || platform !== "android" && !existsSync$1(androidDir)) return null;
1110
+ const sdkPath = androidHome();
1111
+ const refusal = androidSdkRefusal({
1112
+ sdkPath,
1113
+ sdkExists: existsSync$1(sdkPath),
1114
+ hasLocalProperties: existsSync$1(join(androidDir, "local.properties"))
1115
+ });
1116
+ if (!refusal) return null;
1117
+ return {
1118
+ code: "android-sdk-missing",
1119
+ ...finding("cost", "No Android SDK was found", `${refusal.reason} \`stim android\` refuses with ${refusal.code} before Gradle runs.`, refusal.remedy)
1120
+ };
1121
+ }
1092
1122
  function androidCcacheFindings(projectRoot, platform, lookupCcache) {
1093
1123
  if (platform !== "android" && !existsSync$1(join(projectRoot, "android"))) return [];
1094
1124
  const onPath = lookupCcache ? lookupCcache() : ccacheIsOnPath();
@@ -1341,7 +1371,7 @@ function doctorSuccessLines(platform, stim, budget = null) {
1341
1371
  }
1342
1372
  if (platform !== "ios") {
1343
1373
  lines.push("", "Android");
1344
- lines.push(phaseLine("setup", "warm state"));
1374
+ lines.push(phaseLine("setup", "Android SDK, warm state"));
1345
1375
  lines.push(phaseLine("caches", "Metro, Gradle, ccache, build provider"));
1346
1376
  lines.push(phaseLine("devices", "remote device"));
1347
1377
  }
@@ -1,12 +1,12 @@
1
- import { R as deviceSlotKey, f as getProject, z as deviceSlotPlatforms } from "./config-BEq0Qw_a.mjs";
1
+ import { B as deviceSlotPlatforms, p as getProject, z as deviceSlotKey } from "./config-0jCcMM0E.mjs";
2
2
  import { t as getExecutor } from "./exec-DK8KaVHK.mjs";
3
- import { P as withDirLock, m as readWorkspaceState$1, s as resolveProjectMetro } from "./metro-BWLOJ_Wr.mjs";
4
- import { d as readWorkspaceLaunches } from "./state-WGdIbi_d.mjs";
5
- import { v as launchErrorPreview } from "./command-output-D5z2_bcF.mjs";
6
- import { a as parseLease, n as fileLeaseIo, t as deviceLeasePath } from "./device-lease-D83nqeMX.mjs";
7
- import { c as androidToolCwd, i as androidHome } from "./android-C4zG2Tuc.mjs";
3
+ import { F as withDirLock, c as resolveProjectMetro, h as readWorkspaceState$1 } from "./metro-BPeY1YMh.mjs";
4
+ import { f as readWorkspaceLaunches } from "./state-DwAU2_-D.mjs";
5
+ import { v as launchErrorPreview } from "./command-output-BIL7rlX7.mjs";
6
+ import { a as parseLease, n as fileLeaseIo, t as deviceLeasePath } from "./device-lease-CL9dZf73.mjs";
7
+ import { a as androidHome, l as androidToolCwd } from "./android-qx_31wJo.mjs";
8
8
  import { r as deviceConsoleLevel } from "./ios-device-BiOsSVzd.mjs";
9
- import { n as parseLogcatLine, t as androidClockOffset } from "./android-BA2i_KAV.mjs";
9
+ import { n as parseLogcatLine, t as androidClockOffset } from "./android-BHfAu2mf.mjs";
10
10
  import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, statSync, unlinkSync, writeFileSync } from "node:fs";
11
11
  import { attachExpoErrorContext, readLogRecords, sortByTs } from "@stim-cli/core/state";
12
12
  import { basename, dirname, join, resolve, sep } from "node:path";