stim 1.29.0 → 1.31.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 (146) hide show
  1. package/dist/{acquire-artifact-C2DKfenN.mjs → acquire-artifact-P84h3ssa.mjs} +1 -1
  2. package/dist/{act-CrTcskiE.mjs → act-lcOIEy32.mjs} +18 -18
  3. package/dist/{activity-BR5oHSO5.mjs → activity-Dw4N_RFe.mjs} +4 -4
  4. package/dist/{agent-device-usage-output-W0x4SoC7.mjs → agent-device-usage-output-Boie2yB-.mjs} +4 -4
  5. package/dist/{android-CLU_MMnb.mjs → android-BeeC15Ve.mjs} +1 -1
  6. package/dist/{android-l616dRP1.mjs → android-DhiWSOFU.mjs} +47 -43
  7. package/dist/{android-BHKgeOuq.mjs → android-DsEj2CCs.mjs} +65 -35
  8. package/dist/{android-BPmCmyAy.mjs → android-aIuJZoDu.mjs} +5 -5
  9. package/dist/{android-cas-BH6K12__.mjs → android-cas-CbumHXIq.mjs} +4 -4
  10. package/dist/api.mjs +26 -26
  11. package/dist/{apk-signed-tail-B-wKoF_8.mjs → apk-signed-tail-B9Usseps.mjs} +2 -2
  12. package/dist/{artifact-Dm9ScLrh.mjs → artifact-Cr34-Yyy.mjs} +12 -12
  13. package/dist/{artifact-DHuFYfhD.mjs → artifact-ta3xA0c4.mjs} +12 -12
  14. package/dist/{auto-placement-C8sJsyMN.mjs → auto-placement-DtTRG0rk.mjs} +12 -12
  15. package/dist/{browser-web-_tQTbQUs.mjs → browser-web-DuULNZrS.mjs} +11 -11
  16. package/dist/{build-DtCU9Kim.mjs → build-BpFFbdXD.mjs} +22 -22
  17. package/dist/{build-cache-BGwTsIEa.mjs → build-cache-BsKim4V7.mjs} +4 -4
  18. package/dist/{build-plan-CWyjMPKo.mjs → build-plan-DH1rT11x.mjs} +6 -6
  19. package/dist/{cache-manifest-evF_zJ9U.mjs → cache-manifest-CfiEny4T.mjs} +1 -1
  20. package/dist/cache-manifest.mjs +1 -1
  21. package/dist/{ccache-DsDkdP72.mjs → ccache-DVDO2ocE.mjs} +16 -16
  22. package/dist/{cli-3fjOg-Oc.mjs → cli-C0jjwTuM.mjs} +18 -18
  23. package/dist/cli.mjs +1 -1
  24. package/dist/{client-BTUH8TF1.mjs → client-DhJOvSvh.mjs} +4 -4
  25. package/dist/collector-run.mjs +4 -4
  26. package/dist/{command-output-DjCsmzLZ.mjs → command-output-VrXd6qPX.mjs} +1 -1
  27. package/dist/{config-AbUjIBOQ.mjs → config-D5qNWJEP.mjs} +2 -2
  28. package/dist/{dependencies-CHNqX6Pr.mjs → dependencies-DIU-5rnG.mjs} +38 -37
  29. package/dist/{dependency-state-CPKAKCZ8.mjs → dependency-state-DZVln1P9.mjs} +1 -1
  30. package/dist/{dev-client-CROrxj1x.mjs → dev-client-DeAg0fso.mjs} +2 -2
  31. package/dist/device-C2WsPgFt.mjs +761 -0
  32. package/dist/device-DuNLOlR6.mjs +175 -0
  33. package/dist/{device-Bmm5qjM-.mjs → device-android-BjhH0Ru3.mjs} +39 -200
  34. package/dist/{device-capacity-B2ChA-bz.mjs → device-capacity-Du5wBTNJ.mjs} +175 -76
  35. package/dist/device-host-worker.mjs +49 -36
  36. package/dist/{device-ios-CYzivd31.mjs → device-ios-CUYUhSYO.mjs} +27 -17
  37. package/dist/{device-lease-run-qRq_2W2V.mjs → device-lease-run-CHXQEn-7.mjs} +4 -4
  38. package/dist/{device-pool-CrmiE4_x.mjs → device-pool-kUHO7MHO.mjs} +3 -3
  39. package/dist/{device-provision-CK2XiEp1.mjs → device-provision-e7bKS7lx.mjs} +8 -8
  40. package/dist/{doctor-BO_kaFWX.mjs → doctor-B6kIVgU9.mjs} +1 -1
  41. package/dist/{doctor-Cp4-HN1f.mjs → doctor-BGcsAgAV.mjs} +15 -15
  42. package/dist/doctor-fingerprint.mjs +1 -1
  43. package/dist/{doctor-Dr3C1iXV.mjs → doctor-hva3sd9f.mjs} +37 -26
  44. package/dist/{doctor-watchman-CJr2aXXv.mjs → doctor-watchman-DJY550yz.mjs} +4 -4
  45. package/dist/{eas-build-D-9HmGZS.mjs → eas-build-CBFgseh1.mjs} +2 -2
  46. package/dist/{eas-fallback-Cemt2GVL.mjs → eas-fallback-DFXdz4d6.mjs} +4 -4
  47. package/dist/{eas-session-ledger-B0KLZx5m.mjs → eas-session-ledger-aFBLTZr2.mjs} +19 -6
  48. package/dist/{error-diagnostics-CV_1RoEH.mjs → error-diagnostics-CCsq_3uG.mjs} +8 -8
  49. package/dist/{gc-CKHqL4aS.mjs → gc-B0K4d_PL.mjs} +17 -17
  50. package/dist/{gc-DjXwQXHK.mjs → gc-DASUa3Z_.mjs} +2 -2
  51. package/dist/{guide-CeRlWVsS.mjs → guide-Civo5-zV.mjs} +178 -28
  52. package/dist/{hosted-android-DI_vvv7U.mjs → hosted-android-CH1Sm4wo.mjs} +3 -3
  53. package/dist/{hosted-client-CgoxdU9j.mjs → hosted-client-5ur3YpxY.mjs} +36 -12
  54. package/dist/{hosted-logs-C-4INmkn.mjs → hosted-logs-BYg4yeti.mjs} +6 -6
  55. package/dist/{hosted-logs-sync-Bf5s02fi.mjs → hosted-logs-sync-BPe8xnMu.mjs} +7 -11
  56. package/dist/{hosted-macos-Doh85YUM.mjs → hosted-macos-BagT0Gn3.mjs} +5 -5
  57. package/dist/{hosted-native-DvZENAL-.mjs → hosted-native-kaR4nUHk.mjs} +9 -8
  58. package/dist/{idle-shutdown-BM37gMfU.mjs → idle-shutdown-BWHQ7mQG.mjs} +6 -6
  59. package/dist/{ios-CNDH6fNF.mjs → ios-BKR-Dq46.mjs} +8 -8
  60. package/dist/{ios-CoMCWfub.mjs → ios-CdAV4-1E.mjs} +4 -4
  61. package/dist/{ios-UM_dManb.mjs → ios-DUL68MI5.mjs} +33 -32
  62. package/dist/{ios-device-L1-pota_.mjs → ios-device-Dz8gFZ0K.mjs} +1 -1
  63. package/dist/{ios-project-DJYptOCh.mjs → ios-project-Br1tVYWX.mjs} +7 -7
  64. package/dist/{ios-state-Ce_dystM.mjs → ios-state-BEIJRJ7P.mjs} +1 -1
  65. package/dist/{js-swap-BthE4kZC.mjs → js-swap-BfG8XpyS.mjs} +4 -4
  66. package/dist/{launch-D798aSm8.mjs → launch-CrGndh8T.mjs} +19 -19
  67. package/dist/{lightened-vSxkstg6.mjs → lightened-DZ9Ip0T3.mjs} +4 -4
  68. package/dist/{logs-CilPftm3.mjs → logs-C-hfMsxK.mjs} +7 -6
  69. package/dist/{logs-BND8MiBq.mjs → logs-DpIKWT3A.mjs} +7 -7
  70. package/dist/{macos-BOQrKYeJ.mjs → macos-DNmKwfDy.mjs} +1 -1
  71. package/dist/{macos-CxUi9xcE.mjs → macos-DZ9ZSolN.mjs} +19 -19
  72. package/dist/macos-run.mjs +1 -1
  73. package/dist/maintenance-run.mjs +5 -5
  74. package/dist/{metro-BMQHczcf.mjs → metro-mKHEMO-a.mjs} +2 -2
  75. package/dist/{metro-request-BtF7ox53.mjs → metro-request-RDhyx85c.mjs} +1 -1
  76. package/dist/{named-ports-DcktE2Pw.mjs → named-ports-B0hCk2v-.mjs} +2 -2
  77. package/dist/{native-android-BkhrCjdX.mjs → native-android-DExhFqR6.mjs} +16 -16
  78. package/dist/{native-gradle-artifact-inputs-Cw4P6Gyr.mjs → native-gradle-artifact-inputs-Bcmbdc23.mjs} +3 -3
  79. package/dist/{native-runtime-DyH2gkXK.mjs → native-runtime-D4qgnjK_.mjs} +6 -6
  80. package/dist/{native-xcode-inputs-DV8jr3kJ.mjs → native-xcode-inputs-EWma1lXh.mjs} +2 -2
  81. package/dist/{native-xcode-ios-DdpPG2iT.mjs → native-xcode-ios-Y6rzmWTc.mjs} +15 -15
  82. package/dist/offload-worker.mjs +19 -19
  83. package/dist/{ownership-Dtz9G5Gl.mjs → ownership-CCfiBfOP.mjs} +2 -2
  84. package/dist/{phone-reverses-DZRad8HT.mjs → phone-reverses-Drj5QQCh.mjs} +4 -4
  85. package/dist/{placement-log-CoN6xrjY.mjs → placement-log-CFT8SnlS.mjs} +1 -1
  86. package/dist/{plan-placement-7sHuqR-r.mjs → plan-placement-DhKCH_wF.mjs} +6 -6
  87. package/dist/{ports-VQSAPZhl.mjs → ports-BNtJ5DCj.mjs} +3 -3
  88. package/dist/{prebuild-Bqp0LFGN.mjs → prebuild-D0hvmO4j.mjs} +9 -9
  89. package/dist/{project-D1n0K4yg.mjs → project-DCLkDM8C.mjs} +15 -15
  90. package/dist/{react-native-android-FQ-yX3Mv.mjs → react-native-android-Dp7vctEA.mjs} +24 -24
  91. package/dist/{react-native-build-D58bIqV9.mjs → react-native-build-vK2lFYfN.mjs} +7 -7
  92. package/dist/{react-native-doctor-AkUH2aca.mjs → react-native-doctor-BtWzwZHU.mjs} +9 -8
  93. package/dist/{react-native-ios-Dmsv8j7T.mjs → react-native-ios-DW1Ax3Yv.mjs} +16 -15
  94. package/dist/{recordings-CHMaF73C.mjs → recordings-BWnIlhZH.mjs} +1 -1
  95. package/dist/{reload-BV0nD-k9.mjs → reload-B-d7-CsI.mjs} +14 -14
  96. package/dist/{reload-CDKEzzaf.mjs → reload-BS_ntVV_.mjs} +1 -1
  97. package/dist/{remote-C8xyslUa.mjs → remote-DScVlaMz.mjs} +8 -8
  98. package/dist/{result-9fqcJ90W.mjs → result-Epkl6gyG.mjs} +16 -16
  99. package/dist/{run-BQAmrohh.mjs → run-2CHAJ9Oj.mjs} +1 -1
  100. package/dist/{selection-D1ZDzHFX.mjs → selection-C95m--1_.mjs} +3 -3
  101. package/dist/{server-bare-CEQdB_F4.mjs → server-bare-CFyVFZXJ.mjs} +1 -1
  102. package/dist/{server-command-RlS-Kl4a.mjs → server-command-B1gDRJB2.mjs} +4 -4
  103. package/dist/{server-expo-bB1VV2k-.mjs → server-expo-CP4dURQp.mjs} +2 -2
  104. package/dist/server-expo-D3k9mvP8.mjs +2 -0
  105. package/dist/{settings-D776ygML.mjs → settings-C6UTYW2K.mjs} +1 -1
  106. package/dist/{settings-BcVCcAT5.mjs → settings-CjTRNCi3.mjs} +2 -2
  107. package/dist/{settings-payload-_aatELz2.mjs → settings-payload-zf5EnCTg.mjs} +4 -4
  108. package/dist/{settings-write-CkTVGQ4O.mjs → settings-write-Fe0K6BeC.mjs} +5 -5
  109. package/dist/settings.schema.json +45 -3
  110. package/dist/{simslim-CbpHERcv.mjs → simslim-93xmPh-d.mjs} +1 -1
  111. package/dist/{slot-launch-Dbgfh8gc.mjs → slot-launch-B4MHzVX2.mjs} +6 -6
  112. package/dist/{stage-BuHuRj1y.mjs → stage-DDrnM0CY.mjs} +1 -1
  113. package/dist/{start-Cr-c3Xhq.mjs → start-BXl5tkv8.mjs} +1 -1
  114. package/dist/{start-Dlv4XXTP.mjs → start-LSwIFlBv.mjs} +10 -10
  115. package/dist/{state-D5ZxwCGJ.mjs → state-CM_HvvkS.mjs} +2 -2
  116. package/dist/{state-C2AUjjhg.mjs → state-CiflgxTP.mjs} +1 -1
  117. package/dist/{stats-D5c-uIBp.mjs → stats-EgpYD536.mjs} +4 -4
  118. package/dist/{status-D6PBK6_-.mjs → status-BLDvhatv.mjs} +26 -25
  119. package/dist/{status-DbQv--Yb.mjs → status-DBMD7ZQT.mjs} +1 -1
  120. package/dist/{status-CK7ZoEhV.mjs → status-GQ-JqvRi.mjs} +1 -1
  121. package/dist/{status-watch-okrpea4i.mjs → status-watch-BwG4lJ1q.mjs} +4 -4
  122. package/dist/status-worker.mjs +1 -1
  123. package/dist/{stim-desktop-CYXLFpFS.mjs → stim-desktop-1XxET4S8.mjs} +1 -1
  124. package/dist/{stop-CHtAiv79.mjs → stop-4SAV_RR8.mjs} +2 -2
  125. package/dist/{stop-uRQ-zYcl.mjs → stop-BfNhzvXO.mjs} +4 -4
  126. package/dist/{stop-p9uSKuGE.mjs → stop-WyrZQuX6.mjs} +15 -15
  127. package/dist/supervisor-run.mjs +13 -13
  128. package/dist/{support-PFyTkrnr.mjs → support-Cffz6_Ft.mjs} +15 -11
  129. package/dist/{support-BMpQIug0.mjs → support-Cs24xRQa.mjs} +9 -9
  130. package/dist/{swiftpm-artifact-inputs-Cddq6jN2.mjs → swiftpm-artifact-inputs-yp8D5LE4.mjs} +1 -1
  131. package/dist/{swiftpm-macos-BSj9iZlI.mjs → swiftpm-macos-D0CzQtpp.mjs} +8 -8
  132. package/dist/toolchain-BEra9AIX.mjs +2 -0
  133. package/dist/{toolchain-CLGnEUgT.mjs → toolchain-CGdgD4x4.mjs} +19 -11
  134. package/dist/{warm-progress--KkkBBaq.mjs → warm-progress-_aTMvkIH.mjs} +3 -3
  135. package/dist/{web-xlVssjQf.mjs → web-BE89ONcc.mjs} +8 -8
  136. package/dist/web-DQPxvFVD.mjs +2 -0
  137. package/dist/web-run.mjs +4 -4
  138. package/dist/{workspace-state-DGwkPXwq.mjs → workspace-state-3bF4TB8P.mjs} +2 -2
  139. package/dist/{workspaces-CvSYD_78.mjs → workspaces-BNEyJ1B_.mjs} +15 -12
  140. package/dist/{worktree-CaQBf6kh.mjs → worktree-BTrii9e_.mjs} +24 -24
  141. package/dist/{worktree-DTOIohFe.mjs → worktree-DB3Ypdj6.mjs} +1 -1
  142. package/package.json +7 -7
  143. package/dist/device-BvpasThQ.mjs +0 -297
  144. package/dist/server-expo-BVV9qy31.mjs +0 -2
  145. package/dist/toolchain-B-mzR9Rh.mjs +0 -2
  146. package/dist/web-BxSo493O.mjs +0 -2
@@ -1,5 +1,5 @@
1
1
  import { l as WorkspaceProcessCleanupError } from "./exec-aULwtNly.mjs";
2
- import { I as waitForSharedBuild } from "./activity-BR5oHSO5.mjs";
2
+ import { I as waitForSharedBuild } from "./activity-Dw4N_RFe.mjs";
3
3
  import { rmSync } from "node:fs";
4
4
  //#region src/engine/artifact-lifecycle.ts
5
5
  async function runArtifactLifecycle(phases) {
@@ -1,27 +1,27 @@
1
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-DGwkPXwq.mjs";
3
- import { F as isOnMountedVolume, G as projectDeviceSlots, I as listMountedVolumes, L as measuredDirectorySizeAsync, N as directorySizeAsync, P as formatBytes, _ as loadConfig$1, p as getProject } from "./config-AbUjIBOQ.mjs";
4
- import { o as formatLongDuration, u as plural } from "./command-output-DjCsmzLZ.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
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-D776ygML.mjs";
7
- import { P as readRemoteSession, i as findProjectRoot$1 } from "./project-D1n0K4yg.mjs";
8
- import { A as listAdbDevices, D as getAvdNameForSerial, F as listAvdsAsync, G as ownedAvdSerialResolverAsync, O as getAvdNameForSerialAsync, P as listAvds, V as ownedAvdDirectory, j as listAdbDevicesAsync, yt as readParked } from "./android-BHKgeOuq.mjs";
9
- import { c as pidExists } from "./metro-BMQHczcf.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-DsDkdP72.mjs";
11
- import { o as readWebRecord, u as webFacts } from "./state-D5ZxwCGJ.mjs";
12
- import { a as unregister, n as readManifest } from "./cache-manifest-evF_zJ9U.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-CvSYD_78.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";
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-BR5oHSO5.mjs";
16
- import { d as listAllIosSims, f as listAllIosSimsAsync } from "./ios-CoMCWfub.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";
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-p9uSKuGE.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-CaQBf6kh.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
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--KkkBBaq.mjs";
23
- import { a as restoreProblem, r as recordLightened, t as finishLightened } from "./lightened-vSxkstg6.mjs";
24
- import { i as writeIdleShutdownEvent, n as dueIdleDevices, r as shutDownIdleDevices } from "./idle-shutdown-BM37gMfU.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";
25
25
  import { readClaimSet } from "@stim-cli/core/ownership-claim";
26
26
  import { existsSync, lstatSync, readFileSync, readdirSync, readlinkSync, realpathSync, rmSync, statSync } from "node:fs";
27
27
  import { tmpdir } from "node:os";
@@ -1,9 +1,9 @@
1
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-DGwkPXwq.mjs";
3
- import { U as parseDeviceSlotKey, V as deviceSlotKey, d as getConfigDir, q as validateDeviceSlot } from "./config-AbUjIBOQ.mjs";
4
- import { a as formatElapsed, i as formatDuration, m as shortHash } from "./command-output-DjCsmzLZ.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
5
  import { n as runOperationFileQuiet } from "./operation-exec-Dp4FuIGR.mjs";
6
- import { C as resolveBuild } from "./build-cache-BGwTsIEa.mjs";
6
+ import { C as resolveBuild } from "./build-cache-BsKim4V7.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
1
  import { S as process_identity_exports } from "./exec-aULwtNly.mjs";
2
- import { P as formatBytes } from "./config-AbUjIBOQ.mjs";
3
- import { o as formatLongDuration } from "./command-output-DjCsmzLZ.mjs";
4
- import { bt as measureDu, u as listWorkspaceDirs, xt as writeUsageCache, yt as canonical } from "./workspaces-CvSYD_78.mjs";
5
- import { c as parseAgentDeviceRecord, o as envDir, u as processMatches } from "./activity-BR5oHSO5.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";
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
1
  import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { u as androidToolCwd } from "./android-BHKgeOuq.mjs";
2
+ import { u as androidToolCwd } from "./android-DsEj2CCs.mjs";
3
3
  //#region src/collector/android.ts
4
4
  const LEVEL_BY_LETTER = {
5
5
  V: "debug",
@@ -1,42 +1,43 @@
1
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-DGwkPXwq.mjs";
3
- import { B as deviceSlotFileKey, E as upsertProject, H as deviceSlotPlatforms, O as withConfigLockAsync$1, W as parseDeviceSlotOption, p as getProject, q as validateDeviceSlot, u as getConcurrencyLimits } from "./config-AbUjIBOQ.mjs";
4
- import { _ as stepTimer, f as refuseNoProject, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-DjCsmzLZ.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-D776ygML.mjs";
6
- import { f as projectRegistry, i as findProjectRoot$1, l as projectShortcut, t as NO_PROJECT_REFUSAL, z as writeWorkspaceLaunchAsync } from "./project-D1n0K4yg.mjs";
7
- import { A as listAdbDevices, Dt as configuredAndroidEmulatorApp, I as listInstalledSystemImages, Y as physicalDeviceModel, Z as probeEmulatorSerial, a as androidDeviceAbi, ct as waitForBoot, nt as resolveOwnedAvdSerialAsync, rt as resolvePhysicalDevice } from "./android-BHKgeOuq.mjs";
8
- import { c as pidExists, d as resolveProjectMetro } from "./metro-BMQHczcf.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";
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-DsDkdP72.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-CvSYD_78.mjs";
12
- import { Q as cancelledFailure, at as runCancellation, ot as runCancellationSignal, st as withNativeBuildRun } from "./toolchain-CLGnEUgT.mjs";
13
- import { F as waitForBuild, M as acquireBuildLock, P as releaseBuildLock } from "./activity-BR5oHSO5.mjs";
14
- import { T as storedAppId } from "./build-cache-BGwTsIEa.mjs";
15
- import { S as setRemoteLogSink } from "./client-BTUH8TF1.mjs";
16
- import { d as resolveBuildPlacement, s as parseBuildMachineOption } from "./selection-D1ZDzHFX.mjs";
17
- import { r as hostedMetroSettings } from "./metro-request-BtF7ox53.mjs";
18
- import { a as writeHostedAndroidAsync, i as writeDevicePlacementAsync, t as readHostedAndroid } from "./ios-state-Ce_dystM.mjs";
19
- import { n as prepareHostedAndroid, t as placeHostedAndroid } from "./hosted-android-DI_vvv7U.mjs";
20
- import { n as verifyCollectorOwnership } from "./ownership-Dtz9G5Gl.mjs";
21
- import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-vSxkstg6.mjs";
22
- import { c as startDevServer } from "./start-Dlv4XXTP.mjs";
23
- import { a as acquireRunLease, d as runLease, f as waitFlagConflict, o as leaseExpiryText, u as releaseLeaseOnAbort } from "./device-lease-run-qRq_2W2V.mjs";
24
- import { n as DeviceAdmissionRefusal, r as checkDeviceCapacity } from "./device-capacity-B2ChA-bz.mjs";
25
- import { a as resolveEasDevelopmentBuild, r as isEasBuildFailure } from "./eas-build-D-9HmGZS.mjs";
26
- import { t as followHostedLaunchLogs } from "./hosted-logs-sync-Bf5s02fi.mjs";
27
- import { f as settleFingerprintCheck } from "./prebuild-Bqp0LFGN.mjs";
28
- import { i as launchOutcomeRecord, n as ensureWorkspaceStorageSafely, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-DyH2gkXK.mjs";
29
- import { n as devicePlacementRecord } from "./placement-log-CoN6xrjY.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-PFyTkrnr.mjs";
31
- import { t as acquireAndroidArtifact } from "./artifact-DHuFYfhD.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-9fqcJ90W.mjs";
33
- import { n as devicePlacementLine, t as automaticDevicePlacement } from "./auto-placement-C8sJsyMN.mjs";
34
- import { i as verifyAndroidMetroRun, r as finishAndroidRun } from "./launch-D798aSm8.mjs";
35
- import { t as checkEasFallback } from "./eas-fallback-Cemt2GVL.mjs";
36
- import { a as AvdRecoveryError, i as AvdBootError, n as ensureBooted, o as warmMetro, r as ensureOwnedDevice, t as didSetUpDevice } from "./device-Bmm5qjM-.mjs";
37
- import { t as selectFromPool } from "./device-pool-CrmiE4_x.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";
38
39
  import { t as unsupportedPlan } from "./project-plan-BPwbLwQu.mjs";
39
- import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-CWyjMPKo.mjs";
40
+ import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-DH1rT11x.mjs";
40
41
  import { join } from "node:path";
41
42
  import { workspaceId } from "@stim-cli/core";
42
43
  import { hostedAndroidStatus, parseMachine } from "@stim-cli/core/state";
@@ -71,7 +72,9 @@ async function connectAndroidHosting({ root, slot, machine, release, appMode = r
71
72
  try {
72
73
  const resolved = await resolveSerial(local.avdName, { timeoutMs: 5e3 });
73
74
  running = Boolean(resolved.serial) || !resolved.notRunning && !resolved.missing;
74
- } catch {}
75
+ } catch (error) {
76
+ running = !isEmulatorToolAbsent(error) || avdStorageExists(local.avdName);
77
+ }
75
78
  if (running) return { failure: {
76
79
  code: "STIM_BAD_ARG",
77
80
  message: `This workspace's Android emulator for slot ${slot} runs on this machine; run stim stop first.`
@@ -443,7 +446,7 @@ function runAndroidOperation(context, root, opts = {}) {
443
446
  }
444
447
  }, { write: (line) => context.output("stderr", `${chalk.dim(phaseLine("lock", line))}\n`) });
445
448
  }
446
- function resolveRunAndroidOptions({ context, root, json = false, remoteDevice: commandRemoteBackend = null, resolveSettingsFor = resolveSettings, resolveRemoteDeviceContext = resolveRemoteContext, remoteDeviceDeps: makeRemoteDeviceDeps = remoteAndroidDeps, resolveEasBin = resolveEasCliBin, ensureMetroReachable: ensureRemoteMetro = ensureMetroReachable, ensureRemoteBootOwned: ensureRemoteOwned = ensureRemoteBootOwned, detectRemoteProviders = detectProviders, metroCheck = true, useBuildCache = true, easProfile, resolveEasDevelopmentBuild: resolveEasBuild = resolveEasDevelopmentBuild, variant: variantFlag = null, systemImage: systemImageFlag = null, deviceProfile: deviceProfileFlag, device: deviceFlag = null, wait: waitFlag = void 0, waitConflict = false, acquireLease = acquireRunLease, makeRunLease = runLease, selectPool = selectFromPool, onLeaseSignal = releaseLeaseOnAbort, listDevices = listAdbDevices, deviceModel = physicalDeviceModel, deviceAbi = androidDeviceAbi, isEmulatorDevice = probeEmulatorSerial, readApkPackage = async (apkPath) => apkPackage(await dumpApkManifest(apkPath, { context })), getLimits = getConcurrencyLimits, checkCapacity = checkDeviceCapacity, acquireSlot = acquireBuildSlot, releaseSlot = releaseBuildSlot, ensureDevice = ensureOwnedDevice, listSystemImages = listInstalledSystemImages, listDeviceProfiles, ensureDeviceBooted = ensureBooted, resolveAvdSerial = resolveOwnedAvdSerialAsync, waitForDeviceBoot = waitForBoot, dataFreeBytes, trimCaches, wipeDevice, resolveMetro = resolveProjectMetro, warmMetro: prewarmMetro = warmMetro, startServer = startDevServer, readState = readWorkspaceState$1, pidAlive = pidExists, verifyCollector = verifyCollectorOwnership, verifyLaunched = verifyLaunch, ensureStorage = ensureWorkspaceStorageSafely, acquireLock = acquireBuildLock, releaseLock = releaseBuildLock, waitForBuild: waitForBuild$1 = waitForBuild, easAuth = checkEasAuth, resolveRemoteBuild = resolveRemote, uploadRemoteBuild = uploadRemote, resolveCacheProvider = resolveCacheProviderConfig, loadCacheProviderModule = loadCacheProvider, storedAppId: storedAppId$1 = storedAppId, install = installAndroidApp, launch = launchAndroidApp, launchRelease = launchAndroidReleaseApp, verifyReleaseLaunched = verifyAndroidReleaseLaunch, resolveDevClientScheme = (projectRoot, apkPath, options) => androidDevClientScheme(projectRoot, apkPath, {
449
+ function resolveRunAndroidOptions({ context, root, json = false, remoteDevice: commandRemoteBackend = null, resolveSettingsFor = resolveSettings, resolveRemoteDeviceContext = resolveRemoteContext, remoteDeviceDeps: makeRemoteDeviceDeps = remoteAndroidDeps, resolveEasBin = resolveEasCliBin, ensureMetroReachable: ensureRemoteMetro = ensureMetroReachable, ensureRemoteBootOwned: ensureRemoteOwned = ensureRemoteBootOwned, detectRemoteProviders = detectProviders, metroCheck = true, useBuildCache = true, easProfile, resolveEasDevelopmentBuild: resolveEasBuild = resolveEasDevelopmentBuild, variant: variantFlag = null, systemImage: systemImageFlag = null, deviceProfile: deviceProfileFlag, device: deviceFlag = null, wait: waitFlag = void 0, waitConflict = false, acquireLease = acquireRunLease, makeRunLease = runLease, selectPool = selectFromPool, onLeaseSignal = releaseLeaseOnAbort, listDevices = listAdbDevicesAsync, deviceModel = physicalDeviceModel, deviceAbi = androidDeviceAbi, isEmulatorDevice = probeEmulatorSerial, readApkPackage = async (apkPath) => apkPackage(await dumpApkManifest(apkPath, { context })), getLimits = getConcurrencyLimits, checkCapacity = checkDeviceCapacity, acquireSlot = acquireBuildSlot, releaseSlot = releaseBuildSlot, ensureDevice = ensureOwnedDevice, listSystemImages = listInstalledSystemImages, listDeviceProfiles, ensureDeviceBooted = ensureBooted, resolveAvdSerial = resolveOwnedAvdSerialAsync, waitForDeviceBoot = waitForBoot, dataFreeBytes, trimCaches, wipeDevice, resolveMetro = resolveProjectMetro, warmMetro: prewarmMetro = warmMetro, startServer = startDevServer, readState = readWorkspaceState$1, pidAlive = pidExists, verifyCollector = verifyCollectorOwnership, verifyLaunched = verifyLaunch, ensureStorage = ensureWorkspaceStorageSafely, acquireLock = acquireBuildLock, releaseLock = releaseBuildLock, waitForBuild: waitForBuild$1 = waitForBuild, easAuth = checkEasAuth, resolveRemoteBuild = resolveRemote, uploadRemoteBuild = uploadRemote, resolveCacheProvider = resolveCacheProviderConfig, loadCacheProviderModule = loadCacheProvider, storedAppId: storedAppId$1 = storedAppId, install = installAndroidApp, launch = launchAndroidApp, launchRelease = launchAndroidReleaseApp, verifyReleaseLaunched = verifyAndroidReleaseLaunch, resolveDevClientScheme = (projectRoot, apkPath, options) => androidDevClientScheme(projectRoot, apkPath, {
447
450
  ...options,
448
451
  context
449
452
  }), spawn = (cmd, args, opts) => getExecutor().spawn(cmd, args, opts), kill = (pid, signal) => process.kill(pid, signal), createWriter = createNdjsonWriter, writeLaunch = writeWorkspaceLaunchAsync, writeState = writeWorkspaceStateAsync, recordBuild, recordStats = recordRunStats, recordCapacityRefusal: recordRefusal, readEstimates = readRunEstimates, now = Date.now, out = (line) => context ? context.output("stderr", `${line}\n`) : console.error(line), emit = (line) => context ? context.output("stdout", `${line}\n`) : console.log(line) } = {}) {
@@ -1028,11 +1031,12 @@ async function runAndroid(options = {}) {
1028
1031
  serial: pooled.device.serial
1029
1032
  });
1030
1033
  } else if (target.kind === "physical") {
1031
- const resolved = resolvePhysicalDevice(target.serial, listDevices(), isEmulatorDevice);
1034
+ const adb = await listDevices();
1035
+ const resolved = await emulatorProbeSession(isEmulatorDevice)((isEmulator) => resolvePhysicalDevice(target.serial, adb, isEmulator));
1032
1036
  if (!resolved.serial) return fail(NO_DEVICE, resolved.error, resolved.remedy);
1033
1037
  device = {
1034
1038
  serial: resolved.serial,
1035
- deviceName: deviceModel(resolved.serial) ?? resolved.serial,
1039
+ deviceName: await deviceModel(resolved.serial) ?? resolved.serial,
1036
1040
  owned: false
1037
1041
  };
1038
1042
  bootPromise = Promise.resolve({
@@ -1045,7 +1049,7 @@ async function runAndroid(options = {}) {
1045
1049
  } catch (err) {
1046
1050
  return fail("STIM_BAD_ARG", err.message, "Run `stim settings set androidEmulatorApp emulator` or `stim settings set androidEmulatorApp stim-desktop`.");
1047
1051
  }
1048
- const capacity = plan.deviceSlotWaitMs === 0 ? checkCapacity({
1052
+ const capacity = plan.deviceSlotWaitMs === 0 ? await checkCapacity({
1049
1053
  platform: PLATFORM,
1050
1054
  project,
1051
1055
  max: limits.maxDevices
@@ -1053,7 +1057,7 @@ async function runAndroid(options = {}) {
1053
1057
  if (capacity) {
1054
1058
  if (capacity.code === "STIM_AT_CAPACITY") recordRefusal({
1055
1059
  platform: PLATFORM,
1056
- max: limits.maxDevices,
1060
+ max: capacity.max,
1057
1061
  workspace: workspaceId(root)
1058
1062
  }, now());
1059
1063
  return fail(capacity.code, capacity.message, capacity.remedy);
@@ -1148,7 +1152,7 @@ async function runAndroid(options = {}) {
1148
1152
  writer,
1149
1153
  settings,
1150
1154
  buildPlan,
1151
- target: androidBuildOptions({
1155
+ target: await androidBuildOptions({
1152
1156
  release,
1153
1157
  physical,
1154
1158
  device,
@@ -1,10 +1,10 @@
1
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-DGwkPXwq.mjs";
3
- import { C as saveConfig, D as withConfigLock$1, G as projectDeviceSlots, H as deviceSlotPlatforms, K as removeSlotDevice, O as withConfigLockAsync$1, _ as loadConfig$1, c as ensureConfig, d as getConfigDir, f as getConfigPath$1, z as assignSlotDevice } from "./config-AbUjIBOQ.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
4
  import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
5
- import { c as androidDataPartitionSizeBytes } from "./settings-D776ygML.mjs";
6
- import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-CYXLFpFS.mjs";
7
- import { c as pidExists, p as signalProcessTreeAsync } from "./metro-BMQHczcf.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";
8
8
  import { renameSync, rmSync, writeFileSync } from "node:fs";
9
9
  import { isDeepStrictEqual } from "node:util";
10
10
  import { join } from "node:path";
@@ -680,25 +680,21 @@ const EMULATOR_HARDWARE = /* @__PURE__ */ new Set([
680
680
  "vbox86",
681
681
  "vbox86p"
682
682
  ]);
683
- function adbProp(serial, name) {
684
- try {
685
- const out = getExecutor().runFile(androidToolPath("adb"), [
686
- "-s",
687
- serial,
688
- "shell",
689
- "getprop",
690
- name
691
- ], { timeoutMs: ADB_PROP_TIMEOUT_MS });
692
- return String(out ?? "").trim() || null;
693
- } catch {
694
- return null;
695
- }
683
+ async function adbProp(serial, name) {
684
+ const out = await getExecutor().runFileQuietAsync(androidToolPath("adb"), [
685
+ "-s",
686
+ serial,
687
+ "shell",
688
+ "getprop",
689
+ name
690
+ ], { timeoutMs: ADB_PROP_TIMEOUT_MS });
691
+ return String(out ?? "").trim() || null;
696
692
  }
697
693
  function physicalDeviceModel(serial) {
698
694
  return adbProp(serial, "ro.product.model");
699
695
  }
700
- function androidDeviceAbi(serial) {
701
- const abi = adbProp(serial, "ro.product.cpu.abi");
696
+ async function androidDeviceAbi(serial) {
697
+ const abi = await adbProp(serial, "ro.product.cpu.abi");
702
698
  return abi && ANDROID_ABIS.has(abi) ? abi : null;
703
699
  }
704
700
  function androidSystemImageAbi(systemImage) {
@@ -709,10 +705,10 @@ function looksLikeEmulator({ kernelQemu, hardware }) {
709
705
  if (String(kernelQemu ?? "").trim() === "1") return true;
710
706
  return EMULATOR_HARDWARE.has(String(hardware ?? "").trim().toLowerCase());
711
707
  }
712
- function probeEmulatorSerial(serial) {
708
+ async function probeEmulatorSerial(serial) {
713
709
  return looksLikeEmulator({
714
- kernelQemu: adbProp(serial, "ro.kernel.qemu"),
715
- hardware: adbProp(serial, "ro.hardware")
710
+ kernelQemu: await adbProp(serial, "ro.kernel.qemu"),
711
+ hardware: await adbProp(serial, "ro.hardware")
716
712
  });
717
713
  }
718
714
  function unreachableDeviceRefusal(entry) {
@@ -727,20 +723,33 @@ function emulatorRefusal(serial) {
727
723
  remedy: "Run `stim android` without --device to use this workspace's owned emulator."
728
724
  };
729
725
  }
730
- function memoizeEmulatorProbe(probe = probeEmulatorSerial) {
731
- const seen = /* @__PURE__ */ new Map();
732
- return (serial) => {
733
- const cached = seen.get(serial);
734
- if (cached !== void 0) return cached;
735
- const probed = probe(serial);
736
- seen.set(serial, probed);
737
- return probed;
726
+ var UnprobedSerial = class extends Error {
727
+ serial;
728
+ constructor(serial) {
729
+ super(serial);
730
+ this.serial = serial;
731
+ }
732
+ };
733
+ function emulatorProbeSession(probe) {
734
+ const known = /* @__PURE__ */ new Map();
735
+ const isEmulator = (serial) => {
736
+ const answer = known.get(serial);
737
+ if (answer === void 0) throw new UnprobedSerial(serial);
738
+ return answer;
739
+ };
740
+ return async (select) => {
741
+ for (;;) try {
742
+ return select(isEmulator);
743
+ } catch (error) {
744
+ if (!(error instanceof UnprobedSerial)) throw error;
745
+ known.set(error.serial, await probe(error.serial));
746
+ }
738
747
  };
739
748
  }
740
- function androidPoolCandidates(adb, isEmulator = probeEmulatorSerial) {
749
+ function androidPoolCandidates(adb, isEmulator) {
741
750
  return (adb?.physical ?? []).filter((entry) => !isEmulator(entry.serial));
742
751
  }
743
- function androidPoolNoCandidatesRefusal(adb, isEmulator = probeEmulatorSerial) {
752
+ function androidPoolNoCandidatesRefusal(adb, isEmulator) {
744
753
  const physical = adb?.physical ?? [];
745
754
  if (physical.length > 0 && physical.every((entry) => isEmulator(entry.serial))) {
746
755
  const reasons = physical.map((entry) => emulatorRefusal(entry.serial));
@@ -751,7 +760,7 @@ function androidPoolNoCandidatesRefusal(adb, isEmulator = probeEmulatorSerial) {
751
760
  }
752
761
  return resolvePhysicalDevice(null, adb, isEmulator);
753
762
  }
754
- function resolvePhysicalDevice(requested, adb, isEmulator = probeEmulatorSerial) {
763
+ function resolvePhysicalDevice(requested, adb, isEmulator) {
755
764
  const physical = adb?.physical ?? [];
756
765
  const unhealthy = adb?.unhealthy ?? [];
757
766
  if (requested) {
@@ -824,6 +833,9 @@ function avdStorageRoots(env = ambientEnv()) {
824
833
  join$1(home, ".android", "avd")
825
834
  ].filter((value) => Boolean(value)))];
826
835
  }
836
+ function avdStorageExists(avdName) {
837
+ return avdStorageRoots().some((root) => avdPathExists(join$1(root, `${avdName}.ini`)) || avdPathExists(join$1(root, `${avdName}.avd`)));
838
+ }
827
839
  function avdPathExists(path) {
828
840
  try {
829
841
  lstatSync$1(path);
@@ -1650,6 +1662,24 @@ async function getAvdNameForSerialAsync(serial, { timeoutMs = EMU_AVD_NAME_TIMEO
1650
1662
  if (!out) return null;
1651
1663
  return out.split("\n")[0]?.trim() || null;
1652
1664
  }
1665
+ const ANDROID_LOCATION_VARIABLES = [
1666
+ "ANDROID_HOME",
1667
+ "ANDROID_SDK_ROOT",
1668
+ "ANDROID_AVD_HOME",
1669
+ "ANDROID_EMULATOR_HOME",
1670
+ "ANDROID_USER_HOME",
1671
+ "ANDROID_SDK_HOME"
1672
+ ];
1673
+ /**
1674
+ * True when `error` is the emulator binary failing to spawn on a machine with no Android SDK or AVD
1675
+ * location configured. Nothing Stim started can be running through a tool that does not exist. An
1676
+ * explicitly configured location may name an unmounted volume, so it keeps the failure, and so does a
1677
+ * missing adb. An emulator started from another environment still has AVD data on disk, which callers check
1678
+ * before they act on this.
1679
+ */
1680
+ function isEmulatorToolAbsent(error, env = ambientEnv()) {
1681
+ return error instanceof Error && "code" in error && error.code === "ENOENT" && "path" in error && typeof error.path === "string" && /^emulator(?:\.exe)?$/.test(error.path) && !ANDROID_LOCATION_VARIABLES.some((name) => env[name]);
1682
+ }
1653
1683
  /**
1654
1684
  * `resolveOwnedAvdSerial` without blocking the event loop, with the same reads and the same timeout budget.
1655
1685
  * `preferredSerial` is the serial this workspace recorded for the AVD: it is read first, and the other
@@ -1777,4 +1807,4 @@ function ownedAvdSerialResolver({ timeoutMs } = {}) {
1777
1807
  };
1778
1808
  }
1779
1809
  //#endregion
1780
- export { removeMetroReverses as $, listAdbDevices as A, ownedAvdDeviceProfile as B, emulatorDiskSpaceRemedy as C, forgetCreatedDeviceAsync as Ct, getAvdNameForSerial as D, configuredAndroidEmulatorApp as Dt, findBuildTool as E, recordCreatedDeviceAsync as Et, listAvdsAsync as F, ownedAvdSerialResolverAsync as G, ownedAvdMatchesConfiguration as H, listInstalledSystemImages as I, parseAvdSystemImage as J, ownedAvdSystemImage as K, listOrphanedAvdDirectories as L, listAvdDeviceProfiles as M, listAvdDeviceProfilesAsync as N, getAvdNameForSerialAsync as O, listAvds as P, profileNeedsFoldFeature as Q, memoizeEmulatorProbe as R, deleteAvd as S, forgetCreatedDevice as St, extractEmulatorFailure as T, recordCreatedDevice as Tt, ownedAvdName as U, ownedAvdDirectory as V, ownedAvdSerialResolver as W, pickDefaultSystemImage as X, physicalDeviceModel as Y, probeEmulatorSerial as Z, avdPoolConfiguration as _, parkSim as _t, androidDeviceAbi as a, systemImageSupportsFold as at, configureNewOwnedAvd as b, removeParkedAfter as bt, androidPoolNoCandidatesRefusal as c, waitForBoot as ct, androidToolPath as d, isStimOwnedSim as dt, removeOwnedEmulatorMetroReverses as et, assertOwnedAvdStopped as f, POOL_SETTING_REMEDY as ft, avdPathExists as g, isLegacyDeletionClaim as gt, avdNameAbsent as h, eraseParkedAfter as ht, androidDataFreeBytes as i, shutdownAndroidEmulator as it, listAdbDevicesAsync as j, hostSystemImageArch as k, androidSystemImageAbi as l, wipeAvdUserData as lt, avdIniPaths as m, dropParked as mt, OWNED_AVD_CONFIG_DEFAULTS as n, resolveOwnedAvdSerialAsync as nt, androidHome as o, trimAndroidCaches as ot, assertOwnedAvdStoppedAsync as p, adoptParked as pt, parseAvdDeviceProfile as q, androidBuildToolName as r, resolvePhysicalDevice as rt, androidPoolCandidates as s, waitForAndroidEmulatorShutdown as st, DEFAULT_AVD_DEVICE_PROFILE as t, resetAdoptedAvd as tt, androidToolCwd as u, isStimOwnedAvd as ut, avdStorageRoots as v, parkedMaxSetting as vt, emulatorFailureRemedy as w, readCreatedDevices$1 as wt, createOwnedAvd as x, selectParked as xt, bootAndroidEmulator as y, readParked as yt, nextConsolePort as z };
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 };
@@ -1,6 +1,6 @@
1
- import { i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-DjCsmzLZ.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-PFyTkrnr.mjs";
3
- import { r as lastBuildRecord, t as androidFacts } from "./result-9fqcJ90W.mjs";
4
- import { i as runAndroidOperation, n as registerAndroid, r as runAndroid, t as androidCommand } from "./android-l616dRP1.mjs";
5
- import { a as collectorLogFile, o as killPreviousCollector, s as startCollector } from "./launch-D798aSm8.mjs";
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";
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,7 +1,7 @@
1
- import { M as withDirLock$1, _ as ensureWorkspaceStorage } from "./workspace-state-DGwkPXwq.mjs";
2
- import { d as getConfigDir } from "./config-AbUjIBOQ.mjs";
3
- import { m as defaultAndroidLayout } from "./settings-D776ygML.mjs";
4
- import { r as register } from "./cache-manifest-evF_zJ9U.mjs";
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";
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";
package/dist/api.mjs CHANGED
@@ -1,32 +1,32 @@
1
1
  import { D as ownership_claim_exports, T as trackReportResource, b as operationState, c as throwIfCancelled, l as WorkspaceProcessCleanupError, s as cancelledError, w as runReport } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, a as recordWorkspaceUseAsync, k as workspaceLogsDir$1, v as ensureWorkspaceStorageAsync } from "./workspace-state-DGwkPXwq.mjs";
3
- import { E as upsertProject, O as withConfigLockAsync$1, p as getProject, q as validateDeviceSlot, y as refuseRelativeStimPaths } from "./config-AbUjIBOQ.mjs";
4
- import { l as phaseLine } from "./command-output-DjCsmzLZ.mjs";
5
- import { Vt as repoRootAsync, Z as resolveProjectSettingsAsync, _ as inertSettingWarning, a as SETTING_SHAPE_REMEDY, p as cacheProviderSettingError, rt as settingShapeErrors, st as unknownSettingKeys } from "./settings-D776ygML.mjs";
6
- import { c as projectProblem, f as projectRegistry, i as findProjectRoot$1, r as findCommandWorkspaceAsync, t as NO_PROJECT_REFUSAL } from "./project-D1n0K4yg.mjs";
7
- import { n as macosDir } from "./state-C2AUjjhg.mjs";
8
- import { c as ensureHomeIdentity, s as workspaceShareURL } from "./stim-desktop-CYXLFpFS.mjs";
2
+ import { E as workspaceDir, a as recordWorkspaceUseAsync, k as workspaceLogsDir$1, v as ensureWorkspaceStorageAsync } from "./workspace-state-3bF4TB8P.mjs";
3
+ import { D as upsertProject, J as validateDeviceSlot, b as refuseRelativeStimPaths, k as withConfigLockAsync$1, m as getProject } from "./config-D5qNWJEP.mjs";
4
+ import { l as phaseLine } from "./command-output-VrXd6qPX.mjs";
5
+ import { Vt as repoRootAsync, Z as resolveProjectSettingsAsync, _ as inertSettingWarning, a as SETTING_SHAPE_REMEDY, p as cacheProviderSettingError, rt as settingShapeErrors, st as unknownSettingKeys } from "./settings-C6UTYW2K.mjs";
6
+ import { c as projectProblem, f as projectRegistry, i as findProjectRoot$1, r as findCommandWorkspaceAsync, t as NO_PROJECT_REFUSAL } from "./project-DCLkDM8C.mjs";
7
+ import { n as macosDir } from "./state-CiflgxTP.mjs";
8
+ import { c as ensureHomeIdentity, s as workspaceShareURL } from "./stim-desktop-1XxET4S8.mjs";
9
9
  import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
10
- import { $ as tapBuildLog, Q as startBuildProgress, X as recordFinishedBuild, tt as errorRemedy } from "./workspaces-CvSYD_78.mjs";
11
- import { ot as runCancellationSignal, st as withNativeBuildRun } from "./toolchain-CLGnEUgT.mjs";
12
- import { d as resolveBuildPlacement } from "./selection-D1ZDzHFX.mjs";
13
- import { c as stopWorkspaceNow } from "./stop-p9uSKuGE.mjs";
14
- import { r as runReload } from "./reload-BV0nD-k9.mjs";
15
- import { m as warmWorktreeTarget, p as removeWorktreeTarget } from "./worktree-CaQBf6kh.mjs";
16
- import { i as restoreLightenedDependencies } from "./lightened-vSxkstg6.mjs";
17
- import { c as startDevServer } from "./start-Dlv4XXTP.mjs";
18
- import { s as recordDoctorCheck } from "./doctor-watchman-CJr2aXXv.mjs";
19
- import { c as readSettingsPayload, s as readSettingsContext, t as SettingsRefusal } from "./settings-payload-_aatELz2.mjs";
20
- import { a as readDoctorReport } from "./doctor-Cp4-HN1f.mjs";
21
- import { i as readGcReport, n as executeGc, o as withGcMaintenanceClaim } from "./gc-CKHqL4aS.mjs";
22
- import { r as readWorkspaceLogs, t as followWorkspaceLogs } from "./logs-CilPftm3.mjs";
10
+ import { $ as tapBuildLog, Q as startBuildProgress, X as recordFinishedBuild, tt as errorRemedy } from "./workspaces-BNEyJ1B_.mjs";
11
+ import { ct as withNativeBuildRun, st as runCancellationSignal } from "./toolchain-CGdgD4x4.mjs";
12
+ import { d as resolveBuildPlacement } from "./selection-C95m--1_.mjs";
13
+ import { c as stopWorkspaceNow } from "./stop-WyrZQuX6.mjs";
14
+ import { r as runReload } from "./reload-B-d7-CsI.mjs";
15
+ import { m as warmWorktreeTarget, p as removeWorktreeTarget } from "./worktree-BTrii9e_.mjs";
16
+ import { i as restoreLightenedDependencies } from "./lightened-DZ9Ip0T3.mjs";
17
+ import { c as startDevServer } from "./start-LSwIFlBv.mjs";
18
+ import { s as recordDoctorCheck } from "./doctor-watchman-DJY550yz.mjs";
19
+ import { c as readSettingsPayload, s as readSettingsContext, t as SettingsRefusal } from "./settings-payload-zf5EnCTg.mjs";
20
+ import { a as readDoctorReport } from "./doctor-BGcsAgAV.mjs";
21
+ import { i as readGcReport, n as executeGc, o as withGcMaintenanceClaim } from "./gc-B0K4d_PL.mjs";
22
+ import { r as readWorkspaceLogs, t as followWorkspaceLogs } from "./logs-C-hfMsxK.mjs";
23
23
  import { t as readProjectStats } from "./stats-report-B86Cv7Uc.mjs";
24
- import { n as buildAndroidOperation, t as buildIosOperation } from "./build-DtCU9Kim.mjs";
25
- import { a as readAndroidBuildPlan, i as runAndroidOperation } from "./android-l616dRP1.mjs";
26
- import { i as readIosBuildPlan, r as runIosOperation } from "./ios-UM_dManb.mjs";
27
- import { a as buildMacosBundle, i as planMacos, n as runMacos } from "./macos-CxUi9xcE.mjs";
28
- import { t as runWeb } from "./web-xlVssjQf.mjs";
29
- import { t as mutateSetting } from "./settings-write-CkTVGQ4O.mjs";
24
+ import { n as buildAndroidOperation, t as buildIosOperation } from "./build-BpFFbdXD.mjs";
25
+ import { a as readAndroidBuildPlan, i as runAndroidOperation } from "./android-DhiWSOFU.mjs";
26
+ import { i as readIosBuildPlan, r as runIosOperation } from "./ios-DUL68MI5.mjs";
27
+ import { a as buildMacosBundle, i as planMacos, n as runMacos } from "./macos-DZ9ZSolN.mjs";
28
+ import { t as runWeb } from "./web-BE89ONcc.mjs";
29
+ import { t as mutateSetting } from "./settings-write-Fe0K6BeC.mjs";
30
30
  import { randomBytes } from "node:crypto";
31
31
  import { mkdirSync, mkdtempSync, readFileSync, realpathSync, rmSync } from "node:fs";
32
32
  import { stripVTControlCharacters } from "node:util";
@@ -1,5 +1,5 @@
1
- import { y as sharedBuildCache } from "./workspace-state-DGwkPXwq.mjs";
2
- import { E as findBuildTool } from "./android-BHKgeOuq.mjs";
1
+ import { y as sharedBuildCache } from "./workspace-state-3bF4TB8P.mjs";
2
+ import { O as findBuildTool } from "./android-DsEj2CCs.mjs";
3
3
  import { createHash, randomUUID } from "node:crypto";
4
4
  import { closeSync, fstatSync, openSync, readFileSync, readSync, realpathSync, renameSync, rmSync } from "node:fs";
5
5
  import { basename, dirname, join } from "node:path";
@@ -1,16 +1,16 @@
1
1
  import { D as ownership_claim_exports, c as throwIfCancelled, x as withDrainingCancellation } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir } from "./workspace-state-DGwkPXwq.mjs";
3
- import { _ as stepTimer, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-DjCsmzLZ.mjs";
4
- import { Dn as RESOLVE_TIMEOUT_MS, Mn as isEasAuthFailureText, jn as easAuthNote } from "./ccache-DsDkdP72.mjs";
5
- import { P as compilationCacheActivityLine, Q as cancelledFailure, k as COMPILATION_CACHE_NOT_RUN, ot as runCancellationSignal } from "./toolchain-CLGnEUgT.mjs";
6
- import { T as storedAppId, b as providerDownloadPath, x as providerUploadOutcome, y as prepareProviderDownloadDir } from "./build-cache-BGwTsIEa.mjs";
7
- import { C as COMPILATION_CACHE_CORRUPT, c as offloadPlacement, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, s as offloadCheck, u as remotePhaseText, w as clearCorruptCompilationCache } from "./client-BTUH8TF1.mjs";
8
- import { a as missingPackageManagerRemedy, c as podsFailedRemedy, h as predictedRefusal, i as fingerprintMismatchRemedy, l as requireLocalBuild, n as automaticBuild, o as namedBuildMachine, t as OffloadRefusal } from "./selection-D1ZDzHFX.mjs";
9
- import { S as xcodeFailureReport, p as printDiagnostics } from "./support-BMpQIug0.mjs";
10
- import { f as settleFingerprintCheck, u as skippedMissReason } from "./prebuild-Bqp0LFGN.mjs";
11
- import { t as buildPlacementRecord } from "./placement-log-CoN6xrjY.mjs";
12
- import { n as settleArtifactUploads, t as acquireArtifact } from "./acquire-artifact-C2DKfenN.mjs";
13
- import { r as finishIosUpload, t as IosRecipeRefusal } from "./ios-project-DJYptOCh.mjs";
2
+ import { E as workspaceDir } from "./workspace-state-3bF4TB8P.mjs";
3
+ import { _ as stepTimer, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-VrXd6qPX.mjs";
4
+ import { Dn as RESOLVE_TIMEOUT_MS, Mn as isEasAuthFailureText, jn as easAuthNote } from "./ccache-DVDO2ocE.mjs";
5
+ import { $ as cancelledFailure, A as COMPILATION_CACHE_NOT_RUN, F as compilationCacheActivityLine, st as runCancellationSignal } from "./toolchain-CGdgD4x4.mjs";
6
+ import { T as storedAppId, b as providerDownloadPath, x as providerUploadOutcome, y as prepareProviderDownloadDir } from "./build-cache-BsKim4V7.mjs";
7
+ import { C as COMPILATION_CACHE_CORRUPT, c as offloadPlacement, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, s as offloadCheck, u as remotePhaseText, w as clearCorruptCompilationCache } from "./client-DhJOvSvh.mjs";
8
+ import { a as missingPackageManagerRemedy, c as podsFailedRemedy, h as predictedRefusal, i as fingerprintMismatchRemedy, l as requireLocalBuild, n as automaticBuild, o as namedBuildMachine, t as OffloadRefusal } from "./selection-C95m--1_.mjs";
9
+ import { S as xcodeFailureReport, p as printDiagnostics } from "./support-Cs24xRQa.mjs";
10
+ import { f as settleFingerprintCheck, u as skippedMissReason } from "./prebuild-D0hvmO4j.mjs";
11
+ import { t as buildPlacementRecord } from "./placement-log-CFT8SnlS.mjs";
12
+ import { n as settleArtifactUploads, t as acquireArtifact } from "./acquire-artifact-P84h3ssa.mjs";
13
+ import { r as finishIosUpload, t as IosRecipeRefusal } from "./ios-project-Br1tVYWX.mjs";
14
14
  import { rmSync } from "node:fs";
15
15
  import { join } from "node:path";
16
16
  import { machineCapacity } from "@stim-cli/core/state";