stim 1.30.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 (144) hide show
  1. package/dist/{acquire-artifact-CrZ4rEbI.mjs → acquire-artifact-P84h3ssa.mjs} +1 -1
  2. package/dist/{act-BaKjDWGw.mjs → act-lcOIEy32.mjs} +18 -18
  3. package/dist/{activity-BTaUf0tc.mjs → activity-Dw4N_RFe.mjs} +4 -4
  4. package/dist/{agent-device-usage-output-DYBpO17K.mjs → agent-device-usage-output-Boie2yB-.mjs} +4 -4
  5. package/dist/{android-BEQUDpOg.mjs → android-BeeC15Ve.mjs} +1 -1
  6. package/dist/{android-BWqdDK6R.mjs → android-DhiWSOFU.mjs} +41 -39
  7. package/dist/{android-DdKG6lyD.mjs → android-DsEj2CCs.mjs} +27 -6
  8. package/dist/{android-BCYLwmH6.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-B8kw4a8K.mjs → apk-signed-tail-B9Usseps.mjs} +2 -2
  12. package/dist/{artifact-DTHXcmQ3.mjs → artifact-Cr34-Yyy.mjs} +12 -12
  13. package/dist/{artifact-M6W2l-xh.mjs → artifact-ta3xA0c4.mjs} +12 -12
  14. package/dist/{auto-placement-CZaWDmcY.mjs → auto-placement-DtTRG0rk.mjs} +10 -10
  15. package/dist/{browser-web-JQ7lFej3.mjs → browser-web-DuULNZrS.mjs} +11 -11
  16. package/dist/{build-C2ZWoCmg.mjs → build-BpFFbdXD.mjs} +22 -22
  17. package/dist/{build-cache-DlC3owap.mjs → build-cache-BsKim4V7.mjs} +4 -4
  18. package/dist/{build-plan-J3iRR3gI.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-B8gY50-h.mjs → ccache-DVDO2ocE.mjs} +15 -15
  22. package/dist/{cli-xRPXJPtA.mjs → cli-C0jjwTuM.mjs} +18 -18
  23. package/dist/cli.mjs +1 -1
  24. package/dist/{client-DrHykA24.mjs → client-DhJOvSvh.mjs} +4 -4
  25. package/dist/collector-run.mjs +4 -4
  26. package/dist/{command-output-BBW8eWPL.mjs → command-output-VrXd6qPX.mjs} +1 -1
  27. package/dist/{config-AbUjIBOQ.mjs → config-D5qNWJEP.mjs} +2 -2
  28. package/dist/{dependencies-vUh9mp5z.mjs → dependencies-DIU-5rnG.mjs} +37 -37
  29. package/dist/{dependency-state-CPKAKCZ8.mjs → dependency-state-DZVln1P9.mjs} +1 -1
  30. package/dist/{dev-client-CASgAOu7.mjs → dev-client-DeAg0fso.mjs} +2 -2
  31. package/dist/{device-ChnO7bR9.mjs → device-C2WsPgFt.mjs} +12 -12
  32. package/dist/{device-CsIdRXfm.mjs → device-DuNLOlR6.mjs} +11 -11
  33. package/dist/{device-android-CcdQqQWg.mjs → device-android-BjhH0Ru3.mjs} +20 -14
  34. package/dist/{device-capacity-C5C_jOQd.mjs → device-capacity-Du5wBTNJ.mjs} +173 -74
  35. package/dist/device-host-worker.mjs +19 -15
  36. package/dist/{device-ios-DbmtPIiw.mjs → device-ios-CUYUhSYO.mjs} +8 -8
  37. package/dist/{device-lease-run-Do6zYA7y.mjs → device-lease-run-CHXQEn-7.mjs} +4 -4
  38. package/dist/{device-pool-CpoYiCGO.mjs → device-pool-kUHO7MHO.mjs} +3 -3
  39. package/dist/{device-provision-B5Ms94qY.mjs → device-provision-e7bKS7lx.mjs} +8 -8
  40. package/dist/{doctor-CpfbYh3Q.mjs → doctor-B6kIVgU9.mjs} +1 -1
  41. package/dist/{doctor-CLE4AZEI.mjs → doctor-BGcsAgAV.mjs} +15 -15
  42. package/dist/doctor-fingerprint.mjs +1 -1
  43. package/dist/{doctor-CJSB5q-s.mjs → doctor-hva3sd9f.mjs} +36 -25
  44. package/dist/{doctor-watchman-D1IyMle9.mjs → doctor-watchman-DJY550yz.mjs} +4 -4
  45. package/dist/{eas-build-DIDOHw2P.mjs → eas-build-CBFgseh1.mjs} +2 -2
  46. package/dist/{eas-fallback-DVS9oBSc.mjs → eas-fallback-DFXdz4d6.mjs} +4 -4
  47. package/dist/{eas-session-ledger-CW3l-inB.mjs → eas-session-ledger-aFBLTZr2.mjs} +19 -6
  48. package/dist/{error-diagnostics-XJ9eWdtq.mjs → error-diagnostics-CCsq_3uG.mjs} +8 -8
  49. package/dist/{gc-Co7PE36D.mjs → gc-B0K4d_PL.mjs} +17 -17
  50. package/dist/{gc-BVIcxCxE.mjs → gc-DASUa3Z_.mjs} +2 -2
  51. package/dist/{guide-DkepBgHT.mjs → guide-Civo5-zV.mjs} +74 -21
  52. package/dist/{hosted-android-Du7NxufJ.mjs → hosted-android-CH1Sm4wo.mjs} +3 -3
  53. package/dist/{hosted-client-Cect92SZ.mjs → hosted-client-5ur3YpxY.mjs} +36 -12
  54. package/dist/{hosted-logs-Opcjv1Lr.mjs → hosted-logs-BYg4yeti.mjs} +6 -6
  55. package/dist/{hosted-logs-sync-wsI7N1Hv.mjs → hosted-logs-sync-BPe8xnMu.mjs} +5 -5
  56. package/dist/{hosted-macos-BP9Kucat.mjs → hosted-macos-BagT0Gn3.mjs} +5 -5
  57. package/dist/{hosted-native-DmdLSmvu.mjs → hosted-native-kaR4nUHk.mjs} +6 -6
  58. package/dist/{idle-shutdown-BcMN_cLm.mjs → idle-shutdown-BWHQ7mQG.mjs} +6 -6
  59. package/dist/{ios-BFkBHuRT.mjs → ios-BKR-Dq46.mjs} +8 -8
  60. package/dist/{ios-CXnoVO_z.mjs → ios-CdAV4-1E.mjs} +4 -4
  61. package/dist/{ios-CG0IsLtt.mjs → ios-DUL68MI5.mjs} +32 -31
  62. package/dist/{ios-device-ClSfuu-_.mjs → ios-device-Dz8gFZ0K.mjs} +1 -1
  63. package/dist/{ios-project-BM9TbTE7.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-9Rx-5Nqz.mjs → js-swap-BfG8XpyS.mjs} +4 -4
  66. package/dist/{launch-DvJV1Mx4.mjs → launch-CrGndh8T.mjs} +19 -19
  67. package/dist/{lightened-23pqe7LS.mjs → lightened-DZ9Ip0T3.mjs} +4 -4
  68. package/dist/{logs-Pkeh3wZk.mjs → logs-C-hfMsxK.mjs} +5 -5
  69. package/dist/{logs-DJgZlf2K.mjs → logs-DpIKWT3A.mjs} +7 -7
  70. package/dist/{macos-Du07NsOB.mjs → macos-DNmKwfDy.mjs} +1 -1
  71. package/dist/{macos-DPvPQadc.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-CBOM1_gB.mjs → native-android-DExhFqR6.mjs} +16 -16
  78. package/dist/{native-gradle-artifact-inputs-D_iAfPuS.mjs → native-gradle-artifact-inputs-Bcmbdc23.mjs} +3 -3
  79. package/dist/{native-runtime-D4cTwU0Z.mjs → native-runtime-D4qgnjK_.mjs} +6 -6
  80. package/dist/{native-xcode-inputs-BF-ogSnG.mjs → native-xcode-inputs-EWma1lXh.mjs} +2 -2
  81. package/dist/{native-xcode-ios-DwJBfMP6.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-CvhhkGMH.mjs → phone-reverses-Drj5QQCh.mjs} +4 -4
  85. package/dist/{placement-log-CRR_TE1r.mjs → placement-log-CFT8SnlS.mjs} +1 -1
  86. package/dist/{plan-placement-CdLc-pTb.mjs → plan-placement-DhKCH_wF.mjs} +6 -6
  87. package/dist/{ports-g4N_cfyg.mjs → ports-BNtJ5DCj.mjs} +3 -3
  88. package/dist/{prebuild-DBJMhwSS.mjs → prebuild-D0hvmO4j.mjs} +9 -9
  89. package/dist/{project-DPQjnpcI.mjs → project-DCLkDM8C.mjs} +15 -15
  90. package/dist/{react-native-android-idMWOwkX.mjs → react-native-android-Dp7vctEA.mjs} +22 -22
  91. package/dist/{react-native-build-BSoh4HkH.mjs → react-native-build-vK2lFYfN.mjs} +7 -7
  92. package/dist/{react-native-doctor-CYibY8-4.mjs → react-native-doctor-BtWzwZHU.mjs} +5 -5
  93. package/dist/{react-native-ios-13KIIOOy.mjs → react-native-ios-DW1Ax3Yv.mjs} +14 -14
  94. package/dist/{recordings-CHMaF73C.mjs → recordings-BWnIlhZH.mjs} +1 -1
  95. package/dist/{reload-BUQI3dSu.mjs → reload-B-d7-CsI.mjs} +14 -14
  96. package/dist/{reload-B9DZOjcV.mjs → reload-BS_ntVV_.mjs} +1 -1
  97. package/dist/{remote-C-RGHhAP.mjs → remote-DScVlaMz.mjs} +8 -8
  98. package/dist/{result-W4HCum4A.mjs → result-Epkl6gyG.mjs} +16 -16
  99. package/dist/{run-BQAmrohh.mjs → run-2CHAJ9Oj.mjs} +1 -1
  100. package/dist/{selection-PCMT97XD.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-oqi3TDy7.mjs → server-command-B1gDRJB2.mjs} +4 -4
  103. package/dist/{server-expo-C1K07shx.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-CKlMOmhj.mjs → settings-CjTRNCi3.mjs} +2 -2
  107. package/dist/{settings-payload-CE-NZ6Lq.mjs → settings-payload-zf5EnCTg.mjs} +4 -4
  108. package/dist/{settings-write-D7Xwa_-M.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-CeIK1iUI.mjs → slot-launch-B4MHzVX2.mjs} +6 -6
  112. package/dist/{stage-Blqe6bWb.mjs → stage-DDrnM0CY.mjs} +1 -1
  113. package/dist/{start-CvP2pJjc.mjs → start-BXl5tkv8.mjs} +1 -1
  114. package/dist/{start-B7J5a9nS.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-Uo7l8OAk.mjs → stats-EgpYD536.mjs} +4 -4
  118. package/dist/{status-_rWXFSO7.mjs → status-BLDvhatv.mjs} +26 -25
  119. package/dist/{status-CqJI1TgG.mjs → status-DBMD7ZQT.mjs} +1 -1
  120. package/dist/{status-CK7ZoEhV.mjs → status-GQ-JqvRi.mjs} +1 -1
  121. package/dist/{status-watch-CnSyXUmj.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-Bogo9oO2.mjs → stop-4SAV_RR8.mjs} +2 -2
  125. package/dist/{stop-CMVfaA-6.mjs → stop-BfNhzvXO.mjs} +4 -4
  126. package/dist/{stop-CnF9ixYe.mjs → stop-WyrZQuX6.mjs} +15 -15
  127. package/dist/supervisor-run.mjs +13 -13
  128. package/dist/{support-BGqpYMV8.mjs → support-Cffz6_Ft.mjs} +4 -4
  129. package/dist/{support-DUevTPur.mjs → support-Cs24xRQa.mjs} +9 -9
  130. package/dist/{swiftpm-artifact-inputs-BcJk6-3u.mjs → swiftpm-artifact-inputs-yp8D5LE4.mjs} +1 -1
  131. package/dist/{swiftpm-macos-DBrmoocG.mjs → swiftpm-macos-D0CzQtpp.mjs} +8 -8
  132. package/dist/{toolchain-Cw9VVHOY.mjs → toolchain-BEra9AIX.mjs} +1 -1
  133. package/dist/{toolchain-DLdoyxIt.mjs → toolchain-CGdgD4x4.mjs} +4 -4
  134. package/dist/{warm-progress-DQ2wQZKp.mjs → warm-progress-_aTMvkIH.mjs} +3 -3
  135. package/dist/{web-g9U7L1sR.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-7_RWoi6c.mjs → workspaces-BNEyJ1B_.mjs} +15 -12
  140. package/dist/{worktree-qKJ3x07S.mjs → worktree-BTrii9e_.mjs} +24 -24
  141. package/dist/{worktree-DEet9H3p.mjs → worktree-DB3Ypdj6.mjs} +1 -1
  142. package/package.json +7 -7
  143. package/dist/server-expo-BUFAq2In.mjs +0 -2
  144. package/dist/web-CI_qCRPw.mjs +0 -2
@@ -1,5 +1,5 @@
1
1
  import { l as WorkspaceProcessCleanupError } from "./exec-aULwtNly.mjs";
2
- import { I as waitForSharedBuild } from "./activity-BTaUf0tc.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-BBW8eWPL.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-DPQjnpcI.mjs";
8
- import { F as listAvds, G as ownedAvdSerialResolverAsync, I as listAvdsAsync, M as listAdbDevicesAsync, O as getAvdNameForSerial, V as ownedAvdDirectory, j as listAdbDevices, k as getAvdNameForSerialAsync, yt as readParked } from "./android-DdKG6lyD.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-B8gY50-h.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-7_RWoi6c.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-BTaUf0tc.mjs";
16
- import { d as listAllIosSims, f as listAllIosSimsAsync } from "./ios-CXnoVO_z.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-CnF9ixYe.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-qKJ3x07S.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-DQ2wQZKp.mjs";
23
- import { a as restoreProblem, r as recordLightened, t as finishLightened } from "./lightened-23pqe7LS.mjs";
24
- import { i as writeIdleShutdownEvent, n as dueIdleDevices, r as shutDownIdleDevices } from "./idle-shutdown-BcMN_cLm.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-BBW8eWPL.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-DlC3owap.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-BBW8eWPL.mjs";
4
- import { bt as measureDu, u as listWorkspaceDirs, xt as writeUsageCache, yt as canonical } from "./workspaces-7_RWoi6c.mjs";
5
- import { c as parseAgentDeviceRecord, o as envDir, u as processMatches } from "./activity-BTaUf0tc.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-DdKG6lyD.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,43 +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-BBW8eWPL.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-DPQjnpcI.mjs";
7
- import { Dt as configuredAndroidEmulatorApp, L as listInstalledSystemImages, M as listAdbDevicesAsync, T as emulatorProbeSession, Y as physicalDeviceModel, Z as probeEmulatorSerial, a as androidDeviceAbi, ct as waitForBoot, nt as resolveOwnedAvdSerialAsync, rt as resolvePhysicalDevice } from "./android-DdKG6lyD.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-B8gY50-h.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-7_RWoi6c.mjs";
12
- import { $ as cancelledFailure, ct as withNativeBuildRun, ot as runCancellation, st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
13
- import { F as waitForBuild, M as acquireBuildLock, P as releaseBuildLock } from "./activity-BTaUf0tc.mjs";
14
- import { T as storedAppId } from "./build-cache-DlC3owap.mjs";
15
- import { S as setRemoteLogSink } from "./client-DrHykA24.mjs";
16
- import { d as resolveBuildPlacement, s as parseBuildMachineOption } from "./selection-PCMT97XD.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-Du7NxufJ.mjs";
20
- import { n as verifyCollectorOwnership } from "./ownership-Dtz9G5Gl.mjs";
21
- import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-23pqe7LS.mjs";
22
- import { c as startDevServer } from "./start-B7J5a9nS.mjs";
23
- import { a as acquireRunLease, d as runLease, f as waitFlagConflict, o as leaseExpiryText, u as releaseLeaseOnAbort } from "./device-lease-run-Do6zYA7y.mjs";
24
- import { n as DeviceAdmissionRefusal, r as checkDeviceCapacity } from "./device-capacity-C5C_jOQd.mjs";
25
- import { a as resolveEasDevelopmentBuild, r as isEasBuildFailure } from "./eas-build-DIDOHw2P.mjs";
26
- import { t as followHostedLaunchLogs } from "./hosted-logs-sync-wsI7N1Hv.mjs";
27
- import { f as settleFingerprintCheck } from "./prebuild-DBJMhwSS.mjs";
28
- import { i as launchOutcomeRecord, n as ensureWorkspaceStorageSafely, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-D4cTwU0Z.mjs";
29
- import { n as devicePlacementRecord } from "./placement-log-CRR_TE1r.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-BGqpYMV8.mjs";
31
- import { t as acquireAndroidArtifact } from "./artifact-M6W2l-xh.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-W4HCum4A.mjs";
33
- import { n as devicePlacementLine, t as automaticDevicePlacement } from "./auto-placement-CZaWDmcY.mjs";
34
- import { i as verifyAndroidMetroRun, r as finishAndroidRun } from "./launch-DvJV1Mx4.mjs";
35
- import { t as checkEasFallback } from "./eas-fallback-DVS9oBSc.mjs";
36
- import { i as warmMetro, n as ensureBooted, r as ensureOwnedDevice, t as didSetUpDevice } from "./device-CsIdRXfm.mjs";
37
- import { a as AvdBootError, o as AvdRecoveryError } from "./device-android-CcdQqQWg.mjs";
38
- import { t as selectFromPool } from "./device-pool-CpoYiCGO.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";
39
39
  import { t as unsupportedPlan } from "./project-plan-BPwbLwQu.mjs";
40
- import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-J3iRR3gI.mjs";
40
+ import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-DH1rT11x.mjs";
41
41
  import { join } from "node:path";
42
42
  import { workspaceId } from "@stim-cli/core";
43
43
  import { hostedAndroidStatus, parseMachine } from "@stim-cli/core/state";
@@ -72,7 +72,9 @@ async function connectAndroidHosting({ root, slot, machine, release, appMode = r
72
72
  try {
73
73
  const resolved = await resolveSerial(local.avdName, { timeoutMs: 5e3 });
74
74
  running = Boolean(resolved.serial) || !resolved.notRunning && !resolved.missing;
75
- } catch {}
75
+ } catch (error) {
76
+ running = !isEmulatorToolAbsent(error) || avdStorageExists(local.avdName);
77
+ }
76
78
  if (running) return { failure: {
77
79
  code: "STIM_BAD_ARG",
78
80
  message: `This workspace's Android emulator for slot ${slot} runs on this machine; run stim stop first.`
@@ -1055,7 +1057,7 @@ async function runAndroid(options = {}) {
1055
1057
  if (capacity) {
1056
1058
  if (capacity.code === "STIM_AT_CAPACITY") recordRefusal({
1057
1059
  platform: PLATFORM,
1058
- max: limits.maxDevices,
1060
+ max: capacity.max,
1059
1061
  workspace: workspaceId(root)
1060
1062
  }, now());
1061
1063
  return fail(capacity.code, capacity.message, capacity.remedy);
@@ -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";
@@ -833,6 +833,9 @@ function avdStorageRoots(env = ambientEnv()) {
833
833
  join$1(home, ".android", "avd")
834
834
  ].filter((value) => Boolean(value)))];
835
835
  }
836
+ function avdStorageExists(avdName) {
837
+ return avdStorageRoots().some((root) => avdPathExists(join$1(root, `${avdName}.ini`)) || avdPathExists(join$1(root, `${avdName}.avd`)));
838
+ }
836
839
  function avdPathExists(path) {
837
840
  try {
838
841
  lstatSync$1(path);
@@ -1659,6 +1662,24 @@ async function getAvdNameForSerialAsync(serial, { timeoutMs = EMU_AVD_NAME_TIMEO
1659
1662
  if (!out) return null;
1660
1663
  return out.split("\n")[0]?.trim() || null;
1661
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
+ }
1662
1683
  /**
1663
1684
  * `resolveOwnedAvdSerial` without blocking the event loop, with the same reads and the same timeout budget.
1664
1685
  * `preferredSerial` is the serial this workspace recorded for the AVD: it is read first, and the other
@@ -1786,4 +1807,4 @@ function ownedAvdSerialResolver({ timeoutMs } = {}) {
1786
1807
  };
1787
1808
  }
1788
1809
  //#endregion
1789
- export { removeMetroReverses as $, hostSystemImageArch as A, ownedAvdDeviceProfile as B, emulatorDiskSpaceRemedy as C, forgetCreatedDeviceAsync as Ct, findBuildTool as D, configuredAndroidEmulatorApp as Dt, extractEmulatorFailure as E, recordCreatedDeviceAsync as Et, listAvds as F, ownedAvdSerialResolverAsync as G, ownedAvdMatchesConfiguration as H, listAvdsAsync as I, parseAvdSystemImage as J, ownedAvdSystemImage as K, listInstalledSystemImages as L, listAdbDevicesAsync as M, listAvdDeviceProfiles as N, getAvdNameForSerial as O, listAvdDeviceProfilesAsync as P, profileNeedsFoldFeature as Q, listOrphanedAvdDirectories as R, deleteAvd as S, forgetCreatedDevice as St, emulatorProbeSession 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, listAdbDevices as j, getAvdNameForSerialAsync 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-BBW8eWPL.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-BGqpYMV8.mjs";
3
- import { r as lastBuildRecord, t as androidFacts } from "./result-W4HCum4A.mjs";
4
- import { i as runAndroidOperation, n as registerAndroid, r as runAndroid, t as androidCommand } from "./android-BWqdDK6R.mjs";
5
- import { a as collectorLogFile, o as killPreviousCollector, s as startCollector } from "./launch-DvJV1Mx4.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-BBW8eWPL.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-DPQjnpcI.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-7_RWoi6c.mjs";
11
- import { ct as withNativeBuildRun, st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
12
- import { d as resolveBuildPlacement } from "./selection-PCMT97XD.mjs";
13
- import { c as stopWorkspaceNow } from "./stop-CnF9ixYe.mjs";
14
- import { r as runReload } from "./reload-BUQI3dSu.mjs";
15
- import { m as warmWorktreeTarget, p as removeWorktreeTarget } from "./worktree-qKJ3x07S.mjs";
16
- import { i as restoreLightenedDependencies } from "./lightened-23pqe7LS.mjs";
17
- import { c as startDevServer } from "./start-B7J5a9nS.mjs";
18
- import { s as recordDoctorCheck } from "./doctor-watchman-D1IyMle9.mjs";
19
- import { c as readSettingsPayload, s as readSettingsContext, t as SettingsRefusal } from "./settings-payload-CE-NZ6Lq.mjs";
20
- import { a as readDoctorReport } from "./doctor-CLE4AZEI.mjs";
21
- import { i as readGcReport, n as executeGc, o as withGcMaintenanceClaim } from "./gc-Co7PE36D.mjs";
22
- import { r as readWorkspaceLogs, t as followWorkspaceLogs } from "./logs-Pkeh3wZk.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-C2ZWoCmg.mjs";
25
- import { a as readAndroidBuildPlan, i as runAndroidOperation } from "./android-BWqdDK6R.mjs";
26
- import { i as readIosBuildPlan, r as runIosOperation } from "./ios-CG0IsLtt.mjs";
27
- import { a as buildMacosBundle, i as planMacos, n as runMacos } from "./macos-DPvPQadc.mjs";
28
- import { t as runWeb } from "./web-g9U7L1sR.mjs";
29
- import { t as mutateSetting } from "./settings-write-D7Xwa_-M.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 { D as findBuildTool } from "./android-DdKG6lyD.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-BBW8eWPL.mjs";
4
- import { Dn as RESOLVE_TIMEOUT_MS, Mn as isEasAuthFailureText, jn as easAuthNote } from "./ccache-B8gY50-h.mjs";
5
- import { $ as cancelledFailure, A as COMPILATION_CACHE_NOT_RUN, F as compilationCacheActivityLine, st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
6
- import { T as storedAppId, b as providerDownloadPath, x as providerUploadOutcome, y as prepareProviderDownloadDir } from "./build-cache-DlC3owap.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-DrHykA24.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-PCMT97XD.mjs";
9
- import { S as xcodeFailureReport, p as printDiagnostics } from "./support-DUevTPur.mjs";
10
- import { f as settleFingerprintCheck, u as skippedMissReason } from "./prebuild-DBJMhwSS.mjs";
11
- import { t as buildPlacementRecord } from "./placement-log-CRR_TE1r.mjs";
12
- import { n as settleArtifactUploads, t as acquireArtifact } from "./acquire-artifact-CrZ4rEbI.mjs";
13
- import { r as finishIosUpload, t as IosRecipeRefusal } from "./ios-project-BM9TbTE7.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";
@@ -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-BBW8eWPL.mjs";
4
- import { Dn as RESOLVE_TIMEOUT_MS, Mn as isEasAuthFailureText, jn as easAuthNote, n as CCACHE_UNAVAILABLE, r as ccacheActivityLine, t as CCACHE_NOT_RUN } from "./ccache-B8gY50-h.mjs";
5
- import { $ as cancelledFailure, st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
6
- import { b as providerDownloadPath, y as prepareProviderDownloadDir } from "./build-cache-DlC3owap.mjs";
7
- import { c as offloadPlacement, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText } from "./client-DrHykA24.mjs";
8
- import { a as missingPackageManagerRemedy, i as fingerprintMismatchRemedy, l as requireLocalBuild, n as automaticBuild, o as namedBuildMachine, t as OffloadRefusal } from "./selection-PCMT97XD.mjs";
9
- import { f as formatDiagnostic } from "./react-native-build-BSoh4HkH.mjs";
10
- import { u as skippedMissReason } from "./prebuild-DBJMhwSS.mjs";
11
- import { t as buildPlacementRecord } from "./placement-log-CRR_TE1r.mjs";
12
- import { n as settleArtifactUploads, t as acquireArtifact } from "./acquire-artifact-CrZ4rEbI.mjs";
13
- import { a as PLATFORM, h as displayPath } from "./support-BGqpYMV8.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, n as CCACHE_UNAVAILABLE, r as ccacheActivityLine, t as CCACHE_NOT_RUN } from "./ccache-DVDO2ocE.mjs";
5
+ import { $ as cancelledFailure, st as runCancellationSignal } from "./toolchain-CGdgD4x4.mjs";
6
+ import { b as providerDownloadPath, y as prepareProviderDownloadDir } from "./build-cache-BsKim4V7.mjs";
7
+ import { c as offloadPlacement, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText } from "./client-DhJOvSvh.mjs";
8
+ import { a as missingPackageManagerRemedy, i as fingerprintMismatchRemedy, l as requireLocalBuild, n as automaticBuild, o as namedBuildMachine, t as OffloadRefusal } from "./selection-C95m--1_.mjs";
9
+ import { f as formatDiagnostic } from "./react-native-build-vK2lFYfN.mjs";
10
+ import { 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 { a as PLATFORM, h as displayPath } from "./support-Cffz6_Ft.mjs";
14
14
  import { t as AndroidRecipeRefusal } from "./android-project-BCAAmMwz.mjs";
15
15
  import { rmSync } from "node:fs";
16
16
  import { join } from "node:path";
@@ -1,11 +1,11 @@
1
- import { _ as loadConfig$1, p as getProject } from "./config-AbUjIBOQ.mjs";
2
- import { m as peekBudget } from "./ccache-B8gY50-h.mjs";
3
- import { z as readHostMemoryPressureAsync } from "./ios-CXnoVO_z.mjs";
4
- import { _ as hostingMachines, o as namedBuildMachine, u as resolveBuildMachine } from "./selection-PCMT97XD.mjs";
5
- import { c as call, l as connectHost, m as requireHostedAppMode } from "./hosted-client-Cect92SZ.mjs";
6
- import { c as writeHostedNativeAsync, r as readHostedNative } from "./ios-state-Ce_dystM.mjs";
7
- import { i as prepareHostedNative } from "./hosted-native-DmdLSmvu.mjs";
8
- import { t as DEFAULT_DEVICE_SLOT_WAIT_MS, u as peekDeviceSlots } from "./device-capacity-C5C_jOQd.mjs";
1
+ import { m as getProject, v as loadConfig$1 } from "./config-D5qNWJEP.mjs";
2
+ import { m as peekBudget } from "./ccache-DVDO2ocE.mjs";
3
+ import { z as readHostMemoryPressureAsync } from "./ios-CdAV4-1E.mjs";
4
+ import { _ as hostingMachines, o as namedBuildMachine, u as resolveBuildMachine } from "./selection-C95m--1_.mjs";
5
+ import { c as call, l as connectHost, m as requireHostedAppMode } from "./hosted-client-5ur3YpxY.mjs";
6
+ import { c as writeHostedNativeAsync, r as readHostedNative } from "./ios-state-BEIJRJ7P.mjs";
7
+ import { i as prepareHostedNative } from "./hosted-native-kaR4nUHk.mjs";
8
+ import { d as peekDeviceSlots, t as DEFAULT_DEVICE_SLOT_WAIT_MS } from "./device-capacity-Du5wBTNJ.mjs";
9
9
  import { ambientEnv } from "@stim-cli/core";
10
10
  import { automaticMachineEnabled, isJsonObject, machineCapacity, mayRunHere, parseHostedChoice, parseHostedNativeOffer, prefersRemote } from "@stim-cli/core/state";
11
11
  import { setTimeout } from "node:timers/promises";
@@ -43,12 +43,12 @@ function decideDevicePlacement(inputs) {
43
43
  }
44
44
  const { platform, placement = "auto", here, offers, buildMachine, noWait, eas } = inputs;
45
45
  const remoteFirst = prefersRemote(placement);
46
- const { count, max, queued } = here.devices;
46
+ const { count, max, queued, limit } = here.devices;
47
47
  const room = max === 0 || count !== null && count < max;
48
48
  const localEnabled = here.localEnabled !== false && mayRunHere(placement);
49
49
  const cannotTake = !localEnabled || !room || queued > 0;
50
50
  const atCapacity = count !== null && (!room || queued > 0);
51
- const usage = max > 0 ? `${count} of ${max} devices in use` : `${count} devices in use, no device cap`;
51
+ const usage = max > 0 ? `${count} of ${max} devices in use${limit ? ` (${limit})` : ""}` : `${count} devices in use, no device cap`;
52
52
  const localReason = !mayRunHere(placement) ? "remote-only never runs here" : !localEnabled ? "local is disabled in remote.devicePoolDisabled" : count === null ? "cannot tell how many devices run here; local boot admission decides" : cannotTake ? `${usage}${queued ? `, ${queued} runs queued ahead` : ""}` : here.budgetRefusal ?? (here.memoryPressure !== "normal" ? `host memory pressure ${here.memoryPressure ?? "unknown"} here` : `load ${here.loadPerCore.toFixed(1)}/core here, ${usage}`);
53
53
  let hostsFull = false;
54
54
  const nowhere = (code, reason, skipped = [], waiting = "") => {
@@ -1,17 +1,17 @@
1
1
  import { D as ownership_claim_exports, S as process_identity_exports, c as throwIfCancelled, l as WorkspaceProcessCleanupError, s as cancelledError, t as getExecutor, u as withWorkspaceProcessLock } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, k as workspaceLogsDir$1, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-DGwkPXwq.mjs";
3
- import { p as getProject } from "./config-AbUjIBOQ.mjs";
4
- import { l as phaseLine } from "./command-output-BBW8eWPL.mjs";
5
- import { N as metroPortSetting, a as SETTING_SHAPE_REMEDY, ct as webSettings } from "./settings-D776ygML.mjs";
6
- import { b as isPackageResolvable, v as detectIsExpo } from "./project-DPQjnpcI.mjs";
7
- import { d as resolveProjectMetro } from "./metro-BMQHczcf.mjs";
2
+ import { E as workspaceDir, k as workspaceLogsDir$1, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-3bF4TB8P.mjs";
3
+ import { m as getProject } from "./config-D5qNWJEP.mjs";
4
+ import { l as phaseLine } from "./command-output-VrXd6qPX.mjs";
5
+ import { N as metroPortSetting, a as SETTING_SHAPE_REMEDY, ct as webSettings } from "./settings-C6UTYW2K.mjs";
6
+ import { b as isPackageResolvable, v as detectIsExpo } from "./project-DCLkDM8C.mjs";
7
+ import { d as resolveProjectMetro } from "./metro-mKHEMO-a.mjs";
8
8
  import { c as readNdjsonGenerations$1 } from "./ndjson-CrjIsGzw.mjs";
9
- import { Wt as readMetroRecords } from "./ccache-B8gY50-h.mjs";
10
- import { f as webLogFile, m as webSupervisorLogFile, o as readWebRecord, s as updateWebRecord } from "./state-D5ZxwCGJ.mjs";
11
- import { ft as teardownBrowserHeld, x as resolveSupervisorTarget } from "./workspaces-7_RWoi6c.mjs";
12
- import { i as reserveBrowserPort, n as getNamedPort } from "./named-ports-DcktE2Pw.mjs";
9
+ import { Wt as readMetroRecords } from "./ccache-DVDO2ocE.mjs";
10
+ import { f as webLogFile, m as webSupervisorLogFile, o as readWebRecord, s as updateWebRecord } from "./state-CM_HvvkS.mjs";
11
+ import { ft as teardownBrowserHeld, x as resolveSupervisorTarget } from "./workspaces-BNEyJ1B_.mjs";
12
+ import { i as reserveBrowserPort, n as getNamedPort } from "./named-ports-B0hCk2v-.mjs";
13
13
  import { n as sendToOwnedPage, t as liveWebRecord } from "./page-CQJlcj3x.mjs";
14
- import { o as resolveWorkspaceMetroPort } from "./start-B7J5a9nS.mjs";
14
+ import { o as resolveWorkspaceMetroPort } from "./start-LSwIFlBv.mjs";
15
15
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
16
16
  import { n as windowsLauncherArgs } from "./detached-entry-BPlSaCwC.mjs";
17
17
  import { a as findChrome, t as CHROME_INSTALL_REMEDY } from "./chrome-DyDWurWG.mjs";
@@ -1,28 +1,28 @@
1
1
  import { c as throwIfCancelled, s as cancelledError, x as withDrainingCancellation } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, a as recordWorkspaceUseAsync, k as workspaceLogsDir } from "./workspace-state-DGwkPXwq.mjs";
3
- import { E as upsertProject, O as withConfigLockAsync, p as getProject, u as getConcurrencyLimits } from "./config-AbUjIBOQ.mjs";
4
- import { l as phaseLine } from "./command-output-BBW8eWPL.mjs";
5
- import { J as resolveCacheProviderConfig, Z as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY } from "./settings-D776ygML.mjs";
6
- import { f as projectRegistry, v as detectIsExpo } from "./project-DPQjnpcI.mjs";
7
- import { s as workspaceShareURL } from "./stim-desktop-CYXLFpFS.mjs";
8
- import { A as hostSystemImageArch } from "./android-DdKG6lyD.mjs";
2
+ import { E as workspaceDir, a as recordWorkspaceUseAsync, k as workspaceLogsDir } from "./workspace-state-3bF4TB8P.mjs";
3
+ import { D as upsertProject, k as withConfigLockAsync, m as getProject, u as getConcurrencyLimits } from "./config-D5qNWJEP.mjs";
4
+ import { l as phaseLine } from "./command-output-VrXd6qPX.mjs";
5
+ import { J as resolveCacheProviderConfig, Z as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY } from "./settings-C6UTYW2K.mjs";
6
+ import { f as projectRegistry, v as detectIsExpo } from "./project-DCLkDM8C.mjs";
7
+ import { s as workspaceShareURL } from "./stim-desktop-1XxET4S8.mjs";
8
+ import { j as hostSystemImageArch } from "./android-DsEj2CCs.mjs";
9
9
  import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
10
- import { An as checkEasAuth, Rn as resolveRemote, zn as uploadRemote } from "./ccache-B8gY50-h.mjs";
11
- import { $ as tapBuildLog, Q as startBuildProgress, St as acquireBuildSlot, Tt as releaseBuildSlot, X as recordFinishedBuild, ct as recordRunStats, it as readRunEstimates, lt as statsProjectKey, rt as createRunRecorder } from "./workspaces-7_RWoi6c.mjs";
12
- import { H as readBundleId, ct as withNativeBuildRun, st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
13
- import { F as waitForBuild, M as acquireBuildLock, P as releaseBuildLock } from "./activity-BTaUf0tc.mjs";
14
- import { T as storedAppId, x as providerUploadOutcome } from "./build-cache-DlC3owap.mjs";
15
- import { m as listIosRuntimes } from "./ios-CXnoVO_z.mjs";
10
+ import { An as checkEasAuth, Rn as resolveRemote, zn as uploadRemote } from "./ccache-DVDO2ocE.mjs";
11
+ import { $ as tapBuildLog, Q as startBuildProgress, St as acquireBuildSlot, Tt as releaseBuildSlot, X as recordFinishedBuild, ct as recordRunStats, it as readRunEstimates, lt as statsProjectKey, rt as createRunRecorder } from "./workspaces-BNEyJ1B_.mjs";
12
+ import { H as readBundleId, ct as withNativeBuildRun, 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, x as providerUploadOutcome } from "./build-cache-BsKim4V7.mjs";
15
+ import { m as listIosRuntimes } from "./ios-CdAV4-1E.mjs";
16
16
  import { d as optimizationBuildProfile, l as artifactCachePolicy } from "./errors-DHm_U5gv.mjs";
17
- import { S as setRemoteLogSink } from "./client-DrHykA24.mjs";
18
- import { d as resolveBuildPlacement } from "./selection-PCMT97XD.mjs";
19
- import { c as iosProjectPathError, g as resolveIosBuildSetup, m as resolveConfiguration, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-DUevTPur.mjs";
20
- import { f as settleFingerprintCheck } from "./prebuild-DBJMhwSS.mjs";
21
- import { n as ensureWorkspaceStorageSafely } from "./native-runtime-D4cTwU0Z.mjs";
22
- import { t as acquireAndroidArtifact } from "./artifact-M6W2l-xh.mjs";
23
- import { a as persistLastBuild, l as resolveAndroidBuildPlan, n as finishAndroidUpload } from "./result-W4HCum4A.mjs";
24
- import { o as lastBuildRecord } from "./ios-project-BM9TbTE7.mjs";
25
- import { t as acquireIosArtifact } from "./artifact-DTHXcmQ3.mjs";
17
+ import { S as setRemoteLogSink } from "./client-DhJOvSvh.mjs";
18
+ import { d as resolveBuildPlacement } from "./selection-C95m--1_.mjs";
19
+ import { c as iosProjectPathError, g as resolveIosBuildSetup, m as resolveConfiguration, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-Cs24xRQa.mjs";
20
+ import { f as settleFingerprintCheck } from "./prebuild-D0hvmO4j.mjs";
21
+ import { n as ensureWorkspaceStorageSafely } from "./native-runtime-D4qgnjK_.mjs";
22
+ import { t as acquireAndroidArtifact } from "./artifact-ta3xA0c4.mjs";
23
+ import { a as persistLastBuild, l as resolveAndroidBuildPlan, n as finishAndroidUpload } from "./result-Epkl6gyG.mjs";
24
+ import { o as lastBuildRecord } from "./ios-project-Br1tVYWX.mjs";
25
+ import { t as acquireIosArtifact } from "./artifact-Cr34-Yyy.mjs";
26
26
  import { constants, promises } from "node:fs";
27
27
  import { basename, join } from "node:path";
28
28
  import { hostSimulatorArch } from "@stim-cli/core";