stim 1.31.0 → 1.33.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 (169) hide show
  1. package/dist/{acquire-artifact-P84h3ssa.mjs → acquire-artifact-DTh_LxrE.mjs} +2 -2
  2. package/dist/{act-lcOIEy32.mjs → act-Cur4YKtK.mjs} +74 -25
  3. package/dist/{activity-Dw4N_RFe.mjs → activity-C8kBq9w0.mjs} +6 -6
  4. package/dist/{agent-device-usage-output-Boie2yB-.mjs → agent-device-usage-output-BTRaK_up.mjs} +5 -5
  5. package/dist/{android-BeeC15Ve.mjs → android-B2DSKg-A.mjs} +2 -2
  6. package/dist/{android-DhiWSOFU.mjs → android-BL-QqHjc.mjs} +87 -53
  7. package/dist/{android-aIuJZoDu.mjs → android-D5mCdVl2.mjs} +5 -5
  8. package/dist/{android-DsEj2CCs.mjs → android-Iq0M2t2d.mjs} +27 -15
  9. package/dist/{android-cas-CbumHXIq.mjs → android-cas-Dhcjkys1.mjs} +4 -4
  10. package/dist/android-cas-compiler.mjs +1 -1
  11. package/dist/android-image-DFk26aY6.mjs +254 -0
  12. package/dist/{android-project-CCEQyYJK.d.mts → android-project-BDlPnfmL.d.mts} +1 -1
  13. package/dist/api.d.mts +2 -1
  14. package/dist/api.mjs +28 -28
  15. package/dist/{apk-signed-tail-B9Usseps.mjs → apk-signed-tail-CPpA-3vu.mjs} +2 -2
  16. package/dist/{artifact-ta3xA0c4.mjs → artifact-BMjubIP2.mjs} +13 -13
  17. package/dist/{artifact-Cr34-Yyy.mjs → artifact-BufzdGbT.mjs} +34 -21
  18. package/dist/{artifact-platform-BO2Uvk_A.mjs → artifact-platform-DqCWUieN.mjs} +1 -1
  19. package/dist/{auto-placement-DtTRG0rk.mjs → auto-placement-D7P98glJ.mjs} +11 -9
  20. package/dist/{browser-web-DuULNZrS.mjs → browser-web-C74et-Nv.mjs} +15 -15
  21. package/dist/{build-BpFFbdXD.mjs → build-DFBGWOTc.mjs} +23 -23
  22. package/dist/{build-cache-BsKim4V7.mjs → build-cache-Cqj4FGnX.mjs} +20 -8
  23. package/dist/{build-plan-DH1rT11x.mjs → build-plan-T3Hi24ax.mjs} +7 -7
  24. package/dist/{cache-manifest-CfiEny4T.mjs → cache-manifest-8JX9S1QJ.mjs} +1 -1
  25. package/dist/cache-manifest.mjs +1 -1
  26. package/dist/{ccache-DVDO2ocE.mjs → ccache-BXtzEL6M.mjs} +34 -24
  27. package/dist/{cdp-C3svvXiE.mjs → cdp-C216kOAn.mjs} +1 -1
  28. package/dist/{chrome-DyDWurWG.mjs → chrome-C8sC5tdl.mjs} +1 -1
  29. package/dist/{cli-C0jjwTuM.mjs → cli-B2YSjc9s.mjs} +20 -20
  30. package/dist/cli.mjs +1 -1
  31. package/dist/{client-DhJOvSvh.mjs → client-0_Mnfz0a.mjs} +29 -9
  32. package/dist/collector-run.mjs +7 -7
  33. package/dist/{command-output-VrXd6qPX.mjs → command-output-DWI9tGPU.mjs} +1 -1
  34. package/dist/{config-D5qNWJEP.mjs → config-BW0fAtoK.mjs} +256 -246
  35. package/dist/{dependencies-DIU-5rnG.mjs → dependencies-CgvBZbXD.mjs} +39 -39
  36. package/dist/{dependency-state-DZVln1P9.mjs → dependency-state-mL5g4H6K.mjs} +2 -2
  37. package/dist/{detached-entry-BPlSaCwC.mjs → detached-entry-tfrgGVWb.mjs} +1 -1
  38. package/dist/{dev-client-DeAg0fso.mjs → dev-client-ChsHwgrn.mjs} +2 -2
  39. package/dist/{device-C2WsPgFt.mjs → device-B0htCt2u.mjs} +13 -13
  40. package/dist/{device-DuNLOlR6.mjs → device-DOehZpyx.mjs} +11 -11
  41. package/dist/{device-android-BjhH0Ru3.mjs → device-android-B8TQP5AX.mjs} +10 -10
  42. package/dist/{device-capacity-Du5wBTNJ.mjs → device-capacity-BAkETfIl.mjs} +9 -9
  43. package/dist/device-host-worker.mjs +58 -17
  44. package/dist/{device-ios-CUYUhSYO.mjs → device-ios-DFaYFdar.mjs} +9 -9
  45. package/dist/{device-lease-run-CHXQEn-7.mjs → device-lease-run-DpiCnRbZ.mjs} +5 -5
  46. package/dist/{device-pool-kUHO7MHO.mjs → device-pool-DP4sCeCC.mjs} +3 -3
  47. package/dist/{device-provision-e7bKS7lx.mjs → device-provision-CnNOIxCF.mjs} +10 -10
  48. package/dist/{doctor-BGcsAgAV.mjs → doctor-9GrW5YSP.mjs} +30 -17
  49. package/dist/{doctor-B6kIVgU9.mjs → doctor-C6Xn96RS.mjs} +1 -1
  50. package/dist/{doctor-fingerprint-o7ZI9YLn.mjs → doctor-fingerprint-DqWvIhMb.mjs} +1 -1
  51. package/dist/doctor-fingerprint.mjs +1 -1
  52. package/dist/{doctor-hva3sd9f.mjs → doctor-nRLBoajo.mjs} +54 -25
  53. package/dist/{doctor-watchman-DJY550yz.mjs → doctor-watchman-CDhpC3Oh.mjs} +5 -5
  54. package/dist/{eas-build-CBFgseh1.mjs → eas-build-CpJ4h9tG.mjs} +4 -4
  55. package/dist/{eas-fallback-DFXdz4d6.mjs → eas-fallback-B3z5nL1g.mjs} +6 -6
  56. package/dist/{eas-session-ledger-aFBLTZr2.mjs → eas-session-ledger-Bspy-VJQ.mjs} +6 -6
  57. package/dist/{error-diagnostics-CCsq_3uG.mjs → error-diagnostics-DoLGklYX.mjs} +10 -10
  58. package/dist/{exec-aULwtNly.mjs → exec-CGuDzt40.mjs} +103 -103
  59. package/dist/{gc-DASUa3Z_.mjs → gc-BWoOp9q7.mjs} +2 -2
  60. package/dist/{gc-B0K4d_PL.mjs → gc-DolXpMSB.mjs} +25 -54
  61. package/dist/{guide-Civo5-zV.mjs → guide-CmZB0GtP.mjs} +194 -50
  62. package/dist/{hosted-android-CH1Sm4wo.mjs → hosted-android-ByG-ICuh.mjs} +4 -4
  63. package/dist/{hosted-client-5ur3YpxY.mjs → hosted-client-D19Lv0tg.mjs} +6 -5
  64. package/dist/{hosted-logs-BYg4yeti.mjs → hosted-logs-D7anR6Dk.mjs} +17 -11
  65. package/dist/{hosted-logs-sync-BPe8xnMu.mjs → hosted-logs-sync-D182b1eJ.mjs} +5 -5
  66. package/dist/{hosted-macos-BagT0Gn3.mjs → hosted-macos-D0DDQxvl.mjs} +6 -6
  67. package/dist/{hosted-native-kaR4nUHk.mjs → hosted-native-BzXIy97W.mjs} +15 -11
  68. package/dist/{idle-shutdown-BWHQ7mQG.mjs → idle-shutdown-6i8CHoNq.mjs} +6 -6
  69. package/dist/{ios-BKR-Dq46.mjs → ios-AdhPKXO3.mjs} +8 -8
  70. package/dist/{ios-CdAV4-1E.mjs → ios-BdZdNsAj.mjs} +6 -6
  71. package/dist/{ios-CsRVik64.mjs → ios-Qam0bT9n.mjs} +1 -1
  72. package/dist/{ios-DUL68MI5.mjs → ios-dbXzjTxx.mjs} +28 -28
  73. package/dist/{ios-device-CiBA-er9.mjs → ios-device-DLdEDWJj.mjs} +1 -1
  74. package/dist/{ios-device-Dz8gFZ0K.mjs → ios-device-DXbHZfFe.mjs} +3 -3
  75. package/dist/{ios-project-Br1tVYWX.mjs → ios-project-BzfLigfh.mjs} +7 -7
  76. package/dist/{ios-signing-BJzvDPfU.mjs → ios-signing-D-tSX1iF.mjs} +2 -2
  77. package/dist/{ios-state-BEIJRJ7P.mjs → ios-state-CWsBysyN.mjs} +1 -1
  78. package/dist/{js-swap-BfG8XpyS.mjs → js-swap-EDVOJmqx.mjs} +6 -6
  79. package/dist/{launch-CrGndh8T.mjs → launch-CKHpthsw.mjs} +20 -20
  80. package/dist/{lightened-DZ9Ip0T3.mjs → lightened-Cv4ToJRX.mjs} +5 -5
  81. package/dist/{logs-C-hfMsxK.mjs → logs-DCQ3_tGS.mjs} +6 -6
  82. package/dist/{logs-DpIKWT3A.mjs → logs-IagR9dWI.mjs} +7 -7
  83. package/dist/{macos-DZ9ZSolN.mjs → macos-Ch7vuM-G.mjs} +22 -22
  84. package/dist/{macos-DNmKwfDy.mjs → macos-pc0aVVbN.mjs} +1 -1
  85. package/dist/macos-run.mjs +1 -1
  86. package/dist/maintenance-run.mjs +6 -6
  87. package/dist/{metro-mKHEMO-a.mjs → metro-B5PVz0Wv.mjs} +4 -4
  88. package/dist/{metro-request-RDhyx85c.mjs → metro-request-2LmFpC1z.mjs} +9 -3
  89. package/dist/{named-ports-B0hCk2v-.mjs → named-ports-CA0nB9Yw.mjs} +3 -3
  90. package/dist/{native-android-DExhFqR6.mjs → native-android-B3CEDq4R.mjs} +29 -19
  91. package/dist/{native-gradle-artifact-inputs-Bcmbdc23.mjs → native-gradle-artifact-inputs-BLnO2hHR.mjs} +5 -5
  92. package/dist/{native-runtime-D4qgnjK_.mjs → native-runtime-e1OU8gEN.mjs} +6 -6
  93. package/dist/{native-source-D1AzWiuP.mjs → native-source-ChAGj7R1.mjs} +1 -1
  94. package/dist/{native-xcode-inputs-EWma1lXh.mjs → native-xcode-inputs-DL3ETb8s.mjs} +3 -3
  95. package/dist/{native-xcode-ios-Y6rzmWTc.mjs → native-xcode-ios-D4e8k2Jy.mjs} +17 -17
  96. package/dist/offload-worker.d.mts +3 -1
  97. package/dist/offload-worker.mjs +37 -23
  98. package/dist/{operation-exec-Dp4FuIGR.mjs → operation-exec-DKlBcKAL.mjs} +1 -1
  99. package/dist/{ownership-CCfiBfOP.mjs → ownership-hC7xvvxF.mjs} +3 -3
  100. package/dist/{page-CQJlcj3x.mjs → page-Dj8IqvGM.mjs} +2 -2
  101. package/dist/{phone-reverses-Drj5QQCh.mjs → phone-reverses-rvyxW1Fl.mjs} +4 -4
  102. package/dist/{placement-log-CFT8SnlS.mjs → placement-log-nnGnu8mo.mjs} +1 -1
  103. package/dist/{plan-placement-DhKCH_wF.mjs → plan-placement-D3JD-T-K.mjs} +6 -6
  104. package/dist/{ports-BNtJ5DCj.mjs → ports-CZJJfJ8Q.mjs} +3 -3
  105. package/dist/{prebuild-D0hvmO4j.mjs → prebuild-Bhs7TTcz.mjs} +12 -12
  106. package/dist/{project-DCLkDM8C.mjs → project-DWEXiBA9.mjs} +16 -16
  107. package/dist/{pull-request-BzLmzAIQ.mjs → pull-request-BpMTNkMB.mjs} +2 -2
  108. package/dist/pull-requests.mjs +1 -1
  109. package/dist/{react-native-android-Dp7vctEA.mjs → react-native-android-C6Y270GS.mjs} +37 -33
  110. package/dist/{react-native-build-vK2lFYfN.mjs → react-native-build-DaPfzf_e.mjs} +10 -10
  111. package/dist/{react-native-doctor-BtWzwZHU.mjs → react-native-doctor-DGMPxkPS.mjs} +6 -6
  112. package/dist/{react-native-ios-DW1Ax3Yv.mjs → react-native-ios-dX48_92n.mjs} +21 -17
  113. package/dist/{recordings-BWnIlhZH.mjs → recordings-AKZfsW2W.mjs} +1 -1
  114. package/dist/{registration-BwCe64PH.mjs → registration-DKjJGQ6p.mjs} +1 -1
  115. package/dist/{reload-BS_ntVV_.mjs → reload-BGwblBJ9.mjs} +1 -1
  116. package/dist/{reload-B-d7-CsI.mjs → reload-DsOByDfy.mjs} +17 -17
  117. package/dist/{remote-DScVlaMz.mjs → remote-D0uJZ76R.mjs} +9 -9
  118. package/dist/{result-Epkl6gyG.mjs → result-DuimMZKJ.mjs} +24 -20
  119. package/dist/{run-2CHAJ9Oj.mjs → run-N-BbRxnC.mjs} +2 -2
  120. package/dist/{selection-C95m--1_.mjs → selection-xS50Mt0V.mjs} +5 -4
  121. package/dist/{server-bare-CFyVFZXJ.mjs → server-bare-BTlICuaX.mjs} +2 -2
  122. package/dist/{server-command-B1gDRJB2.mjs → server-command-BC0EgMfY.mjs} +5 -5
  123. package/dist/{server-expo-CP4dURQp.mjs → server-expo-15RjL0ir.mjs} +3 -3
  124. package/dist/server-expo-gYIypb0-.mjs +2 -0
  125. package/dist/{settings-C6UTYW2K.mjs → settings-B5IBDfTx.mjs} +4 -4
  126. package/dist/{settings-CjTRNCi3.mjs → settings-CuP55ieT.mjs} +2 -2
  127. package/dist/{settings-payload-zf5EnCTg.mjs → settings-payload-BIGGQ3or.mjs} +5 -5
  128. package/dist/{settings-write-Fe0K6BeC.mjs → settings-write-D85j8mej.mjs} +6 -6
  129. package/dist/settings.schema.json +40 -2
  130. package/dist/{simslim-93xmPh-d.mjs → simslim-DKdJx0LL.mjs} +2 -2
  131. package/dist/{slot-launch-B4MHzVX2.mjs → slot-launch-D4oREwhx.mjs} +6 -6
  132. package/dist/{stage-DDrnM0CY.mjs → stage-DKC6tDXu.mjs} +2 -2
  133. package/dist/{start-LSwIFlBv.mjs → start-BsEV4S-s.mjs} +12 -12
  134. package/dist/{start-BXl5tkv8.mjs → start-DfPSLc__.mjs} +1 -1
  135. package/dist/{state-CM_HvvkS.mjs → state-CtmYTRWm.mjs} +4 -4
  136. package/dist/{state-CiflgxTP.mjs → state-DSOUqO-o.mjs} +2 -2
  137. package/dist/{stats-EgpYD536.mjs → stats-ByEUblPr.mjs} +5 -5
  138. package/dist/{stats-report-B86Cv7Uc.mjs → stats-report-BVRCqwWA.mjs} +1 -1
  139. package/dist/{status-BLDvhatv.mjs → status-C6hLlDqW.mjs} +37 -28
  140. package/dist/{status-GQ-JqvRi.mjs → status-DTFhDnd1.mjs} +1 -1
  141. package/dist/{status-DBMD7ZQT.mjs → status-FP1MH9qn.mjs} +1 -1
  142. package/dist/{status-watch-BwG4lJ1q.mjs → status-watch-D8s823CZ.mjs} +5 -5
  143. package/dist/status-worker.mjs +1 -1
  144. package/dist/{stim-desktop-1XxET4S8.mjs → stim-desktop-_WTria-r.mjs} +2 -2
  145. package/dist/{stop-4SAV_RR8.mjs → stop-5LKfVv-0.mjs} +2 -2
  146. package/dist/{stop-WyrZQuX6.mjs → stop-BVI2-L7s.mjs} +16 -16
  147. package/dist/{stop-BfNhzvXO.mjs → stop-CpTy6bod.mjs} +5 -5
  148. package/dist/supervisor-run.mjs +137 -45
  149. package/dist/{support-Cffz6_Ft.mjs → support-CqyWfZZI.mjs} +18 -8
  150. package/dist/{support-Cs24xRQa.mjs → support-D8OH0z98.mjs} +9 -9
  151. package/dist/{swiftpm-artifact-inputs-yp8D5LE4.mjs → swiftpm-artifact-inputs-uq5oV7xR.mjs} +4 -4
  152. package/dist/{swiftpm-macos-D0CzQtpp.mjs → swiftpm-macos-BuhqYB3n.mjs} +11 -11
  153. package/dist/{toolchain-BEra9AIX.mjs → toolchain-D_jotUG7.mjs} +1 -1
  154. package/dist/{toolchain-CGdgD4x4.mjs → toolchain-s5ZmG42Z.mjs} +25 -14
  155. package/dist/{trigger-CfnOfpDd.mjs → trigger-BtB4kbe0.mjs} +2 -2
  156. package/dist/trigger-D8B7QR0q.mjs +2 -0
  157. package/dist/{warm-progress-_aTMvkIH.mjs → warm-progress-q11Vdvhh.mjs} +6 -6
  158. package/dist/{web-BE89ONcc.mjs → web-DwYCTFdh.mjs} +9 -9
  159. package/dist/web-cCfM8kwV.mjs +2 -0
  160. package/dist/web-run.mjs +8 -8
  161. package/dist/windows-report.mjs +1 -1
  162. package/dist/{workspace-state-3bF4TB8P.mjs → workspace-state-BdZ-QgmB.mjs} +3 -3
  163. package/dist/{workspaces-BNEyJ1B_.mjs → workspaces-B3ahAHZc.mjs} +18 -17
  164. package/dist/{worktree-BTrii9e_.mjs → worktree-BhsML6GV.mjs} +77 -31
  165. package/dist/{worktree-DB3Ypdj6.mjs → worktree-CrjsPIs2.mjs} +1 -1
  166. package/package.json +7 -7
  167. package/dist/server-expo-D3k9mvP8.mjs +0 -2
  168. package/dist/trigger-DBZ-GBrl.mjs +0 -2
  169. package/dist/web-DQPxvFVD.mjs +0 -2
@@ -1,5 +1,5 @@
1
- import { l as WorkspaceProcessCleanupError } from "./exec-aULwtNly.mjs";
2
- import { I as waitForSharedBuild } from "./activity-Dw4N_RFe.mjs";
1
+ import { f as WorkspaceProcessCleanupError } from "./exec-CGuDzt40.mjs";
2
+ import { I as waitForSharedBuild } from "./activity-C8kBq9w0.mjs";
3
3
  import { rmSync } from "node:fs";
4
4
  //#region src/engine/artifact-lifecycle.ts
5
5
  async function runArtifactLifecycle(phases) {
@@ -1,33 +1,34 @@
1
- import { S as process_identity_exports, d as workspaceProcessLockError, l as WorkspaceProcessCleanupError, n as isTimeoutError, t as getExecutor, u as withWorkspaceProcessLock } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, j as workspaceStateFile$1, k as workspaceLogsDir$1, r as readWorkspaceState$1, u as workspaceLastUsed, w as workspaceAgentDeviceDir } from "./workspace-state-3bF4TB8P.mjs";
3
- import { F as formatBytes, I as isOnMountedVolume, K as projectDeviceSlots, L as listMountedVolumes, P as directorySizeAsync, R as measuredDirectorySizeAsync, m as getProject, v as loadConfig$1 } from "./config-D5qNWJEP.mjs";
4
- import { o as formatLongDuration, u as plural } from "./command-output-VrXd6qPX.mjs";
5
- import { c as gitQuiet, l as gitQuietAsync, n as runOperationFileQuiet, r as childEnvironment } from "./operation-exec-Dp4FuIGR.mjs";
6
- import { At as listWorktrees, Et as hasUncommittedWorkAsync, Ft as matchWorktreeEntry, Kt as sourceCheckoutOf, O as maintenanceKeepSetting, Pt as lockReason, Ut as resolveFullRefAsync, Wt as resolveSourceCheckoutAsync, X as resolveProjectSettings, Xt as worktreeLockAsync, Z as resolveProjectSettingsAsync, bt as dirtyPathsAsync, h as deviceIdleShutdownMinutesSetting, it as settingValueAt, jt as listWorktreesAsync, mt as LOCKED_REASON, qt as unpushedCommitsAsync, sn as removeTemporaryEntryAsync, wt as hasPopulatedSubmodulesAsync } from "./settings-C6UTYW2K.mjs";
7
- import { P as readRemoteSession, i as findProjectRoot$1 } from "./project-DCLkDM8C.mjs";
8
- import { A as getAvdNameForSerialAsync, L as listAvds, N as listAdbDevices, P as listAdbDevicesAsync, R as listAvdsAsync, U as ownedAvdDirectory, k as getAvdNameForSerial, q as ownedAvdSerialResolverAsync, xt as readParked } from "./android-DsEj2CCs.mjs";
9
- import { c as pidExists } from "./metro-mKHEMO-a.mjs";
10
- import { A as diskPressureLevel, G as planCacheEmptying, N as lowestFree, P as protectWindowMs, X as collectGradleVersions, Z as deleteGradleVersion, Zn as collectMemoryReport, _ as resolveBudget, at as DEVICE_LIST_TIMEOUT_MS, ct as collectParkedSims, d as enforceBudget, dr as pruneCache, dt as deleteProjectDevices, j as levelFloors, lt as deleteParkedAvds, mt as deviceSweepIsScoped, nr as memorySweepIsScoped, nt as waitForGradleExit, or as stopIdleGradleDaemons, p as machineNumber, sr as phase, st as collectParkedAvds, u as cacheLabel, ur as discoverCaches, ut as deleteParkedSims, v as trimmableCaches, vt as findStaleProjectDevices, y as stopOwnedMetro, z as emptyCaches } from "./ccache-DVDO2ocE.mjs";
11
- import { o as readWebRecord, u as webFacts } from "./state-CM_HvvkS.mjs";
12
- import { a as unregister, n as readManifest } from "./cache-manifest-CfiEny4T.mjs";
13
- import { B as workspaceBuildInProgress, Et as GC_OUTPUT, F as collectOwnedDeviceActivityAsync, Ot as takeGcResults, P as collectOwnedDeviceActivity, a as collectOrphanedWorkspaces, b as workspaceInUseAsync, c as isInsideWorkspaces, d as recentNativeUseReason, g as ARTIFACT_DIRS, h as workspaceDirRemoved, i as clearWorkspaceOutputs, jt as readConcurrency, kt as eachLimited, l as keptByLock, m as workspaceBuildReasons, o as collectWorkspaceOutputs, s as deleteOrphanedWorkspaces, t as LIGHTEN_AFTER_MS, u as listWorkspaceDirs, v as withIdleWorkspace, x as resolveSupervisorTarget, y as workspaceInUse } from "./workspaces-BNEyJ1B_.mjs";
1
+ import { T as process_identity_exports, f as WorkspaceProcessCleanupError, m as workspaceProcessLockError, n as isTimeoutError, p as withWorkspaceProcessLock, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
+ import { E as workspaceDir, j as workspaceStateFile$1, k as workspaceLogsDir$1, r as readWorkspaceState$1, u as workspaceLastUsed, w as workspaceAgentDeviceDir } from "./workspace-state-BdZ-QgmB.mjs";
3
+ import { o as formatLongDuration, u as plural } from "./command-output-DWI9tGPU.mjs";
4
+ import { at as isOnMountedVolume, ht as projectDeviceSlots, m as getProject, nt as directorySizeAsync, ot as listMountedVolumes, rt as formatBytes, st as measuredDirectorySizeAsync, v as loadConfig$1 } from "./config-BW0fAtoK.mjs";
5
+ import { c as gitQuiet, l as gitQuietAsync, n as runOperationFileQuiet, r as childEnvironment } from "./operation-exec-DKlBcKAL.mjs";
6
+ import { At as listWorktrees, Et as hasUncommittedWorkAsync, Ft as matchWorktreeEntry, Kt as sourceCheckoutOf, O as maintenanceKeepSetting, Pt as lockReason, Ut as resolveFullRefAsync, Wt as resolveSourceCheckoutAsync, X as resolveProjectSettings, Xt as worktreeLockAsync, Z as resolveProjectSettingsAsync, bt as dirtyPathsAsync, h as deviceIdleShutdownMinutesSetting, it as settingValueAt, jt as listWorktreesAsync, mt as LOCKED_REASON, qt as unpushedCommitsAsync, sn as removeTemporaryEntryAsync, wt as hasPopulatedSubmodulesAsync } from "./settings-B5IBDfTx.mjs";
7
+ import { P as readRemoteSession, i as findProjectRoot$1 } from "./project-DWEXiBA9.mjs";
8
+ import { A as getAvdNameForSerialAsync, L as listAvds, N as listAdbDevices, P as listAdbDevicesAsync, R as listAvdsAsync, U as ownedAvdDirectory, k as getAvdNameForSerial, q as ownedAvdSerialResolverAsync, xt as readParked } from "./android-Iq0M2t2d.mjs";
9
+ import { c as pidExists } from "./metro-B5PVz0Wv.mjs";
10
+ import { A as diskPressureLevel, G as planCacheEmptying, N as lowestFree, P as protectWindowMs, X as collectGradleVersions, Z as deleteGradleVersion, Zn as collectMemoryReport, _ as resolveBudget, at as DEVICE_LIST_TIMEOUT_MS, ct as collectParkedSims, d as enforceBudget, dr as pruneCache, dt as deleteProjectDevices, j as levelFloors, lt as deleteParkedAvds, mt as deviceSweepIsScoped, nr as memorySweepIsScoped, nt as waitForGradleExit, or as stopIdleGradleDaemons, p as machineNumber, sr as phase, st as collectParkedAvds, u as cacheLabel, ur as discoverCaches, ut as deleteParkedSims, v as trimmableCaches, vt as findStaleProjectDevices, y as stopOwnedMetro, z as emptyCaches } from "./ccache-BXtzEL6M.mjs";
11
+ import { o as readWebRecord, u as webFacts } from "./state-CtmYTRWm.mjs";
12
+ import { a as unregister, n as readManifest } from "./cache-manifest-8JX9S1QJ.mjs";
13
+ import { B as workspaceBuildInProgress, Et as GC_OUTPUT, F as collectOwnedDeviceActivityAsync, Ot as takeGcResults, P as collectOwnedDeviceActivity, a as collectOrphanedWorkspaces, b as workspaceInUseAsync, c as isInsideWorkspaces, d as recentNativeUseReason, g as ARTIFACT_DIRS, h as workspaceDirRemoved, i as clearWorkspaceOutputs, jt as readConcurrency, kt as eachLimited, l as keptByLock, m as workspaceBuildReasons, o as collectWorkspaceOutputs, s as deleteOrphanedWorkspaces, t as LIGHTEN_AFTER_MS, u as listWorkspaceDirs, v as withIdleWorkspace, x as resolveSupervisorTarget, y as workspaceInUse } from "./workspaces-B3ahAHZc.mjs";
14
14
  import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
15
- import { N as listBuildLocks, _ as workspaceDeviceLastUseAt, b as leaseIsExpired, g as workspaceActivity, x as listLeaseFiles } from "./activity-Dw4N_RFe.mjs";
16
- import { d as listAllIosSims, f as listAllIosSimsAsync } from "./ios-CdAV4-1E.mjs";
15
+ import { N as listBuildLocks, _ as workspaceDeviceLastUseAt, b as leaseIsExpired, g as workspaceActivity, x as listLeaseFiles } from "./activity-C8kBq9w0.mjs";
16
+ import { d as listAllIosSims, f as listAllIosSimsAsync } from "./ios-BdZdNsAj.mjs";
17
17
  import { s as metroStoreRoot } from "./errors-DHm_U5gv.mjs";
18
18
  import { t as resolveMaintenanceSettings } from "./settings-D9LtQaUw.mjs";
19
- import { o as runStop } from "./stop-WyrZQuX6.mjs";
20
- import { D as stimCliUseOf, E as stimCliEntries, M as worktreeArchiveLimits, T as serviceRunningFrom, _ as cacheBlocked, a as nestedWorktrees, b as measurePressure, i as excludeWatchmanCookies, o as porcelainPath, p as removeWorktreeTarget, r as excludePodChurn, s as reclaimKeys, v as measureDisk, w as uncommittedActivityOf, x as measurePressureAsync, y as measureDiskAsync } from "./worktree-BTrii9e_.mjs";
21
- import { n as describePullRequest, r as endedPullRequest, s as pullRequestLookups } from "./pull-request-BzLmzAIQ.mjs";
22
- import { a as lastFetchedAtAsync, c as mergeStateAsync, f as recordPullRequestLookup, i as fetchDefaultBranchAsync, o as localDefaultBranchAsync, r as FETCH_FRESH_MS } from "./warm-progress-_aTMvkIH.mjs";
23
- import { a as restoreProblem, r as recordLightened, t as finishLightened } from "./lightened-DZ9Ip0T3.mjs";
24
- import { i as writeIdleShutdownEvent, n as dueIdleDevices, r as shutDownIdleDevices } from "./idle-shutdown-BWHQ7mQG.mjs";
19
+ import { m as probeHostedSession } from "./hosted-client-D19Lv0tg.mjs";
20
+ import { o as runStop } from "./stop-BVI2-L7s.mjs";
21
+ import { D as stimCliUseOf, E as stimCliEntries, M as worktreeArchiveLimits, T as serviceRunningFrom, _ as cacheBlocked, a as nestedWorktrees, b as measurePressure, i as excludeWatchmanCookies, o as porcelainPath, p as removeWorktreeTarget, r as excludePodChurn, s as reclaimKeys, v as measureDisk, w as uncommittedActivityOf, x as measurePressureAsync, y as measureDiskAsync } from "./worktree-BhsML6GV.mjs";
22
+ import { n as describePullRequest, r as endedPullRequest, s as pullRequestLookups } from "./pull-request-BpMTNkMB.mjs";
23
+ import { a as lastFetchedAtAsync, c as mergeStateAsync, f as recordPullRequestLookup, i as fetchDefaultBranchAsync, o as localDefaultBranchAsync, r as FETCH_FRESH_MS } from "./warm-progress-q11Vdvhh.mjs";
24
+ import { a as restoreProblem, r as recordLightened, t as finishLightened } from "./lightened-Cv4ToJRX.mjs";
25
+ import { i as writeIdleShutdownEvent, n as dueIdleDevices, r as shutDownIdleDevices } from "./idle-shutdown-6i8CHoNq.mjs";
25
26
  import { readClaimSet } from "@stim-cli/core/ownership-claim";
26
27
  import { existsSync, lstatSync, readFileSync, readdirSync, readlinkSync, realpathSync, rmSync, statSync } from "node:fs";
27
28
  import { tmpdir } from "node:os";
28
29
  import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
29
30
  import { buildCacheRoot, configDir, metroCacheRoot, rotatedLogPath } from "@stim-cli/core";
30
- import { LAST_BUILD_KEYS, MAINTENANCE_LOG_NAME, coerceSettingText, deviceViewersDir, lastNativeUseFrom, loadConfig, parseNdjsonText, readBuildHistory, readJsonObject, readMaintenanceState, readPullRequestCache, settingDefinition, settingValueError, sharedCompilationCache } from "@stim-cli/core/state";
31
+ import { LAST_BUILD_KEYS, MAINTENANCE_LOG_NAME, coerceSettingText, deviceViewersDir, hostedNativeRecords, lastNativeUseFrom, loadConfig, parseHostedNativePlacement, parseNdjsonText, readBuildHistory, readJsonObject, readMacosRecord, readMaintenanceState, readPullRequestCache, settingDefinition, settingValueError, sharedCompilationCache, unreadableHostedNative } from "@stim-cli/core/state";
31
32
  import { isAbsolute as isAbsolute$1, join as join$1 } from "path";
32
33
  import chalk from "chalk";
33
34
  import { existsSync as existsSync$1, readdirSync as readdirSync$1, statSync as statSync$1 } from "fs";
@@ -1554,6 +1555,47 @@ async function idleStopHours(root, env, operation) {
1554
1555
  const error = settingValueError(setting, value);
1555
1556
  return error || typeof value !== "number" ? { invalid: `${fromEnv ? setting.env : SETTING} is invalid: expected ${error ?? "a number"}` } : { hours: value };
1556
1557
  }
1558
+ function hostedFacts(root) {
1559
+ const placements = [];
1560
+ const unreadable = [];
1561
+ for (const platform of ["ios", "android"]) for (const [slot, record] of Object.entries(hostedNativeRecords(readWorkspaceState$1(root), platform))) {
1562
+ const placement = parseHostedNativePlacement(record, platform);
1563
+ if (placement) {
1564
+ const label = platform === "ios" ? "iOS simulator" : "Android emulator";
1565
+ placements.push({
1566
+ label,
1567
+ machine: placement.machine,
1568
+ session: placement.session,
1569
+ platform
1570
+ });
1571
+ } else unreadable.push(unreadableHostedNative(slot, platform));
1572
+ }
1573
+ const host = readMacosRecord(root)?.host;
1574
+ if (host) placements.push({
1575
+ label: "macOS app",
1576
+ machine: host.machine,
1577
+ session: host.session
1578
+ });
1579
+ return {
1580
+ placements,
1581
+ unreadable
1582
+ };
1583
+ }
1584
+ async function hostedKeepReasons(facts) {
1585
+ const keep = [...facts.unreadable];
1586
+ if (keep.length) return keep;
1587
+ for (const { label, machine, session, platform } of facts.placements) {
1588
+ const probe = await probeHostedSession({
1589
+ machine,
1590
+ session,
1591
+ platform
1592
+ }, { ttlMs: 0 });
1593
+ if (probe.state === "ready" || probe.state === "stopped") continue;
1594
+ const why = probe.state === "unreachable" ? `${machine} did not answer: ${probe.reason.replace(/\.+$/, "")}` : `${machine} cannot confirm it${probe.notice ? `: ${probe.notice.replace(/\.+$/, "")}` : ""}`;
1595
+ keep.push(`its hosted ${label} session ${session} is not confirmed: ${why}`);
1596
+ }
1597
+ return keep;
1598
+ }
1557
1599
  function deviceKeepReason(device, platform) {
1558
1600
  const { activity } = device;
1559
1601
  const what = `its ${device.kind === "ios" ? "simulator" : "emulator"} ${device.name}`;
@@ -1628,7 +1670,9 @@ function unreadableViewers() {
1628
1670
  async function keepReasons(root, devices, { now, platform, locked, operation }) {
1629
1671
  const checks = {
1630
1672
  devServer: false,
1631
- nativeRun: !locked
1673
+ nativeRun: !locked,
1674
+ hosted: false,
1675
+ hostedMacos: false
1632
1676
  };
1633
1677
  const keep = operation ? await workspaceInUseAsync(root, checks, operation.signal, operation) : workspaceInUse(root, checks);
1634
1678
  if (workspaceBuildInProgress(root)) keep.push("a build is in progress");
@@ -1703,6 +1747,7 @@ async function idleStopEvidence(root, devices, { now, idleMs, platform = process
1703
1747
  basis: "Metro request",
1704
1748
  at: metro
1705
1749
  });
1750
+ if (!activity.some(({ at }) => now - at < idleMs)) keep.push(...await hostedKeepReasons(hostedFacts(root)));
1706
1751
  return {
1707
1752
  activity,
1708
1753
  keep
@@ -1756,7 +1801,9 @@ async function candidate(path, env, devices, operation) {
1756
1801
  const slots = projectDeviceSlots(project);
1757
1802
  const ownsIos = slots.some(({ platforms }) => platforms.ios?.owned === true);
1758
1803
  const owns = ownsIos || slots.some(({ platforms }) => platforms.android?.owned === true);
1759
- if (!owns && (supervisor.status === "none" || supervisor.status === "stale")) return null;
1804
+ const hosted = hostedFacts(path);
1805
+ const isHosted = hosted.placements.length > 0 || hosted.unreadable.length > 0;
1806
+ if (!owns && !isHosted && (supervisor.status === "none" || supervisor.status === "stale")) return null;
1760
1807
  const setting = await idleStopHours(path, env, operation);
1761
1808
  if ("invalid" in setting) return { skip: setting.invalid };
1762
1809
  if (setting.hours === 0) return null;
@@ -1771,7 +1818,7 @@ async function candidate(path, env, devices, operation) {
1771
1818
  if (supervisor.status === "ours" && readWorkspaceState$1(path)?.supervisor?.mode === "command-child") return { skip: "its dev server runs metro.command, whose bundle and HMR requests Stim cannot see" };
1772
1819
  if (supervisor.status === "ours" && readWorkspaceState$1(path)?.supervisor?.hmrUpdates !== true) return { skip: "its dev server does not report HMR updates to Stim: an Expo SDK before 54, or a server an older Stim started, which stim stop and stim start restart" };
1773
1820
  const avdNames = slots.flatMap(({ platforms }) => platforms.android?.owned && platforms.android.avdName ? [platforms.android.avdName] : []);
1774
- if (supervisor.status !== "ours" && booted.length === 0) return null;
1821
+ if (supervisor.status !== "ours" && booted.length === 0 && !isHosted) return null;
1775
1822
  const orphan = supervisor.status === "stale" ? survivingServer(readWorkspaceState$1(path)?.supervisor) : null;
1776
1823
  if (orphan) return { skip: orphan };
1777
1824
  const seen = new Set(booted.flatMap((device) => device.kind === "android" ? [device.id] : []));
@@ -1910,6 +1957,8 @@ async function stopIdleWorkspace(action, { protectedRoot, devices, operation, en
1910
1957
  }, {
1911
1958
  purpose: "automatic maintenance",
1912
1959
  devServer: false,
1960
+ hosted: false,
1961
+ hostedMacos: false,
1913
1962
  operation
1914
1963
  });
1915
1964
  return run.ran ? run.value : kept$1(`in use: ${run.reasons.join("; ")}`);
@@ -1,9 +1,9 @@
1
- import { D as ownership_claim_exports, S as process_identity_exports, m as declareSpawnsOn, t as getExecutor, v as stopDeclaringSpawnsOn } from "./exec-aULwtNly.mjs";
2
- import { M as withDirLock$1, N as withDirLockAsync$1, c as withWorkspaceStateLock, d as writeWorkspaceState, k as workspaceLogsDir$1, l as withWorkspaceStateLockAsync, n as clearWorkspaceStateKeys, r as readWorkspaceState$1 } from "./workspace-state-3bF4TB8P.mjs";
3
- import { H as deviceSlotKey, J as validateDeviceSlot, W as parseDeviceSlotKey, d as getConfigDir } from "./config-D5qNWJEP.mjs";
4
- import { a as formatElapsed, i as formatDuration, m as shortHash } from "./command-output-VrXd6qPX.mjs";
5
- import { n as runOperationFileQuiet } from "./operation-exec-Dp4FuIGR.mjs";
6
- import { C as resolveBuild } from "./build-cache-BsKim4V7.mjs";
1
+ import { D as ownership_claim_exports, T as process_identity_exports, _ as declareSpawnsOn, t as getExecutor, x as stopDeclaringSpawnsOn } from "./exec-CGuDzt40.mjs";
2
+ import { M as withDirLock$1, N as withDirLockAsync$1, c as withWorkspaceStateLock, d as writeWorkspaceState, k as workspaceLogsDir$1, l as withWorkspaceStateLockAsync, n as clearWorkspaceStateKeys, r as readWorkspaceState$1 } from "./workspace-state-BdZ-QgmB.mjs";
3
+ import { a as formatElapsed, i as formatDuration, m as shortHash } from "./command-output-DWI9tGPU.mjs";
4
+ import { _t as validateDeviceSlot, d as getConfigDir, dt as deviceSlotKey, pt as parseDeviceSlotKey } from "./config-BW0fAtoK.mjs";
5
+ import { n as runOperationFileQuiet } from "./operation-exec-DKlBcKAL.mjs";
6
+ import { w as resolveBuild } from "./build-cache-Cqj4FGnX.mjs";
7
7
  import { randomBytes } from "node:crypto";
8
8
  import { closeSync, fstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
9
9
  import { homedir } from "node:os";
@@ -1,8 +1,8 @@
1
- import { S as process_identity_exports } from "./exec-aULwtNly.mjs";
2
- import { F as formatBytes } from "./config-D5qNWJEP.mjs";
3
- import { o as formatLongDuration } from "./command-output-VrXd6qPX.mjs";
4
- import { bt as measureDu, u as listWorkspaceDirs, xt as writeUsageCache, yt as canonical } from "./workspaces-BNEyJ1B_.mjs";
5
- import { c as parseAgentDeviceRecord, o as envDir, u as processMatches } from "./activity-Dw4N_RFe.mjs";
1
+ import { T as process_identity_exports } from "./exec-CGuDzt40.mjs";
2
+ import { o as formatLongDuration } from "./command-output-DWI9tGPU.mjs";
3
+ import { rt as formatBytes } from "./config-BW0fAtoK.mjs";
4
+ import { bt as measureDu, u as listWorkspaceDirs, xt as writeUsageCache, yt as canonical } from "./workspaces-B3ahAHZc.mjs";
5
+ import { c as parseAgentDeviceRecord, o as envDir, u as processMatches } from "./activity-C8kBq9w0.mjs";
6
6
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
7
7
  import { homedir } from "node:os";
8
8
  import { isAbsolute, join, relative, sep } from "node:path";
@@ -1,5 +1,5 @@
1
- import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { u as androidToolCwd } from "./android-DsEj2CCs.mjs";
1
+ import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
+ import { u as androidToolCwd } from "./android-Iq0M2t2d.mjs";
3
3
  //#region src/collector/android.ts
4
4
  const LEVEL_BY_LETTER = {
5
5
  V: "debug",
@@ -1,43 +1,44 @@
1
- import { D as ownership_claim_exports, t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { a as recordWorkspaceUseAsync, f as writeWorkspaceStateAsync, g as emulatorLogFile, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-3bF4TB8P.mjs";
3
- import { D as upsertProject, G as parseDeviceSlotOption, J as validateDeviceSlot, U as deviceSlotPlatforms, V as deviceSlotFileKey, k as withConfigLockAsync$1, m as getProject, u as getConcurrencyLimits } from "./config-D5qNWJEP.mjs";
4
- import { _ as stepTimer, f as refuseNoProject, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-VrXd6qPX.mjs";
5
- import { B as publicUrlSetting, F as metroWarmupUrlSetting, J as resolveCacheProviderConfig, N as metroPortSetting, Q as resolveSettings, W as remoteEasFallbackSetting, Z as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, dt as detectProviders, g as deviceReclaimIdleMinutesSetting, ot as tunnelModeSetting, z as projectSettingsContextAsync } from "./settings-C6UTYW2K.mjs";
6
- import { f as projectRegistry, i as findProjectRoot$1, l as projectShortcut, t as NO_PROJECT_REFUSAL, z as writeWorkspaceLaunchAsync } from "./project-DCLkDM8C.mjs";
7
- import { $ as probeEmulatorSerial, E as emulatorProbeSession, M as isEmulatorToolAbsent, P as listAdbDevicesAsync, Z as physicalDeviceModel, a as androidDeviceAbi, at as resolvePhysicalDevice, it as resolveOwnedAvdSerialAsync, kt as configuredAndroidEmulatorApp, ut as waitForBoot, v as avdStorageExists, z as listInstalledSystemImages } from "./android-DsEj2CCs.mjs";
8
- import { c as pidExists, d as resolveProjectMetro } from "./metro-mKHEMO-a.mjs";
1
+ import { D as ownership_claim_exports, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
+ import { a as recordWorkspaceUseAsync, f as writeWorkspaceStateAsync, g as emulatorLogFile, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-BdZ-QgmB.mjs";
3
+ import { _ as stepTimer, f as refuseNoProject, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-DWI9tGPU.mjs";
4
+ import { D as upsertProject, _t as validateDeviceSlot, ft as deviceSlotPlatforms, k as withConfigLockAsync$1, m as getProject, mt as parseDeviceSlotOption, u as getConcurrencyLimits, ut as deviceSlotFileKey } from "./config-BW0fAtoK.mjs";
5
+ import { B as publicUrlSetting, F as metroWarmupUrlSetting, J as resolveCacheProviderConfig, N as metroPortSetting, Q as resolveSettings, W as remoteEasFallbackSetting, Z as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, dt as detectProviders, g as deviceReclaimIdleMinutesSetting, ot as tunnelModeSetting, z as projectSettingsContextAsync } from "./settings-B5IBDfTx.mjs";
6
+ import { f as projectRegistry, i as findProjectRoot$1, l as projectShortcut, t as NO_PROJECT_REFUSAL, z as writeWorkspaceLaunchAsync } from "./project-DWEXiBA9.mjs";
7
+ import { $ as probeEmulatorSerial, At as configuredAndroidEmulatorApp, E as emulatorProbeSession, M as isEmulatorToolAbsent, P as listAdbDevicesAsync, U as ownedAvdDirectory, Z as physicalDeviceModel, a as androidDeviceAbi, at as resolvePhysicalDevice, it as resolveOwnedAvdSerialAsync, ut as waitForBoot, v as avdStorageExists, z as listInstalledSystemImages } from "./android-Iq0M2t2d.mjs";
8
+ import { c as pidExists, d as resolveProjectMetro } from "./metro-B5PVz0Wv.mjs";
9
9
  import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
10
- import { An as checkEasAuth, At as ensureRemoteBootOwned, En as runProcessOperation, Et as binOnPath, Jt as verifyLaunch, Ln as resolveEasCliBin, Mt as remoteAndroidDeps, Pt as resolveRemoteContext, Qt as DEFAULT_METRO_PORT, Rn as resolveRemote, Zt as ADB_INSTALL_TIMEOUT_MS, c as budgetGate, kt as ensureMetroReachable, ln as installAndroidApp, mn as launchAndroidReleaseApp, pn as launchAndroidApp, qn as ownedSessionName, qt as verifyAndroidReleaseLaunch, t as CCACHE_NOT_RUN, wn as exitAfterFlush, zn as uploadRemote } from "./ccache-DVDO2ocE.mjs";
11
- import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, St as acquireBuildSlot, Tt as releaseBuildSlot, Z as runFailureRecord, ct as recordRunStats, et as thrownRunFailureRecord, it as readRunEstimates, lt as statsProjectKey$1, ot as recordCapacityRefusal, rt as createRunRecorder } from "./workspaces-BNEyJ1B_.mjs";
12
- import { $ as cancelledFailure, ct as withNativeBuildRun, ot as runCancellation, st as runCancellationSignal } from "./toolchain-CGdgD4x4.mjs";
13
- import { F as waitForBuild, M as acquireBuildLock, P as releaseBuildLock } from "./activity-Dw4N_RFe.mjs";
14
- import { T as storedAppId } from "./build-cache-BsKim4V7.mjs";
15
- import { S as setRemoteLogSink } from "./client-DhJOvSvh.mjs";
16
- import { d as resolveBuildPlacement, s as parseBuildMachineOption } from "./selection-C95m--1_.mjs";
17
- import { r as hostedMetroSettings } from "./metro-request-RDhyx85c.mjs";
18
- import { a as writeHostedAndroidAsync, i as writeDevicePlacementAsync, t as readHostedAndroid } from "./ios-state-BEIJRJ7P.mjs";
19
- import { n as prepareHostedAndroid, t as placeHostedAndroid } from "./hosted-android-CH1Sm4wo.mjs";
20
- import { n as verifyCollectorOwnership } from "./ownership-CCfiBfOP.mjs";
21
- import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-DZ9Ip0T3.mjs";
22
- import { c as startDevServer } from "./start-LSwIFlBv.mjs";
23
- import { a as acquireRunLease, d as runLease, f as waitFlagConflict, o as leaseExpiryText, u as releaseLeaseOnAbort } from "./device-lease-run-CHXQEn-7.mjs";
24
- import { n as DeviceAdmissionRefusal, r as checkDeviceCapacity } from "./device-capacity-Du5wBTNJ.mjs";
25
- import { a as resolveEasDevelopmentBuild, r as isEasBuildFailure } from "./eas-build-CBFgseh1.mjs";
26
- import { t as followHostedLaunchLogs } from "./hosted-logs-sync-BPe8xnMu.mjs";
27
- import { f as settleFingerprintCheck } from "./prebuild-D0hvmO4j.mjs";
28
- import { i as launchOutcomeRecord, n as ensureWorkspaceStorageSafely, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-D4qgnjK_.mjs";
29
- import { n as devicePlacementRecord } from "./placement-log-CFT8SnlS.mjs";
30
- import { S as pooledAndroidDevice, a as PLATFORM, b as noDeviceDiagnostic, g as dumpApkManifest, h as displayPath, o as androidBuildOptions, p as apkPackage, r as NO_DEVICE, s as androidDevClientScheme } from "./support-Cffz6_Ft.mjs";
31
- import { t as acquireAndroidArtifact } from "./artifact-ta3xA0c4.mjs";
32
- import { a as persistLastBuild, c as androidDeviceSelectorRefusal, i as logPostBuildFailure, n as finishAndroidUpload, o as persistThrownBuild, s as reportAndroidResult, u as resolveAndroidRunPlan } from "./result-Epkl6gyG.mjs";
33
- import { n as devicePlacementLine, t as automaticDevicePlacement } from "./auto-placement-DtTRG0rk.mjs";
34
- import { i as verifyAndroidMetroRun, r as finishAndroidRun } from "./launch-CrGndh8T.mjs";
35
- import { t as checkEasFallback } from "./eas-fallback-DFXdz4d6.mjs";
36
- import { i as warmMetro, n as ensureBooted, r as ensureOwnedDevice, t as didSetUpDevice } from "./device-DuNLOlR6.mjs";
37
- import { a as AvdBootError, o as AvdRecoveryError } from "./device-android-BjhH0Ru3.mjs";
38
- import { t as selectFromPool } from "./device-pool-kUHO7MHO.mjs";
10
+ import { An as checkEasAuth, At as ensureRemoteBootOwned, En as runProcessOperation, Et as binOnPath, Jt as verifyLaunch, Ln as resolveEasCliBin, Mt as remoteAndroidDeps, Pt as resolveRemoteContext, Qt as DEFAULT_METRO_PORT, Rn as resolveRemote, Zt as ADB_INSTALL_TIMEOUT_MS, c as budgetGate, kt as ensureMetroReachable, ln as installAndroidApp, mn as launchAndroidReleaseApp, pn as launchAndroidApp, qn as ownedSessionName, qt as verifyAndroidReleaseLaunch, t as CCACHE_NOT_RUN, wn as exitAfterFlush, zn as uploadRemote } from "./ccache-BXtzEL6M.mjs";
11
+ import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, St as acquireBuildSlot, Tt as releaseBuildSlot, Z as runFailureRecord, ct as recordRunStats, et as thrownRunFailureRecord, it as readRunEstimates, lt as statsProjectKey$1, ot as recordCapacityRefusal, rt as createRunRecorder } from "./workspaces-B3ahAHZc.mjs";
12
+ import { $ as cancelledFailure, ct as withNativeBuildRun, ot as runCancellation, st as runCancellationSignal } from "./toolchain-s5ZmG42Z.mjs";
13
+ import { F as waitForBuild, M as acquireBuildLock, P as releaseBuildLock } from "./activity-C8kBq9w0.mjs";
14
+ import { E as storedAppId } from "./build-cache-Cqj4FGnX.mjs";
15
+ import { S as setRemoteLogSink } from "./client-0_Mnfz0a.mjs";
16
+ import { d as resolveBuildPlacement, s as parseBuildMachineOption } from "./selection-xS50Mt0V.mjs";
17
+ import { i as hostedMetroSettings } from "./metro-request-2LmFpC1z.mjs";
18
+ import { a as writeHostedAndroidAsync, i as writeDevicePlacementAsync, t as readHostedAndroid } from "./ios-state-CWsBysyN.mjs";
19
+ import { n as prepareHostedAndroid, t as placeHostedAndroid } from "./hosted-android-ByG-ICuh.mjs";
20
+ import { n as verifyCollectorOwnership } from "./ownership-hC7xvvxF.mjs";
21
+ import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-Cv4ToJRX.mjs";
22
+ import { c as startDevServer } from "./start-BsEV4S-s.mjs";
23
+ import { a as acquireRunLease, d as runLease, f as waitFlagConflict, o as leaseExpiryText, u as releaseLeaseOnAbort } from "./device-lease-run-DpiCnRbZ.mjs";
24
+ import { n as DeviceAdmissionRefusal, r as checkDeviceCapacity } from "./device-capacity-BAkETfIl.mjs";
25
+ import { r as ensureSystemImage, t as androidImageInstallPolicy } from "./android-image-DFk26aY6.mjs";
26
+ import { a as resolveEasDevelopmentBuild, r as isEasBuildFailure } from "./eas-build-CpJ4h9tG.mjs";
27
+ import { t as followHostedLaunchLogs } from "./hosted-logs-sync-D182b1eJ.mjs";
28
+ import { f as settleFingerprintCheck } from "./prebuild-Bhs7TTcz.mjs";
29
+ import { i as launchOutcomeRecord, n as ensureWorkspaceStorageSafely, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-e1OU8gEN.mjs";
30
+ import { n as devicePlacementRecord } from "./placement-log-nnGnu8mo.mjs";
31
+ import { S as pooledAndroidDevice, a as PLATFORM, b as noDeviceDiagnostic, g as dumpApkManifest, h as displayPath, o as androidBuildOptions, p as apkPackage, r as NO_DEVICE, s as androidDevClientScheme } from "./support-CqyWfZZI.mjs";
32
+ import { t as acquireAndroidArtifact } from "./artifact-BMjubIP2.mjs";
33
+ import { a as persistLastBuild, c as androidDeviceSelectorRefusal, i as logPostBuildFailure, n as finishAndroidUpload, o as persistThrownBuild, s as reportAndroidResult, u as resolveAndroidRunPlan } from "./result-DuimMZKJ.mjs";
34
+ import { n as devicePlacementLine, t as automaticDevicePlacement } from "./auto-placement-D7P98glJ.mjs";
35
+ import { i as verifyAndroidMetroRun, r as finishAndroidRun } from "./launch-CKHpthsw.mjs";
36
+ import { t as checkEasFallback } from "./eas-fallback-B3z5nL1g.mjs";
37
+ import { i as warmMetro, n as ensureBooted, r as ensureOwnedDevice, t as didSetUpDevice } from "./device-DOehZpyx.mjs";
38
+ import { a as AvdBootError, o as AvdRecoveryError } from "./device-android-B8TQP5AX.mjs";
39
+ import { t as selectFromPool } from "./device-pool-DP4sCeCC.mjs";
39
40
  import { t as unsupportedPlan } from "./project-plan-BPwbLwQu.mjs";
40
- import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-DH1rT11x.mjs";
41
+ import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-T3Hi24ax.mjs";
41
42
  import { join } from "node:path";
42
43
  import { workspaceId } from "@stim-cli/core";
43
44
  import { hostedAndroidStatus, parseMachine } from "@stim-cli/core/state";
@@ -586,6 +587,27 @@ function avdSetupFailure(error, root, logFile) {
586
587
  }
587
588
  };
588
589
  }
590
+ function slotKeepsAvd(root, slot) {
591
+ const android = deviceSlotPlatforms(getProject(root), slot)?.android;
592
+ if (!android?.owned || !android.avdName || android.setupIncomplete || android.bootPending) return false;
593
+ return Boolean(ownedAvdDirectory(android.avdName));
594
+ }
595
+ async function localRunRefusal(budgetRefusal, target, keepsAvd, ensureImage, recheckSelectors, signal) {
596
+ if (budgetRefusal || target.kind !== "emulator" || keepsAvd()) return budgetRefusal;
597
+ let image;
598
+ try {
599
+ image = await ensureImage();
600
+ } catch (error) {
601
+ if (!signal?.aborted || error instanceof Error && "reportCleanup" in error) throw error;
602
+ return {
603
+ code: "STIM_CANCELLED",
604
+ message: "during the Android system image install",
605
+ remedy: ""
606
+ };
607
+ }
608
+ if (!image.ok) return image;
609
+ return image.installed ? recheckSelectors() : null;
610
+ }
589
611
  async function runAndroid(options = {}) {
590
612
  const { context } = options;
591
613
  let { root, json, commandRemoteBackend, resolveSettingsFor, resolveRemoteDeviceContext, makeRemoteDeviceDeps, resolveEasBin, ensureRemoteMetro, ensureRemoteOwned, detectRemoteProviders, metroCheck, useBuildCache: requestedBuildCache, easProfile, resolveEasBuild, variantFlag, systemImageFlag, deviceProfileFlag, deviceFlag, waitFlag, waitConflict, acquireLease, makeRunLease, selectPool, onLeaseSignal, listDevices, deviceModel, deviceAbi, isEmulatorDevice, readApkPackage, getLimits, checkCapacity, acquireSlot, releaseSlot, ensureDevice, listSystemImages, listDeviceProfiles, ensureDeviceBooted, resolveAvdSerial, waitForDeviceBoot, dataFreeBytes, trimCaches, wipeDevice, resolveMetro, prewarmMetro, startServer, readState, pidAlive, verifyCollector, verifyLaunched, ensureStorage, acquireLock, releaseLock, waitForBuild, easAuth, resolveRemoteBuild, uploadRemoteBuild, resolveCacheProvider, loadCacheProviderModule, storedAppId, install, launch, launchRelease, verifyReleaseLaunched, resolveDevClientScheme, spawn, kill, createWriter, writeLaunch, writeState, recordBuild, recordStats, recordCapacityRefusal: recordRefusal = recordCapacityRefusal, readEstimates, now, out, emit } = androidSlotOptions(options);
@@ -801,6 +823,21 @@ async function runAndroid(options = {}) {
801
823
  const runtimeKind = integration.runtimeKind(buildPlan);
802
824
  const appMode = runtimeKind === "process" ? "process" : runtimeKind === "metro" ? "development" : "release";
803
825
  record.configuration = variant ?? "debug";
826
+ const localSelectors = (target) => androidDeviceSelectorRefusal({
827
+ settingsContext,
828
+ signal: context.signal,
829
+ slot,
830
+ systemImageFlag,
831
+ deviceProfileFlag,
832
+ systemImage: target.systemImage,
833
+ deviceProfile: target.deviceProfile,
834
+ physical: false,
835
+ remoteBackend: null,
836
+ installImages: androidImageInstallPolicy(settings)
837
+ }, {
838
+ listSystemImages,
839
+ listDeviceProfiles
840
+ });
804
841
  const hosting = await selectAndroidPlacement({
805
842
  root,
806
843
  slot,
@@ -828,20 +865,7 @@ async function runAndroid(options = {}) {
828
865
  publicUrl: publicUrlSetting(settings),
829
866
  localOnlyFlags: [...typeof systemImageFlag === "string" ? ["--system-image"] : [], ...typeof deviceProfileFlag === "string" ? ["--device-profile"] : []]
830
867
  }) } : {},
831
- localSelectors: (target) => androidDeviceSelectorRefusal({
832
- settingsContext,
833
- signal: context.signal,
834
- slot,
835
- systemImageFlag,
836
- deviceProfileFlag,
837
- systemImage: target.systemImage,
838
- deviceProfile: target.deviceProfile,
839
- physical: false,
840
- remoteBackend: null
841
- }, {
842
- listSystemImages,
843
- listDeviceProfiles
844
- }),
868
+ localSelectors,
845
869
  checkBudget: (args) => (options.checkBudget ?? budgetGate)({
846
870
  ...args,
847
871
  env: context.env
@@ -862,7 +886,17 @@ async function runAndroid(options = {}) {
862
886
  if (appMode === "development" && (publicUrlSetting(settings) || tunnelModeSetting(settings))) phase("metro", "metro.publicUrl and metro.tunnel are ignored on a hosting Mac; Metro uses links this machine opens to the host.");
863
887
  }
864
888
  reclaimed = budget.reclaimed;
865
- if (budget.refusal) return fail(budget.refusal.code, budget.refusal.message, budget.refusal.remedy);
889
+ const localRefusal = await localRunRefusal(budget.refusal, target, () => slotKeepsAvd(root, slot), () => (options.ensureImage ?? ensureSystemImage)({
890
+ requested: target.kind === "emulator" ? target.systemImage : null,
891
+ policy: androidImageInstallPolicy(settings),
892
+ env: context.env,
893
+ signal: settingsSignal,
894
+ note: (line) => phase("image", line)
895
+ }), () => localSelectors(target.kind === "emulator" ? target : {
896
+ systemImage: null,
897
+ deviceProfile: null
898
+ }), settingsSignal);
899
+ if (localRefusal) return fail(localRefusal.code, localRefusal.message, localRefusal.remedy);
866
900
  const remoteContext = remoteBackend ? await resolveRemoteDeviceContext({
867
901
  root,
868
902
  platform: PLATFORM,
@@ -1,6 +1,6 @@
1
- import { i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-VrXd6qPX.mjs";
2
- import { E as resolveVariant, T as resolveSystemImage, _ as findAapt, b as noDeviceDiagnostic, d as androidVariantSetting, f as apkDevClientFacts, g as dumpApkManifest, h as displayPath, i as NO_FINGERPRINT, p as apkPackage, r as NO_DEVICE, s as androidDevClientScheme, u as androidSystemImageSetting, x as parseXmltree, y as isReleaseVariant } from "./support-Cffz6_Ft.mjs";
3
- import { r as lastBuildRecord, t as androidFacts } from "./result-Epkl6gyG.mjs";
4
- import { i as runAndroidOperation, n as registerAndroid, r as runAndroid, t as androidCommand } from "./android-DhiWSOFU.mjs";
5
- import { a as collectorLogFile, o as killPreviousCollector, s as startCollector } from "./launch-CrGndh8T.mjs";
1
+ import { i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-DWI9tGPU.mjs";
2
+ import { E as resolveVariant, T as resolveSystemImage, _ as findAapt, b as noDeviceDiagnostic, d as androidVariantSetting, f as apkDevClientFacts, g as dumpApkManifest, h as displayPath, i as NO_FINGERPRINT, p as apkPackage, r as NO_DEVICE, s as androidDevClientScheme, u as androidSystemImageSetting, x as parseXmltree, y as isReleaseVariant } from "./support-CqyWfZZI.mjs";
3
+ import { r as lastBuildRecord, t as androidFacts } from "./result-DuimMZKJ.mjs";
4
+ import { i as runAndroidOperation, n as registerAndroid, r as runAndroid, t as androidCommand } from "./android-BL-QqHjc.mjs";
5
+ import { a as collectorLogFile, o as killPreviousCollector, s as startCollector } from "./launch-CKHpthsw.mjs";
6
6
  export { NO_DEVICE, NO_FINGERPRINT, androidDevClientScheme, androidFacts, androidSystemImageSetting, androidVariantSetting, apkDevClientFacts, apkPackage, collectorLogFile, androidCommand as default, displayPath, dumpApkManifest, findAapt, formatDuration, isReleaseVariant, killPreviousCollector, lastBuildRecord, noDeviceDiagnostic, parseXmltree, phaseLine, registerAndroid, resolveSystemImage, resolveVariant, runAndroid, runAndroidOperation, shortHash, startCollector };
@@ -1,10 +1,10 @@
1
- import { D as ownership_claim_exports, S as process_identity_exports, l as WorkspaceProcessCleanupError, m as declareSpawnsOn, o as cancellableSleep, t as getExecutor, v as stopDeclaringSpawnsOn } from "./exec-aULwtNly.mjs";
2
- import { M as withDirLock$1, N as withDirLockAsync$1 } from "./workspace-state-3bF4TB8P.mjs";
3
- import { B as assignSlotDevice, K as projectDeviceSlots, O as withConfigLock$1, U as deviceSlotPlatforms, c as ensureConfig, d as getConfigDir, f as getConfigPath$1, k as withConfigLockAsync$1, q as removeSlotDevice, v as loadConfig$1, w as saveConfig } from "./config-D5qNWJEP.mjs";
4
- import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
5
- import { c as androidDataPartitionSizeBytes } from "./settings-C6UTYW2K.mjs";
6
- import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-1XxET4S8.mjs";
7
- import { c as pidExists, p as signalProcessTreeAsync } from "./metro-mKHEMO-a.mjs";
1
+ import { D as ownership_claim_exports, T as process_identity_exports, _ as declareSpawnsOn, f as WorkspaceProcessCleanupError, l as cancellableSleep, t as getExecutor, x as stopDeclaringSpawnsOn } from "./exec-CGuDzt40.mjs";
2
+ import { M as withDirLock$1, N as withDirLockAsync$1 } from "./workspace-state-BdZ-QgmB.mjs";
3
+ import { O as withConfigLock$1, c as ensureConfig, d as getConfigDir, f as getConfigPath$1, ft as deviceSlotPlatforms, gt as removeSlotDevice, ht as projectDeviceSlots, k as withConfigLockAsync$1, lt as assignSlotDevice, v as loadConfig$1, w as saveConfig } from "./config-BW0fAtoK.mjs";
4
+ import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
5
+ import { c as androidDataPartitionSizeBytes } from "./settings-B5IBDfTx.mjs";
6
+ import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-_WTria-r.mjs";
7
+ import { c as pidExists, p as signalProcessTreeAsync } from "./metro-B5PVz0Wv.mjs";
8
8
  import { renameSync, rmSync, writeFileSync } from "node:fs";
9
9
  import { isDeepStrictEqual } from "node:util";
10
10
  import { join } from "node:path";
@@ -47,6 +47,7 @@ function update(platform, change) {
47
47
  ios: [...current.ios],
48
48
  android: [...current.android],
49
49
  web: [...current.web],
50
+ ...current.systemImages.size ? { systemImages: [...current.systemImages] } : {},
50
51
  [platform]: [...entries]
51
52
  };
52
53
  const file = createdDevicesFile();
@@ -80,6 +81,10 @@ function forgetCreatedDeviceAsync(platform, id, signal, transaction = (forget) =
80
81
  signal
81
82
  });
82
83
  }
84
+ /** Waits asynchronously for the ledger lock, then records an Android system image directory Stim installed. */
85
+ function recordInstalledSystemImageAsync(directory) {
86
+ return withDirLockAsync$1(createdDevicesLock(), () => update("systemImages", (entries) => entries.size !== entries.add(directory).size), { ensureParent: () => ensurePrivateDir(getConfigDir()) });
87
+ }
83
88
  //#endregion
84
89
  //#region src/devices/sim-pool.ts
85
90
  const POOL_SETTING_REMEDY = "Run `stim guide settings` for the device pool bounds and where it can be set.";
@@ -400,7 +405,11 @@ function findBuildTool(tools, { home = androidHome(), readDir = readdirSync$1, e
400
405
  }
401
406
  return null;
402
407
  }
403
- function listInstalledSystemImages(onUnreadable, env = ambientEnv()) {
408
+ /**
409
+ * Lists the system images in the SDK. An image sdkmanager is still installing, or left mid-install, is left out unless
410
+ * `includePartial` asks for it.
411
+ */
412
+ function listInstalledSystemImages(onUnreadable, env = ambientEnv(), { includePartial = false } = {}) {
404
413
  const root = join$1(androidHome(env), "system-images");
405
414
  const images = [];
406
415
  const list = (dir) => {
@@ -416,12 +425,15 @@ function listInstalledSystemImages(onUnreadable, env = ambientEnv()) {
416
425
  const m = apiDir.match(/^android-(\d+)$/);
417
426
  if (!m) continue;
418
427
  const apiPath = join$1(root, apiDir);
419
- for (const tag of list(apiPath)) for (const arch of list(join$1(apiPath, tag))) images.push({
420
- api: Number(m[1]),
421
- tag,
422
- arch,
423
- pkg: `system-images;${apiDir};${tag};${arch}`
424
- });
428
+ for (const tag of list(apiPath)) for (const arch of list(join$1(apiPath, tag))) {
429
+ if (!includePartial && existsSync$1(join$1(apiPath, tag, arch, ".installer"))) continue;
430
+ images.push({
431
+ api: Number(m[1]),
432
+ tag,
433
+ arch,
434
+ pkg: `system-images;${apiDir};${tag};${arch}`
435
+ });
436
+ }
425
437
  }
426
438
  return images;
427
439
  }
@@ -1807,4 +1819,4 @@ function ownedAvdSerialResolver({ timeoutMs } = {}) {
1807
1819
  };
1808
1820
  }
1809
1821
  //#endregion
1810
- export { probeEmulatorSerial as $, getAvdNameForSerialAsync as A, listOrphanedAvdDirectories as B, deleteAvd as C, selectParked as Ct, extractEmulatorFailure as D, recordCreatedDevice as Dt, emulatorProbeSession as E, readCreatedDevices$1 as Et, listAvdDeviceProfiles as F, ownedAvdName as G, ownedAvdDeviceProfile as H, listAvdDeviceProfilesAsync as I, ownedAvdSystemImage as J, ownedAvdSerialResolver as K, listAvds as L, isEmulatorToolAbsent as M, listAdbDevices as N, findBuildTool as O, recordCreatedDeviceAsync as Ot, listAdbDevicesAsync as P, pickDefaultSystemImage as Q, listAvdsAsync as R, createOwnedAvd as S, removeParkedAfter as St, emulatorFailureRemedy as T, forgetCreatedDeviceAsync as Tt, ownedAvdDirectory as U, nextConsolePort as V, ownedAvdMatchesConfiguration as W, parseAvdSystemImage as X, parseAvdDeviceProfile as Y, physicalDeviceModel as Z, avdPoolConfiguration as _, eraseParkedAfter as _t, androidDeviceAbi as a, resolvePhysicalDevice as at, bootAndroidEmulator as b, parkedMaxSetting as bt, androidPoolNoCandidatesRefusal as c, trimAndroidCaches as ct, androidToolPath as d, wipeAvdUserData as dt, profileNeedsFoldFeature as et, assertOwnedAvdStopped as f, isStimOwnedAvd as ft, avdPathExists as g, dropParked as gt, avdNameAbsent as h, adoptParked as ht, androidDataFreeBytes as i, resolveOwnedAvdSerialAsync as it, hostSystemImageArch as j, getAvdNameForSerial as k, configuredAndroidEmulatorApp as kt, androidSystemImageAbi as l, waitForAndroidEmulatorShutdown as lt, avdIniPaths as m, POOL_SETTING_REMEDY as mt, OWNED_AVD_CONFIG_DEFAULTS as n, removeOwnedEmulatorMetroReverses as nt, androidHome as o, shutdownAndroidEmulator as ot, assertOwnedAvdStoppedAsync as p, isStimOwnedSim as pt, ownedAvdSerialResolverAsync as q, androidBuildToolName as r, resetAdoptedAvd as rt, androidPoolCandidates as s, systemImageSupportsFold as st, DEFAULT_AVD_DEVICE_PROFILE as t, removeMetroReverses as tt, androidToolCwd as u, waitForBoot as ut, avdStorageExists as v, isLegacyDeletionClaim as vt, emulatorDiskSpaceRemedy as w, forgetCreatedDevice as wt, configureNewOwnedAvd as x, readParked as xt, avdStorageRoots as y, parkSim as yt, listInstalledSystemImages as z };
1822
+ export { probeEmulatorSerial as $, getAvdNameForSerialAsync as A, configuredAndroidEmulatorApp as At, listOrphanedAvdDirectories as B, deleteAvd as C, selectParked as Ct, extractEmulatorFailure as D, recordCreatedDevice as Dt, emulatorProbeSession as E, readCreatedDevices$1 as Et, listAvdDeviceProfiles as F, ownedAvdName as G, ownedAvdDeviceProfile as H, listAvdDeviceProfilesAsync as I, ownedAvdSystemImage as J, ownedAvdSerialResolver as K, listAvds as L, isEmulatorToolAbsent as M, listAdbDevices as N, findBuildTool as O, recordCreatedDeviceAsync as Ot, listAdbDevicesAsync as P, pickDefaultSystemImage as Q, listAvdsAsync as R, createOwnedAvd as S, removeParkedAfter as St, emulatorFailureRemedy as T, forgetCreatedDeviceAsync as Tt, ownedAvdDirectory as U, nextConsolePort as V, ownedAvdMatchesConfiguration as W, parseAvdSystemImage as X, parseAvdDeviceProfile as Y, physicalDeviceModel as Z, avdPoolConfiguration as _, eraseParkedAfter as _t, androidDeviceAbi as a, resolvePhysicalDevice as at, bootAndroidEmulator as b, parkedMaxSetting as bt, androidPoolNoCandidatesRefusal as c, trimAndroidCaches as ct, androidToolPath as d, wipeAvdUserData as dt, profileNeedsFoldFeature as et, assertOwnedAvdStopped as f, isStimOwnedAvd as ft, avdPathExists as g, dropParked as gt, avdNameAbsent as h, adoptParked as ht, androidDataFreeBytes as i, resolveOwnedAvdSerialAsync as it, hostSystemImageArch as j, getAvdNameForSerial as k, recordInstalledSystemImageAsync as kt, androidSystemImageAbi as l, waitForAndroidEmulatorShutdown as lt, avdIniPaths as m, POOL_SETTING_REMEDY as mt, OWNED_AVD_CONFIG_DEFAULTS as n, removeOwnedEmulatorMetroReverses as nt, androidHome as o, shutdownAndroidEmulator as ot, assertOwnedAvdStoppedAsync as p, isStimOwnedSim as pt, ownedAvdSerialResolverAsync as q, androidBuildToolName as r, resetAdoptedAvd as rt, androidPoolCandidates as s, systemImageSupportsFold as st, DEFAULT_AVD_DEVICE_PROFILE as t, removeMetroReverses as tt, androidToolCwd as u, waitForBoot as ut, avdStorageExists as v, isLegacyDeletionClaim as vt, emulatorDiskSpaceRemedy as w, forgetCreatedDevice as wt, configureNewOwnedAvd as x, readParked as xt, avdStorageRoots as y, parkSim as yt, listInstalledSystemImages as z };
@@ -1,7 +1,7 @@
1
- import { M as withDirLock$1, _ as ensureWorkspaceStorage } from "./workspace-state-3bF4TB8P.mjs";
2
- import { d as getConfigDir } from "./config-D5qNWJEP.mjs";
3
- import { m as defaultAndroidLayout } from "./settings-C6UTYW2K.mjs";
4
- import { r as register } from "./cache-manifest-CfiEny4T.mjs";
1
+ import { M as withDirLock$1, _ as ensureWorkspaceStorage } from "./workspace-state-BdZ-QgmB.mjs";
2
+ import { d as getConfigDir } from "./config-BW0fAtoK.mjs";
3
+ import { m as defaultAndroidLayout } from "./settings-B5IBDfTx.mjs";
4
+ import { r as register } from "./cache-manifest-8JX9S1QJ.mjs";
5
5
  import { createHash, randomUUID } from "node:crypto";
6
6
  import { accessSync, constants, existsSync, mkdirSync, readFileSync, realpathSync, renameSync, statSync, writeFileSync } from "node:fs";
7
7
  import { join } from "node:path";
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
+ import { t as getExecutor } from "./exec-CGuDzt40.mjs";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import { appendFileSync, existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
5
5
  import { join } from "node:path";