stim 1.36.0 → 1.38.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 (167) hide show
  1. package/README.md +3 -1
  2. package/dist/{acquire-artifact-DGTHCd0Q.mjs → acquire-artifact-QKPDkesw.mjs} +2 -2
  3. package/dist/{act-CvN9xyV6.mjs → act-Bh3t-NuH.mjs} +28 -34
  4. package/dist/{activity-BpdDvA8Q.mjs → activity-CANftndU.mjs} +6 -6
  5. package/dist/{agent-device-usage-output-pbhaW7_k.mjs → agent-device-usage-output-CuROXefb.mjs} +5 -5
  6. package/dist/{android-SJx1V3R3.mjs → android-27_JgJ1T.mjs} +7 -7
  7. package/dist/{android-B0qTdwnt.mjs → android-Biwc4Dck.mjs} +5 -5
  8. package/dist/{android-5wkcMFDG.mjs → android-DGLG_VQ3.mjs} +2 -2
  9. package/dist/{android-e9WP10cE.mjs → android-Z6Eev9rL.mjs} +51 -42
  10. package/dist/{android-cas-BS9_55U5.mjs → android-cas-BDAwwL82.mjs} +4 -4
  11. package/dist/android-cas-compiler.mjs +1 -1
  12. package/dist/{android-image-BZ57YL6R.mjs → android-image-BcUD6bPi.mjs} +3 -3
  13. package/dist/api.d.mts +12 -5
  14. package/dist/api.mjs +34 -31
  15. package/dist/{apk-signed-tail-eZyXIrnc.mjs → apk-signed-tail-DHMkXs4s.mjs} +2 -2
  16. package/dist/{artifact-C3srrGVU.mjs → artifact-Dc1GsK7o.mjs} +29 -15
  17. package/dist/{artifact-platform-DqCWUieN.mjs → artifact-platform-BaGL1i1X.mjs} +1 -1
  18. package/dist/{artifact-ubNdxo_K.mjs → artifact-sGoFVK1q.mjs} +12 -12
  19. package/dist/{auto-placement-CKFpFCuq.mjs → auto-placement-RNh4kx2T.mjs} +7 -7
  20. package/dist/{browser-web-B63vLrj6.mjs → browser-web-7Oj57Roa.mjs} +15 -15
  21. package/dist/{build-B_Dx9SKJ.mjs → build-DkE5vjp1.mjs} +29 -28
  22. package/dist/{build-cache-BW8T4oD2.mjs → build-cache-CJ65Efv7.mjs} +10 -7
  23. package/dist/{build-plan-CeIooJqn.mjs → build-plan-DWajg5l_.mjs} +8 -7
  24. package/dist/{cache-manifest-CxWkZmUr.mjs → cache-manifest-BO0TIcPV.mjs} +1 -1
  25. package/dist/cache-manifest.mjs +1 -1
  26. package/dist/{cdp-C216kOAn.mjs → cdp-CgT47_9A.mjs} +1 -1
  27. package/dist/{chrome-C8sC5tdl.mjs → chrome-DL5znvmo.mjs} +1 -1
  28. package/dist/{cli-COdXswmc.mjs → cli-BSlwv9hI.mjs} +21 -21
  29. package/dist/cli.mjs +1 -1
  30. package/dist/{client-KSWIeQLA.mjs → client-qwmHFSga.mjs} +16 -12
  31. package/dist/collector-run.mjs +7 -7
  32. package/dist/{command-output-T3cDctRE.mjs → command-output-DsjhOzJ3.mjs} +1 -1
  33. package/dist/{config-BA3TgoIP.mjs → config-CNmN-ndb.mjs} +2 -2
  34. package/dist/{dependencies-LH-7k1Vr.mjs → dependencies-oku1ZLep.mjs} +144 -71
  35. package/dist/{dependency-state-Blfp3AkG.mjs → dependency-state-CBhPJAs_.mjs} +2 -2
  36. package/dist/{detached-entry-tfrgGVWb.mjs → detached-entry-VqFeEE9W.mjs} +1 -1
  37. package/dist/{dev-client-MO_DjTZr.mjs → dev-client-DL5UtVdx.mjs} +2 -2
  38. package/dist/{device-DNTWFFB1.mjs → device-CxMwX0VO.mjs} +17 -16
  39. package/dist/{device-android-BB9Lugr8.mjs → device-android-CSlBXuh_.mjs} +9 -9
  40. package/dist/{device-capacity-CpAVcKgq.mjs → device-capacity-D_IlxZRL.mjs} +84 -37
  41. package/dist/device-host-worker.mjs +28 -16
  42. package/dist/{device-pool-BJToGG-q.mjs → device-pool-BEaTdtss.mjs} +3 -3
  43. package/dist/{device-provision-CxQDCtrc.mjs → device-provision-C9NPdCne.mjs} +10 -10
  44. package/dist/{device-BZWt_aPJ.mjs → device-yfuJ-v4s.mjs} +11 -11
  45. package/dist/{doctor-C-46SkBe.mjs → doctor-BAA3zN5U.mjs} +1 -1
  46. package/dist/{doctor-DV639Iw_.mjs → doctor-BQ1Kl44s.mjs} +15 -21
  47. package/dist/{doctor-CYZ45LnX.mjs → doctor-QNzDE4aW.mjs} +24 -24
  48. package/dist/{doctor-fingerprint-DqWvIhMb.mjs → doctor-fingerprint-Bo4z8YNP.mjs} +1 -1
  49. package/dist/doctor-fingerprint.mjs +1 -1
  50. package/dist/{doctor-watchman-TZxYt_98.mjs → doctor-watchman-B8e3s9ko.mjs} +5 -5
  51. package/dist/{eas-build-Xf5Jd6LR.mjs → eas-build-4rg9WpEg.mjs} +4 -4
  52. package/dist/{eas-fallback-DNYPNinw.mjs → eas-fallback-UGo0SG7T.mjs} +6 -6
  53. package/dist/{eas-session-ledger-CXZ4aix0.mjs → eas-session-ledger-BDpSdFDM.mjs} +6 -6
  54. package/dist/{error-diagnostics-CvB5bpPU.mjs → error-diagnostics-CW9xl6ot.mjs} +10 -10
  55. package/dist/{exec-CGuDzt40.mjs → exec-L37dbiIb.mjs} +7 -1
  56. package/dist/{gc-DiUhrVFo.mjs → gc-3DHVCn-k.mjs} +52 -36
  57. package/dist/{gc-8Qm_K1iy.mjs → gc-BQ5dXnC7.mjs} +2 -2
  58. package/dist/{guide-CuvHRP53.mjs → guide-DqJCc4vW.mjs} +209 -78
  59. package/dist/{hosted-android-D__HGVIO.mjs → hosted-android-gwLspaz6.mjs} +4 -4
  60. package/dist/{hosted-client-DMOOu8vD.mjs → hosted-client-B_h_bTlz.mjs} +4 -4
  61. package/dist/{hosted-logs-CClIktQM.mjs → hosted-logs-BpQSRDRU.mjs} +17 -10
  62. package/dist/{hosted-logs-sync-B7XCeqVm.mjs → hosted-logs-sync-D3L1hDpM.mjs} +5 -5
  63. package/dist/{hosted-macos-D4sDJIbB.mjs → hosted-macos-GK4O1s7x.mjs} +6 -6
  64. package/dist/{hosted-native-BiiUG_Q6.mjs → hosted-native-B6ur_0OJ.mjs} +8 -8
  65. package/dist/{ios-Qam0bT9n.mjs → ios-2Qr4_Zu2.mjs} +1 -1
  66. package/dist/{ios-BZuhvLGr.mjs → ios-Bi0bQiZ_.mjs} +8 -8
  67. package/dist/{ios-BhfpRfNf.mjs → ios-DQEzde6f.mjs} +23 -10
  68. package/dist/{ios-BhpUWyN7.mjs → ios-M7nRVb33.mjs} +100 -37
  69. package/dist/{ios-device-vhYL1N--.mjs → ios-device-BLm1BZB4.mjs} +3 -3
  70. package/dist/{ios-device-DLdEDWJj.mjs → ios-device-ygijU78G.mjs} +1 -1
  71. package/dist/{ios-project-Cz0S1Sz-.mjs → ios-project-Bsm-eqwv.mjs} +7 -7
  72. package/dist/ios-runtime-DLiKoOkd.mjs +150 -0
  73. package/dist/{ios-signing-BcH88ecn.mjs → ios-signing-rWR_Mu5Z.mjs} +3 -3
  74. package/dist/{ios-state-Avwz2cbZ.mjs → ios-state-tzD0s7pt.mjs} +1 -1
  75. package/dist/{js-swap-Desu2iII.mjs → js-swap-Cuky0ZAQ.mjs} +60 -13
  76. package/dist/{launch-6ckG9UrC.mjs → launch-B-pkNlqg.mjs} +48 -28
  77. package/dist/{lightened-B6TnpHMX.mjs → lightened-KHWHmzGs.mjs} +5 -5
  78. package/dist/{logs-B-DMy1K0.mjs → logs-B0etn-BD.mjs} +7 -7
  79. package/dist/{logs-CO0CJRiC.mjs → logs-HomiqPhV.mjs} +6 -6
  80. package/dist/{macos-CduEmWAK.mjs → macos-C5liDnbP.mjs} +1 -1
  81. package/dist/macos-run.mjs +1 -1
  82. package/dist/{macos-B1aCXhem.mjs → macos-zMxSibx5.mjs} +22 -23
  83. package/dist/maintenance-run.mjs +6 -6
  84. package/dist/{metro-DM3yJL1M.mjs → metro-Cj6W4qOO.mjs} +4 -4
  85. package/dist/{metro-request-O8Q-JvBg.mjs → metro-request-BWCl3Zco.mjs} +2 -2
  86. package/dist/{prebuild-Di2IhUue.mjs → miss-reason-CeHvzeVm.mjs} +12 -272
  87. package/dist/{named-ports-BvB_CO9B.mjs → named-ports-DZ8DrkH1.mjs} +3 -3
  88. package/dist/{native-android-28NOG2-y.mjs → native-android-DtWLzg6g.mjs} +18 -18
  89. package/dist/{native-gradle-artifact-inputs-DxVEtS6_.mjs → native-gradle-artifact-inputs-D4w20_6d.mjs} +5 -5
  90. package/dist/{native-runtime-C3_NkUlW.mjs → native-runtime-BfvvAJLd.mjs} +6 -6
  91. package/dist/{native-source-ChAGj7R1.mjs → native-source-D2ZfiQ6U.mjs} +1 -1
  92. package/dist/{native-xcode-inputs-BWFTw5cJ.mjs → native-xcode-inputs-BHvnAq4o.mjs} +3 -3
  93. package/dist/{native-xcode-ios-B4Qoc7-U.mjs → native-xcode-ios-CYxrg_kK.mjs} +18 -19
  94. package/dist/offload-worker.mjs +23 -22
  95. package/dist/{operation-exec-DKlBcKAL.mjs → operation-exec-DNynwpqO.mjs} +1 -1
  96. package/dist/{ownership-C3y8wLSl.mjs → ownership-BLgOimfp.mjs} +3 -3
  97. package/dist/{page-Dj8IqvGM.mjs → page-CoN9al_x.mjs} +2 -2
  98. package/dist/{phone-reverses-BhSxbqom.mjs → phone-reverses-vRveZKSG.mjs} +4 -4
  99. package/dist/{placement-log-B8RCSzOm.mjs → placement-log-CM0DSELs.mjs} +1 -1
  100. package/dist/{plan-placement-BI4r55aP.mjs → plan-placement-CIrvKq8y.mjs} +6 -6
  101. package/dist/{ports-DhOSyWm9.mjs → ports-CKORWlC0.mjs} +3 -3
  102. package/dist/{project-Clk1JAWL.mjs → project-DIo71tGq.mjs} +16 -16
  103. package/dist/{pull-request-BpMTNkMB.mjs → pull-request-m8cMZ3aE.mjs} +2 -2
  104. package/dist/pull-requests.mjs +1 -1
  105. package/dist/{react-native-android-bdHBMrnf.mjs → react-native-android-B7VYSlKj.mjs} +41 -36
  106. package/dist/{react-native-build-CJega_NM.mjs → react-native-build-CFYTYmG4.mjs} +13 -10
  107. package/dist/{react-native-doctor-CY7BGITE.mjs → react-native-doctor-CnpVfE0k.mjs} +6 -6
  108. package/dist/{react-native-ios-Bo5EDVel.mjs → react-native-ios-ByeXo_NP.mjs} +18 -18
  109. package/dist/{recorded-build-BuGL_fnm.mjs → recorded-build-B4prJjSD.mjs} +20 -2
  110. package/dist/{recordings-6i2-x8LU.mjs → recordings-Byu5SzlI.mjs} +1 -1
  111. package/dist/{registration-DKjJGQ6p.mjs → registration-C-3PDR3X.mjs} +1 -1
  112. package/dist/{reload-BvDuvygc.mjs → reload-DANrKhQR.mjs} +1 -1
  113. package/dist/{reload-A_axEbeS.mjs → reload-DTd9g1EG.mjs} +16 -16
  114. package/dist/{remote-PD6CM0xp.mjs → remote-BWuq9qHV.mjs} +4 -4
  115. package/dist/{remote-WK_swZEw.mjs → remote-NOM82XE0.mjs} +10 -10
  116. package/dist/{result-BkDpN5Mz.mjs → result-C-ISEJ5F.mjs} +17 -17
  117. package/dist/{run-CTFi4Nq2.mjs → run-DQwx6djG.mjs} +2 -2
  118. package/dist/{server-bare-W0aPsRZE.mjs → server-bare-B_wRfchQ.mjs} +2 -2
  119. package/dist/{server-command-S00-ddjK.mjs → server-command-DgXYowQf.mjs} +6 -6
  120. package/dist/{server-expo-cc-cmfsl.mjs → server-expo-ByBM8DVv.mjs} +10 -8
  121. package/dist/server-expo-D7rwjAFp.mjs +2 -0
  122. package/dist/{settings-C_Xu4RNZ.mjs → settings-BthPoY3t.mjs} +2 -2
  123. package/dist/{settings-Bap-qjnp.mjs → settings-Cz8kQJzr.mjs} +49 -12
  124. package/dist/{settings-payload-D5jjhmrw.mjs → settings-payload-BOcxsZ6k.mjs} +5 -5
  125. package/dist/{settings-write-C5huI-iS.mjs → settings-write-BuMPL1rd.mjs} +6 -6
  126. package/dist/settings.schema.json +32 -2
  127. package/dist/{simslim-DlBvwgeF.mjs → simslim-BMgpTRWe.mjs} +2 -2
  128. package/dist/{slot-launch-qEQVTth7.mjs → slot-launch-BIm9w8kH.mjs} +6 -6
  129. package/dist/{stage-CxVI_MlP.mjs → stage-CX1Byp3n.mjs} +6 -5
  130. package/dist/{start-CVzivp35.mjs → start-BZWr85b2.mjs} +1 -1
  131. package/dist/{start-YpT_JpQQ.mjs → start-DI0ofPO-.mjs} +12 -12
  132. package/dist/{state-B4B5P4LU.mjs → state-45P8Kd6Z.mjs} +2 -2
  133. package/dist/{state-B9VFI6r0.mjs → state-C2vELPyr.mjs} +4 -4
  134. package/dist/{stats-COoePEri.mjs → stats-BDljWVWU.mjs} +5 -5
  135. package/dist/{stats-report-BVRCqwWA.mjs → stats-report-Ci6TAfFm.mjs} +1 -1
  136. package/dist/{status-CIvU5-TF.mjs → status-BG2S-a1d.mjs} +1 -1
  137. package/dist/{status-CQWmNl1f.mjs → status-C2PdxK6q.mjs} +1 -1
  138. package/dist/{status-CIg0k7Qb.mjs → status-DEZjHP4q.mjs} +32 -34
  139. package/dist/{status-watch--rfZynD_.mjs → status-watch-Cs18eFkQ.mjs} +5 -5
  140. package/dist/status-worker.mjs +1 -1
  141. package/dist/{stim-desktop-D0P_bzmd.mjs → stim-desktop-DWGAfaud.mjs} +2 -2
  142. package/dist/{stop-BiI4_VFG.mjs → stop-B2zDplJa.mjs} +2 -2
  143. package/dist/{stop-C3d5qG7C.mjs → stop-BPrTEOaz.mjs} +16 -16
  144. package/dist/{stop-BEBBruvD.mjs → stop-DrxHVVX9.mjs} +5 -5
  145. package/dist/supervisor-run.mjs +15 -15
  146. package/dist/{support-BJbXovoO.mjs → support-BeVRaMWT.mjs} +13 -14
  147. package/dist/{support-Vckdzrmk.mjs → support-DBKG3Yyb.mjs} +7 -7
  148. package/dist/{swiftpm-artifact-inputs-DbuF-Yrr.mjs → swiftpm-artifact-inputs-CfNAb6Vm.mjs} +4 -4
  149. package/dist/{swiftpm-macos-Bu8xeBfM.mjs → swiftpm-macos-xdHjJHIj.mjs} +11 -11
  150. package/dist/toolchain-CTsPS5tL.mjs +2 -0
  151. package/dist/{toolchain-DCnWAxQL.mjs → toolchain-CZvtCZ-m.mjs} +11 -8
  152. package/dist/trigger-Bp3lruF2.mjs +2 -0
  153. package/dist/{trigger-BtB4kbe0.mjs → trigger-G_gbfIVB.mjs} +2 -2
  154. package/dist/{warm-progress-DwsGBpph.mjs → warm-progress-D3a0KviW.mjs} +20 -16
  155. package/dist/{web-D2En0Wa5.mjs → web-BvAweypa.mjs} +9 -9
  156. package/dist/web-DDL3usMb.mjs +2 -0
  157. package/dist/web-run.mjs +8 -8
  158. package/dist/windows-report.mjs +1 -1
  159. package/dist/{workspace-state-BhwAJBgA.mjs → workspace-state-CHEN_xzy.mjs} +3 -3
  160. package/dist/{workspaces-Dh5N70qW.mjs → workspaces-BgAYIccE.mjs} +218 -54
  161. package/dist/{worktree-DLm4s2Ib.mjs → worktree-C0YZ6mnk.mjs} +1 -1
  162. package/dist/{worktree-Yw3EW77B.mjs → worktree-kGPE9Pcw.mjs} +339 -37
  163. package/package.json +7 -7
  164. package/dist/server-expo-BWJDa7Qb.mjs +0 -2
  165. package/dist/toolchain-CIRdNl-c.mjs +0 -2
  166. package/dist/trigger-D8B7QR0q.mjs +0 -2
  167. package/dist/web-Dpj70t4p.mjs +0 -2
@@ -1,33 +1,33 @@
1
- import { C as operationState, D as ownership_claim_exports, E as debugLog, S as isTermination, T as process_identity_exports, d as throwIfCancelled, f as WorkspaceProcessCleanupError, l as cancellableSleep, m as workspaceProcessLockError, n as isTimeoutError, p as withWorkspaceProcessLock, t as getExecutor, u as cancelledError } from "./exec-CGuDzt40.mjs";
2
- import { D as workspaceId$1, E as workspaceDir, M as withDirLock$1, b as sharedCcache$1, d as writeWorkspaceState, j as workspaceStateFile$1, k as workspaceLogsDir$1, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1, s as updateWorkspaceStateAsync, t as clearWorkspaceStateKey, y as sharedBuildCache } from "./workspace-state-BhwAJBgA.mjs";
1
+ import { C as operationState, D as ownership_claim_exports, E as debugLog, S as isTermination, T as process_identity_exports, d as throwIfCancelled, f as WorkspaceProcessCleanupError, l as cancellableSleep, m as workspaceProcessLockError, n as isTimeoutError, p as withWorkspaceProcessLock, t as getExecutor, u as cancelledError } from "./exec-L37dbiIb.mjs";
2
+ import { D as workspaceId$1, E as workspaceDir, M as withDirLock$1, b as sharedCcache$1, d as writeWorkspaceState, j as workspaceStateFile$1, k as workspaceLogsDir$1, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1, s as updateWorkspaceStateAsync, t as clearWorkspaceStateKey, y as sharedBuildCache } from "./workspace-state-CHEN_xzy.mjs";
3
3
  import { n as stripAnsi } from "./process-output-Fpl8PYi8.mjs";
4
- import { a as formatElapsed, l as phaseLine, o as formatLongDuration, s as isAppLaunchError, u as plural } from "./command-output-T3cDctRE.mjs";
5
- import { A as withConfigLockAsync$1, a as clearDevice, ct as measuredDirectorySizeAsync, d as getConfigDir, ft as deviceSlotKey, gt as projectDeviceSlots, it as formatBytes, lt as volumeRootFor, m as getProject, nt as directorySize, o as clearSupervisor, ot as isOnMountedVolume, p as getPlatformDeviceLimits, pt as deviceSlotPlatforms, rt as directorySizeAsync, u as getConcurrencyLimits, v as loadConfig$1 } from "./config-BA3TgoIP.mjs";
6
- import { a as killOnAbort, n as runOperationFileQuiet, r as childEnvironment, t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
7
- import { Z as resolveProjectSettingsAsync, d as androidLayoutSetting, ft as planMetroReach, g as deviceReclaimIdleMinutesSetting, m as defaultAndroidLayout } from "./settings-Bap-qjnp.mjs";
8
- import { C as resolvePackageJson, M as readMetroTunnel, N as readPidFile, P as readRemoteSession, i as findProjectRoot$1, j as clearWorkspaceSupervisor, k as clearRemoteSession, s as ownedDeviceLabel, v as detectIsExpo } from "./project-Clk1JAWL.mjs";
9
- import { N as listAdbDevices, P as listAdbDevicesAsync, R as listAvdsAsync, U as ownedAvdDirectory, X as parseAvdSystemImage, Y as parseAvdDeviceProfile, d as androidToolPath, ft as isStimOwnedAvd, gt as dropParked, m as avdIniPaths, o as androidHome, pt as isStimOwnedSim, q as ownedAvdSerialResolverAsync, xt as readParked, y as avdStorageRoots, z as listInstalledSystemImages } from "./android-SJx1V3R3.mjs";
10
- import { a as listeningPidsAsync, c as pidExists, d as resolveProjectMetro, h as isMetroRunning, r as killMetroTreeAsync, u as processCwds } from "./metro-DM3yJL1M.mjs";
4
+ import { a as formatElapsed, l as phaseLine, o as formatLongDuration, s as isAppLaunchError, u as plural } from "./command-output-DsjhOzJ3.mjs";
5
+ import { A as withConfigLockAsync$1, a as clearDevice, ct as measuredDirectorySizeAsync, d as getConfigDir, ft as deviceSlotKey, gt as projectDeviceSlots, it as formatBytes, lt as volumeRootFor, m as getProject, nt as directorySize, o as clearSupervisor, ot as isOnMountedVolume, p as getPlatformDeviceLimits, pt as deviceSlotPlatforms, rt as directorySizeAsync, u as getConcurrencyLimits, v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
6
+ import { a as killOnAbort, n as runOperationFileQuiet, r as childEnvironment, t as runOperationFile } from "./operation-exec-DNynwpqO.mjs";
7
+ import { Z as resolveProjectSettingsAsync, d as androidLayoutSetting, ft as planMetroReach, g as deviceReclaimIdleMinutesSetting, m as defaultAndroidLayout } from "./settings-Cz8kQJzr.mjs";
8
+ import { C as resolvePackageJson, M as readMetroTunnel, N as readPidFile, P as readRemoteSession, i as findProjectRoot$1, j as clearWorkspaceSupervisor, k as clearRemoteSession, s as ownedDeviceLabel, v as detectIsExpo } from "./project-DIo71tGq.mjs";
9
+ import { N as listAdbDevices, P as listAdbDevicesAsync, R as listAvdsAsync, U as ownedAvdDirectory, X as parseAvdSystemImage, Y as parseAvdDeviceProfile, d as androidToolPath, ft as isStimOwnedAvd, gt as dropParked, m as avdIniPaths, o as androidHome, pt as isStimOwnedSim, q as ownedAvdSerialResolverAsync, xt as readParked, y as avdStorageRoots, z as listInstalledSystemImages } from "./android-27_JgJ1T.mjs";
10
+ import { a as listeningPidsAsync, c as pidExists, d as resolveProjectMetro, h as isMetroRunning, r as killMetroTreeAsync, u as processCwds } from "./metro-Cj6W4qOO.mjs";
11
11
  import { c as readNdjsonGenerations$1, i as createNdjsonWriter, r as createNdjsonTail } from "./ndjson-CrjIsGzw.mjs";
12
- import { T as formatSpace, a as removeEasSessionClaim, d as parseWatchRoots, f as parseWatchmanClients, i as recordEasSessionClaim, l as parseSubscriberNames, n as easMachineStateRoot$1, o as removeEasSessionClaimAsync, p as parseWatchmanPid, r as readEasSessionLedger$1, s as compareStimVersions, t as assertEasMachineRootWritable, u as parseTriggerCount, w as environmentState, y as capacity } from "./eas-session-ledger-CXZ4aix0.mjs";
13
- import { i as registeredCaches, r as register } from "./cache-manifest-CxWkZmUr.mjs";
14
- import { At as mapLimited, B as workspaceBuildInProgress, Dt as createGcResults, Et as GC_OUTPUT, F as collectOwnedDeviceActivityAsync, L as idleShutdownCandidates, Mt as sizeConcurrency, N as collectIdleDevicesAsync, P as collectOwnedDeviceActivity, _t as teardownParkedIosSim, bt as measureDu, dt as eraseParkedIosSim, gt as teardownParkedAvd, ht as teardownOwnedIosSim, i as clearWorkspaceOutputs, l as keptByLock, o as collectWorkspaceOutputs, ot as recordCapacityRefusal, pt as teardownOwnedAvd, st as recordCapacityWait, ut as eraseParkedAvd, v as withIdleWorkspace, vt as probePublicHttp, wt as listBuildSlots, x as resolveSupervisorTarget, xt as writeUsageCache, yt as canonical$1, z as shutDownIdleDevices$1 } from "./workspaces-Dh5N70qW.mjs";
12
+ import { T as formatSpace, a as removeEasSessionClaim, d as parseWatchRoots, f as parseWatchmanClients, i as recordEasSessionClaim, l as parseSubscriberNames, n as easMachineStateRoot$1, o as removeEasSessionClaimAsync, p as parseWatchmanPid, r as readEasSessionLedger$1, s as compareStimVersions, t as assertEasMachineRootWritable, u as parseTriggerCount, w as environmentState, y as capacity } from "./eas-session-ledger-BDpSdFDM.mjs";
13
+ import { i as registeredCaches, r as register } from "./cache-manifest-BO0TIcPV.mjs";
14
+ import { B as shutDownIdleDevices$1, Dt as GC_OUTPUT, F as collectOwnedDeviceActivity, I as collectOwnedDeviceActivityAsync, Nt as sizeConcurrency, Ot as createGcResults, P as collectIdleDevicesAsync, R as idleShutdownCandidates, St as writeUsageCache, Tt as listBuildSlots, V as workspaceBuildInProgress, _t as teardownParkedAvd, bt as canonical$1, ct as recordCapacityWait, dt as eraseParkedAvd, ft as eraseParkedIosSim, gt as teardownOwnedIosSim, i as clearWorkspaceOutputs, jt as mapLimited, l as keptByLock, mt as teardownOwnedAvd, o as collectWorkspaceOutputs, st as recordCapacityRefusal, v as withIdleWorkspace, vt as teardownParkedIosSim, x as resolveSupervisorTarget, xt as measureDu, yt as probePublicHttp } from "./workspaces-BgAYIccE.mjs";
15
+ import { t as resolveMaintenanceSettings } from "./settings-D9LtQaUw.mjs";
15
16
  import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
16
- import { $ as readBundleSchemes, Z as approvableSchemes, _t as runCancellationSignal, bt as claimForEmptying, mt as nativeRunWaitNotice } from "./toolchain-DCnWAxQL.mjs";
17
- import { N as listBuildLocks, _ as workspaceDeviceLastUseAt, b as leaseIsExpired, g as workspaceActivity, o as envDir, p as readHostProcessTableAsync, x as listLeaseFiles } from "./activity-BpdDvA8Q.mjs";
18
- import { u as expoConfigContents } from "./build-cache-BW8T4oD2.mjs";
19
- import { G as deviceHoldsBundle, O as sanitizeDeviceLabel, W as deviceHoldsApk, b as parseSimctlList, d as listAllIosSims, f as listAllIosSimsAsync, g as listUserApps, j as uninstallIosApp, l as iosRuntimeMatches, p as listIosDeviceTypesAsync, u as iosSimulatorFailureAdvice, y as parseRuntimeVersion } from "./ios-BhfpRfNf.mjs";
17
+ import { J as approvableSchemes, X as readBundleSchemes, _t as claimForEmptying, dt as nativeRunWaitNotice, mt as runCancellationSignal } from "./toolchain-CZvtCZ-m.mjs";
18
+ import { N as listBuildLocks, _ as workspaceDeviceLastUseAt, b as leaseIsExpired, g as workspaceActivity, o as envDir, p as readHostProcessTableAsync, x as listLeaseFiles } from "./activity-CANftndU.mjs";
19
+ import { u as expoConfigContents } from "./build-cache-CJ65Efv7.mjs";
20
+ import { G as deviceHoldsBundle, O as sanitizeDeviceLabel, W as deviceHoldsApk, b as parseSimctlList, d as listAllIosSims, f as listAllIosSimsAsync, g as listUserApps, j as uninstallIosApp, l as iosRuntimeMatches, p as listIosDeviceTypesAsync, u as iosSimulatorFailureAdvice, y as parseRuntimeVersion } from "./ios-DQEzde6f.mjs";
20
21
  import { n as supervisorError } from "./errors-DHm_U5gv.mjs";
21
- import { c as findBinUpward, n as expoBinFromPackage, r as expoBinPath, s as expoTelemetryEnv } from "./server-expo-cc-cmfsl.mjs";
22
- import { t as DEV_MENU_LAUNCH_ARGS } from "./ios-device-DLdEDWJj.mjs";
23
- import { t as resolveMaintenanceSettings } from "./settings-D9LtQaUw.mjs";
22
+ import { c as findBinUpward, n as expoBinFromPackage, r as expoBinPath, s as expoTelemetryEnv } from "./server-expo-ByBM8DVv.mjs";
23
+ import { t as DEV_MENU_LAUNCH_ARGS } from "./ios-device-ygijU78G.mjs";
24
24
  import { createRequire } from "node:module";
25
25
  import { createHash, randomUUID } from "node:crypto";
26
26
  import { closeSync, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, realpathSync, renameSync, rmSync, statSync, statfsSync, unlinkSync, writeFileSync } from "node:fs";
27
27
  import { homedir, platform, totalmem } from "node:os";
28
28
  import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
29
29
  import { LOG_ROTATE_BYTES, METRO_NAMED_CACHE_LAYOUT, ambientContext, cacheDirRefusal, compiledHelper, configDir, ensurePrivateDir, rotatedLogPath, withAmbientContext, withDirLock, workspaceId } from "@stim-cli/core";
30
- import { DEVICE_IDLE_SHUTDOWN_KEY, DEVICE_RECLAIM_REASON, DEV_SERVER_STOP_REQUEST_KEY, MACHINE_OWNER_KINDS, MAINTENANCE_LOG_NAME, automaticMachineEnabled, budgetSweepFile, budgetSweepLock, buildWorkerRoot, gcLogFile, isJsonObject, loadConfig, machineCacheUsageFile, maintenanceNdjsonFile, readCreatedDevices, readDevServerStop, readDevServerStopRequest, readDeviceIdleShutdowns, readJsonObject, readMachineCacheUsage, runId, settingDefinition, settingValueError, workspaceLogsDir } from "@stim-cli/core/state";
30
+ import { DEVICE_IDLE_SHUTDOWN_KEY, DEVICE_RECLAIM_REASON, DEV_SERVER_STOP_REQUEST_KEY, MACHINE_OWNER_KINDS, MAINTENANCE_LOG_NAME, automaticMachineEnabled, budgetSweepFile, budgetSweepLock, buildWorkerRoot, gcLogFile, isJsonObject, loadConfig, machineCacheUsageFile, maintenanceNdjsonFile, readCreatedDevices, readDevServerStop, readDevServerStopRequest, readDeviceIdleShutdowns, readJsonObject, readMachineCacheUsage, runId, settingDefinition, settingValueError, sharedCompilationCache, workspaceLogsDir, workspaceMetadataFile } from "@stim-cli/core/state";
31
31
  import { basename as basename$1, dirname as dirname$1, isAbsolute as isAbsolute$1, join as join$1, relative as relative$1, resolve as resolve$1 } from "path";
32
32
  import chalk from "chalk";
33
33
  import { existsSync as existsSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, realpathSync as realpathSync$1, rmSync as rmSync$1, statSync as statSync$1 } from "fs";
@@ -37,6 +37,7 @@ import { access, lstat, readFile, readdir, rm, stat, statfs } from "node:fs/prom
37
37
  import { homedir as homedir$1, tmpdir as tmpdir$1 } from "os";
38
38
  //#region src/budget-sweep.ts
39
39
  const EMPTY_SWEEP_WINDOW_MS = 3e5;
40
+ const EMPTY_SWEEP_DISK_DROP_MB = 1024;
40
41
  function sweepMarker(caches, olderThanDays) {
41
42
  const hash = createHash("sha256").update(String(olderThanDays));
42
43
  for (const line of caches.map((cache) => `${cache.name}\0${cache.dir}`).toSorted()) hash.update("\n").update(line);
@@ -45,7 +46,7 @@ function sweepMarker(caches, olderThanDays) {
45
46
  function canSkipEmptySweep(recorded, now) {
46
47
  if (!recorded || recorded.marker !== now.marker) return false;
47
48
  const age = now.at - recorded.at;
48
- return age >= 0 && age < 3e5 && recorded.freeMb - now.freeMb <= 1024;
49
+ return age >= 0 && age < 3e5 && recorded.freeMb - now.freeMb <= EMPTY_SWEEP_DISK_DROP_MB;
49
50
  }
50
51
  function readEmptySweep() {
51
52
  const value = readJsonObject(budgetSweepFile());
@@ -709,6 +710,10 @@ function memoryCacheKind(cache) {
709
710
  const wanted = cache?.trim().toLowerCase();
710
711
  return wanted === "watchman" || wanted === "gradle-daemons" ? wanted : null;
711
712
  }
713
+ /** The memory kind `gc --delete` acts on: the one `--cache` names, or watchman when there is no `--cache`. */
714
+ function reclaimedKind(cache) {
715
+ return cache?.trim() ? memoryCacheKind(cache) : WATCHMAN_KIND;
716
+ }
712
717
  /** Which helpers a gc run inspects: both without --cache, one for its own kind, none for any other --cache. */
713
718
  function memoryScope(cache) {
714
719
  if (!cache?.trim()) return {
@@ -997,7 +1002,6 @@ function runningBuild(locks, slots) {
997
1002
  if (slot) return `${slot.unresolved ? "an unresolved" : "a running"} build holds build slot ${slot.index ?? "?"} (pid ${slot.pid ?? "?"}, ${slot.projectRoot || "unrecorded workspace"})`;
998
1003
  return null;
999
1004
  }
1000
- /** A watchman client's pid resolved to the Stim workspace whose supervisor it is or descends from. */
1001
1005
  function stimWorkspaceOf(pid, parentOf, supervisors) {
1002
1006
  let current = pid;
1003
1007
  for (let depth = 0; current !== void 0 && current > 1 && depth < 64; depth++) {
@@ -1335,7 +1339,7 @@ function uptime(startedAt, now) {
1335
1339
  }
1336
1340
  function memoryLines(report, scoped, now = Date.now()) {
1337
1341
  if (!report || report.processes.length === 0 && report.notices.length === 0) return [];
1338
- const lines = [`Memory (${report.processes.some((entry) => entry.measure === "rss") ? "footprint, resident size where unreadable" : "physical footprint"}) - shared helpers that grow while they run; only --cache watchman or gradle-daemons stops them:`];
1342
+ const lines = [`Memory (${report.processes.some((entry) => entry.measure === "rss") ? "footprint, resident size where unreadable" : "physical footprint"}) - shared helpers that grow while they run; --delete stops an unused watchman and --cache gradle-daemons stops idle Gradle and Kotlin daemons:`];
1339
1343
  for (const entry of report.processes) {
1340
1344
  const state = entry.reclaimable ? "idle" : entry.kind === "watchman" && entry.state === "busy" ? "in use" : entry.state;
1341
1345
  lines.push(` ${processLabel(entry)} ${formatBytes(entry.bytes)}, ${uptime(entry.startedAt, now)}, ${state}`);
@@ -1353,7 +1357,8 @@ function memoryLines(report, scoped, now = Date.now()) {
1353
1357
  if (!report.processes.some((entry) => entry.cacheKind === kind)) continue;
1354
1358
  const roots = kind === "watchman" ? report.watchmanRoots.filter((root) => root.removable).length : 0;
1355
1359
  const note = roots ? ` (and ${roots} stale root(s) removed)` : "";
1356
- parts.push(`${formatBytes(reclaimableBytes(report, kind))} with stim gc --delete --cache ${kind}${note}`);
1360
+ const command = kind === "watchman" && !scoped ? "stim gc --delete" : `stim gc --delete --cache ${kind}`;
1361
+ parts.push(`${formatBytes(reclaimableBytes(report, kind))} with ${command}${note}`);
1357
1362
  }
1358
1363
  if (parts.length) lines.push(` reclaimable ${formatBytes(reclaimableBytes(report))}: ${parts.join("; ")}`);
1359
1364
  return lines;
@@ -1627,13 +1632,14 @@ async function stopIdleGradleDaemons(pids, output = GC_OUTPUT) {
1627
1632
  }
1628
1633
  /** Whether `gc --delete --cache <cache>` would act on a memory kind: stop a process or remove a watchman root. */
1629
1634
  function memoryWorkPending(cache, report) {
1630
- if (!memoryCacheKind(cache) || !report) return false;
1631
- return reclaimableBytes(report) > 0 || report.watchmanRoots.some((root) => root.removable);
1635
+ const kind = reclaimedKind(cache);
1636
+ if (!kind || !report) return false;
1637
+ return reclaimableBytes(report, kind) > 0 || kind === "watchman" && report.watchmanRoots.some((root) => root.removable);
1632
1638
  }
1633
- /** Acts on the one memory kind `--cache` names: never on an unscoped run or `--cache all`. */
1639
+ /** Acts on the one memory kind `--cache` names, and on watchman alone for an unscoped run; never on `--cache all`. */
1634
1640
  async function reclaimMemory(cache, report, output = GC_OUTPUT, operation) {
1635
1641
  operation?.signal.throwIfAborted();
1636
- const kind = memoryCacheKind(cache);
1642
+ const kind = reclaimedKind(cache);
1637
1643
  if (!kind || !report || report.processes.length === 0) return 0;
1638
1644
  return kind === "watchman" ? reclaimWatchman(report, output, operation) : reclaimDaemons(report, output, operation);
1639
1645
  }
@@ -2185,6 +2191,7 @@ function bundleInvocation(root, isExpo, args) {
2185
2191
  //#endregion
2186
2192
  //#region src/engine/remote-cache.ts
2187
2193
  const EAS_PROVIDER_PACKAGE = "eas-build-cache-provider";
2194
+ const LOCAL_PROVIDER_PACKAGE = "@stim-cli/expo-build-cache";
2188
2195
  const RESOLVE_TIMEOUT_MS = 3e4;
2189
2196
  const UPLOAD_TIMEOUT_MS = 6e4;
2190
2197
  const CONFIG_TIMEOUT_MS = 3e4;
@@ -2293,7 +2300,7 @@ function fingerprintedConfig(projectRoot, sources) {
2293
2300
  if (!sources || !dynamicConfigFile(projectRoot)) return null;
2294
2301
  const config = expoConfigContents(sources);
2295
2302
  if (!config) return null;
2296
- if (normalizeProvider(providerFromConfig(config))?.reference === "eas-build-cache-provider" && ownerFromConfig(config) === null) return null;
2303
+ if (normalizeProvider(providerFromConfig(config))?.reference === EAS_PROVIDER_PACKAGE && ownerFromConfig(config) === null) return null;
2297
2304
  return {
2298
2305
  config,
2299
2306
  source: "fingerprint"
@@ -2310,8 +2317,8 @@ async function loadProjectProvider(projectRoot, { context, isExpo = true, run =
2310
2317
  const normalized = normalizeProvider(providerFromConfig(read.config));
2311
2318
  if (!normalized) return { none: true };
2312
2319
  if (normalized.invalid) return { unavailable: `buildCacheProvider is ${normalized.invalid}, which is not "eas" or { plugin: <module> }` };
2313
- if (normalized.reference === "@stim-cli/expo-build-cache") return { none: true };
2314
- if (normalized.reference !== "eas-build-cache-provider") return { unavailable: "Custom Expo buildCacheProvider plugins are not supported. Use EAS or a Stim cache provider." };
2320
+ if (normalized.reference === LOCAL_PROVIDER_PACKAGE) return { none: true };
2321
+ if (normalized.reference !== EAS_PROVIDER_PACKAGE) return { unavailable: "Custom Expo buildCacheProvider plugins are not supported. Use EAS or a Stim cache provider." };
2315
2322
  try {
2316
2323
  (requireFrom ? requireFrom(projectRoot) : createRequire(join(projectRoot, "package.json"))).resolve(EAS_PROVIDER_PACKAGE);
2317
2324
  const bin = resolveEasCliBin(projectRoot);
@@ -2884,7 +2891,7 @@ async function clearOtherUserApps({ udid, keep }, { list = listUserApps, uninsta
2884
2891
  };
2885
2892
  }
2886
2893
  for (const bundleId of installed) {
2887
- if (bundleId === keep) continue;
2894
+ if (bundleId === keep || bundleId.endsWith(".xctrunner")) continue;
2888
2895
  try {
2889
2896
  await uninstall(udid, bundleId);
2890
2897
  removed.push(bundleId);
@@ -5623,6 +5630,30 @@ function findStaleDeviceRecords({ config, sims = [], avds = [], deadProjects = [
5623
5630
  }
5624
5631
  return stale;
5625
5632
  }
5633
+ function findDeadProjectOwnedDevices({ config, deadProjects, sims, avds }) {
5634
+ const found = [];
5635
+ for (const project of deadProjects) for (const { platforms } of projectDeviceSlots(config?.projects[project])) {
5636
+ const ios = platforms.ios;
5637
+ const sim = ios?.owned && ios.deviceUdid ? sims.find((s) => s.udid === ios.deviceUdid && s.name.startsWith("stim-")) : void 0;
5638
+ if (sim) found.push({
5639
+ kind: "ios",
5640
+ id: sim.udid,
5641
+ name: sim.name,
5642
+ project
5643
+ });
5644
+ const android = platforms.android;
5645
+ if (android?.owned && android.avdName?.startsWith("stim-") && avds.includes(android.avdName)) found.push({
5646
+ kind: "android",
5647
+ id: android.avdName,
5648
+ name: android.avdName,
5649
+ project
5650
+ });
5651
+ }
5652
+ return found;
5653
+ }
5654
+ function describeDeadProjectDevices(devices) {
5655
+ return devices.map((device) => `${device.kind === "ios" ? "ios sim" : "android avd"} ${device.name} is owned by the dead project ${device.project}; --delete tries to delete it with the entry`);
5656
+ }
5626
5657
  function describeUnverifiableDevices(simNames = [], avdNames = [], { reason = "no Stim config found" } = {}) {
5627
5658
  const ours = [...simNames, ...avdNames].filter((n) => typeof n === "string" && n.startsWith("stim-"));
5628
5659
  if (ours.length === 0) return [`${reason}; device sweep skipped`];
@@ -7156,6 +7187,19 @@ function planCacheEmptying(caches, all, env = process.env) {
7156
7187
  function previewScopedEmptying(caches, env = process.env) {
7157
7188
  return planCacheEmptying(caches, false, env).map((c) => Object.assign({}, c, { scopedEmpty: emptyVerdict(c) }));
7158
7189
  }
7190
+ /**
7191
+ * Plain `gc --delete` empties the shared Swift compilation cache once it exceeds `caches.swiftCompilationCacheMaxGb`
7192
+ * (0 means no cap); the claim taken for emptying still refuses while a build holds the cache.
7193
+ */
7194
+ function markOverCapCompilationCache(caches, env = process.env) {
7195
+ const capGb = resolveMaintenanceSettings(void 0, env).swiftCompilationCacheMaxGb;
7196
+ if (capGb === 0) return caches;
7197
+ const dir = canonicalPath(sharedCompilationCache());
7198
+ return caches.map((cache) => cache.prune === "atomic" && canonicalPath(cache.dir) === dir && (cache.bytes ?? 0) > capGb * 1024 ** 3 ? {
7199
+ ...cache,
7200
+ ...cache.scopedEmpty
7201
+ } : cache);
7202
+ }
7159
7203
  function ownsItsDirectory(cache) {
7160
7204
  return !Array.isArray(cache.files) && !cacheDirRefusal(cache.dir);
7161
7205
  }
@@ -7338,7 +7382,7 @@ function maintenanceLogger(settings, pass, trigger) {
7338
7382
  "maintenance_action",
7339
7383
  "maintenance_failure",
7340
7384
  "maintenance_skip"
7341
- ].includes(event)) {
7385
+ ].includes(event) && existsSync(workspaceMetadataFile(fields.workspace))) {
7342
7386
  const workspace = createNdjsonWriter(join(workspaceLogsDir(fields.workspace), MAINTENANCE_LOG_NAME), { maxBytes: LOG_ROTATE_BYTES });
7343
7387
  try {
7344
7388
  if (!workspace.write(record)) throw workspace.lastError ?? /* @__PURE__ */ new Error("Could not append workspace maintenance log");
@@ -8339,6 +8383,9 @@ function budgetLine(report) {
8339
8383
  const { budget } = report;
8340
8384
  return `${report.volumes.length ? `${report.volumes.map((v) => `${v.freeGb} GB free on ${v.volume}`).join(", ")} (reclaims below ${Math.max(budget.minFreeDiskGb, budget.hardFloorDiskGb)} GB, ${budget.hardFloorDiskGb ? `refuses below ${budget.hardFloorDiskGb} GB` : "never refuses"})` : "disk budget off"}; ${report.memory ? `roughly ${report.memory.committedGb} GB of a ${budget.maxCommittedMemoryGb} GB memory budget committed` : "memory budget off"}`;
8341
8385
  }
8386
+ //#endregion
8387
+ //#region src/engine/ccache.ts
8388
+ const CCACHE_MAX_SIZE = "5G";
8342
8389
  function ccacheInstallCommand(platform = process.platform) {
8343
8390
  return platform === "darwin" ? "brew install ccache" : platform === "linux" ? "sudo apt install ccache" : "install ccache";
8344
8391
  }
@@ -8361,9 +8408,9 @@ function ccacheStatsLog(root) {
8361
8408
  }
8362
8409
  function ccacheMaxSize(config = loadConfig$1(), env = process.env) {
8363
8410
  const { value, error } = machineNumber("caches.ccacheMaxGb", config, env);
8364
- return error || value === void 0 ? "5G" : `${value}G`;
8411
+ return error || value === void 0 ? CCACHE_MAX_SIZE : `${value}G`;
8365
8412
  }
8366
- function ccacheEnvironment({ binary, dir, workspaceRoot, statsLog, maxSize = "5G" }) {
8413
+ function ccacheEnvironment({ binary, dir, workspaceRoot, statsLog, maxSize = CCACHE_MAX_SIZE }) {
8367
8414
  return {
8368
8415
  CMAKE_C_COMPILER_LAUNCHER: binary,
8369
8416
  CMAKE_CXX_COMPILER_LAUNCHER: binary,
@@ -9424,7 +9471,7 @@ function unknownIosRuntimeRefusal(requested, runtimes) {
9424
9471
  if ((runtimes || []).some((r) => iosRuntimeMatches(r, requested))) return null;
9425
9472
  return {
9426
9473
  message: `No installed simulator runtime matches "${requested}". Installed runtimes: ${installedNames((runtimes || []).map((r) => r.version))}.`,
9427
- remedy: "Pass `--runtime` (or set ios.runtime) a version printed above (\"26.5\") or a runtime's full name (\"iOS 26.5\"); nothing else matches. Install more runtimes through Xcode."
9474
+ remedy: /^(?:iOS )?\d+\.\d+(?:\.\d+)?$/.test(requested) ? `Retry with --runtime "${requested}" --install-runtime on the local or named Mac, or run \`xcodebuild -downloadPlatform iOS -buildVersion ${requested.replace(/^iOS /, "")} -architectureVariant ${process.arch === "arm64" ? "arm64" : "universal"}\` on the simulator Mac. Xcode Settings > Components lists available versions.` : "Pass --runtime (or set ios.runtime) an installed version or full name printed above. To install another exact version, pass --runtime <major.minor[.patch]> --install-runtime on the local or named Mac."
9428
9475
  };
9429
9476
  }
9430
9477
  function creatableIosDeviceTypeNames(runtimes, runtime) {
@@ -9456,4 +9503,4 @@ function unknownAndroidDeviceProfileRefusal(requested, profiles) {
9456
9503
  };
9457
9504
  }
9458
9505
  //#endregion
9459
- export { levelStillShort as $, providerFromConfig as $n, remoteAndroidDeps as $t, budgetLine as A, installAndroidApp as An, sizeCaches as Ar, deleteParkedAvds as At, stopOwnedMetro as B, readRemoteSimulatorArch as Bn, unverifiedDeviceCommand as Bt, CCACHE_UNAVAILABLE as C, androidDevClientUrl as Cn, scopedMemoryReport as Cr, waitForGradleExit as Ct, readCcacheActivity as D, deviceShellArg as Dn, readFootprints as Dr, collectDeviceLeases as Dt, projectCmakeLauncher as E, devClientUrl as En, attributeMachineUsage as Er, DEVICE_LIST_TIMEOUT_MS$1 as Et, peekBudget as F, launchAndroidReleaseApp as Fn, deviceSweepIsScoped as Ft, devServerStopRecord as G, RESOLVE_TIMEOUT_MS as Gn, withRemoteSessionGcLocks as Gt, describeDevServerStop as H, exitAfterFlush as Hn, collectEasSessionSweep as Ht, readVolumeSpace as I, launchIosApp as In, eraseParkedDevices as It, requestDevServerStop as J, checkEasAuth as Jn, bundleEntryPoint as Jt, logVanishedSupervisor as K, UPLOAD_TIMEOUT_MS as Kn, REMOTE_SESSION_ERROR as Kt, readVolumeSpaceAsync as L, restartedAppNote as Ln, findOrphanedDevices as Lt, enforceBudget as M, installIosApp as Mn, deleteProjectDevices as Mt, inspectBudget as N, iosAppProcess as Nn, describeParkedSims as Nt, resolveCcache as O, ensureMetroReverse as On, discoverCaches as Or, collectParkedAvds as Ot, machineNumber as P, launchAndroidApp as Pn, describeUnverifiableDevices as Pt, levelFloors as Q, ownerFromConfig as Qn, readInstalledEasCliVersionAsync as Qt, resolveBudget as R, reverseMetroPorts as Rn, findStaleDeviceRecords as Rt, CCACHE_NOT_RUN as S, androidAppProcess as Sn, reclaimMemory as Sr, includesGradleVersions as St, ccacheInstallCommand as T, clearOtherUserApps as Tn, phase as Tr, collectInventory as Tt, describeMetroLastStop as U, processContext as Un, deleteEasSessions as Ut, stopOwnedMetroForReset as V, gateMetroOrigin as Vn, withAndroidAvdSizes as Vt, devServerStopLevel as W, runProcessOperation as Wn, describeError as Wt, withdrawDevServerStopRequest as X, isEasAuthFailureText as Xn, ensureMetroReachable as Xt, vanishedSupervisorMessage as Y, easAuthNote as Yn, endRecordedSession as Yt, diskPressureLevel as Z, loadProjectProvider as Zn, ensureRemoteBootOwned as Zt, withDeviceBootAdmission as _, APP_READINESS_TIMEOUT_MS as _n, memoryCacheKind as _r, collectGradleVersions as _t, countLiveOwnedDevicesAsync as a, LAUNCH_UNVERIFIED as an, remoteCliInvocation as ar, maintenanceLogger as at, shutDownIdleDevices as b, INSTALL_ERROR as bn, memorySweepIsScoped as br, gradleVersionLines as bt, deviceSlotUsages as c, VERIFY_TIMEOUT_MS as cn, MIN_EAS_CLI_SIMULATOR_VERSION as cr, includesParkedDevices as ct, peekDeviceSlots as d, readMetroRecords as dn, ownedSessionName as dr, isWorkspacesScope as dt, remoteIosDeps as en, readProjectConfig as er, lowestFree as et, runtimeMismatch as f, unattributedLaunchLines as fn, parseArchiveSelector as fr, planCacheEmptying as ft, unknownIosRuntimeRefusal as g, verifyReleaseLaunch as gn, inspectWatchmanMemory as gr, trimCaches as gt, unknownIosDeviceTypeRefusal as h, verifyLaunch as hn, collectMemoryReport as hr, selectsBeyondCaches as ht, countLiveOwnedDevices as i, LAUNCH_FATAL as in, bundleInvocation as ir, openGcLog as it, cacheLabel as j, installConflictKind as jn, deleteParkedSims as jt, budgetGate as k, hasMetroReverse as kn, pruneCache as kr, collectParkedSims as kt, deviceTypeMismatch as l, isBundleProof as ln, easCliSupport as lr, includesRecordings as lt, unknownAndroidSystemImageRefusal as m, verifyAndroidReleaseLaunch as mn, WATCHMAN_KIND as mr, selectCaches as mt, DeviceAdmissionRefusal as n, withEasProjectLock as nn, resolveRemote as nr, gcOptionsOf as nt, countLiveOwnedDevicesByPlatform as o, MANIFEST_VERIFY_TIMEOUT_MS as on, remoteCommand as or, emptyCaches as ot, unknownAndroidDeviceProfileRefusal as p, unverifiedLaunchLines as pn, GRADLE_DAEMONS_KIND as pr, previewScopedEmptying as pt, metroLastStop as q, cacheLevel as qn, binOnPath as qt, checkDeviceCapacity as r, LAUNCH_BUNDLING as rn, uploadRemote as rr, maintenanceItem as rt, countLiveOwnedDevicesFrom as s, RELEASE_VERIFY_WAIT_MS as sn, MIN_EAS_CLI_DEVICE_VERSION as sr, includesArchives as st, DEFAULT_DEVICE_SLOT_WAIT_MS as t, resolveRemoteContext as tn, resolveEasCliBin as tr, protectWindowMs as tt, layerNote as u, readCollectorRecords as un, easCliUpgradeRemedy as ur, includesWorkspaceOutputs as ut, clearDeviceIdleShutdown as v, ADB_INSTALL_TIMEOUT_MS as vn, memoryLines as vr, deleteGradleVersion as vt, ccacheActivityLine as w, appProcessFromPid as wn, stopIdleGradleDaemons as wr, getMachineCacheReport as wt, writeIdleShutdownEvent as x, IOS_DEV_MENU_OFF_DEFAULTS_PLIST as xn, memoryWorkPending as xr, gradleVersionsPending as xt, dueIdleDevices as y, DEFAULT_METRO_PORT as yn, memoryScope as yr, deleteGradleVersions as yt, trimmableCaches as z, writeDebugHttpHost as zn, findStaleProjectDevices as zt };
9506
+ export { levelStillShort as $, isEasAuthFailureText as $n, ensureMetroReachable as $t, budgetLine as A, deviceShellArg as An, readFootprints as Ar, collectParkedSims as At, stopOwnedMetro as B, restartedAppNote as Bn, findOrphanedDevices as Bt, CCACHE_UNAVAILABLE as C, INSTALL_ERROR as Cn, memorySweepIsScoped as Cr, includesGradleVersions as Ct, readCcacheActivity as D, appProcessFromPid as Dn, stopIdleGradleDaemons as Dr, DEVICE_LIST_TIMEOUT_MS$1 as Dt, projectCmakeLauncher as E, androidDevClientUrl as En, scopedMemoryReport as Er, collectInventory as Et, peekBudget as F, installIosApp as Fn, describeParkedSims as Ft, devServerStopRecord as G, exitAfterFlush as Gn, collectEasSessionSweep as Gt, describeDevServerStop as H, writeDebugHttpHost as Hn, findStaleProjectDevices as Ht, readVolumeSpace as I, iosAppProcess as In, describeUnverifiableDevices as It, requestDevServerStop as J, RESOLVE_TIMEOUT_MS as Jn, withRemoteSessionGcLocks as Jt, logVanishedSupervisor as K, processContext as Kn, deleteEasSessions as Kt, readVolumeSpaceAsync as L, launchAndroidApp as Ln, deviceSweepIsScoped as Lt, enforceBudget as M, hasMetroReverse as Mn, pruneCache as Mr, deleteParkedSims as Mt, inspectBudget as N, installAndroidApp as Nn, sizeCaches as Nr, deleteProjectDevices as Nt, resolveCcache as O, clearOtherUserApps as On, phase as Or, collectDeviceLeases as Ot, machineNumber as P, installConflictKind as Pn, describeDeadProjectDevices as Pt, levelFloors as Q, easAuthNote as Qn, endRecordedSession as Qt, resolveBudget as R, launchAndroidReleaseApp as Rn, eraseParkedDevices as Rt, CCACHE_NOT_RUN as S, DEFAULT_METRO_PORT as Sn, memoryScope as Sr, gradleVersionsPending as St, ccacheInstallCommand as T, androidAppProcess as Tn, reclaimMemory as Tr, getMachineCacheReport as Tt, describeMetroLastStop as U, readRemoteSimulatorArch as Un, unverifiedDeviceCommand as Ut, stopOwnedMetroForReset as V, reverseMetroPorts as Vn, findStaleDeviceRecords as Vt, devServerStopLevel as W, gateMetroOrigin as Wn, withAndroidAvdSizes as Wt, withdrawDevServerStopRequest as X, cacheLevel as Xn, binOnPath as Xt, vanishedSupervisorMessage as Y, UPLOAD_TIMEOUT_MS as Yn, REMOTE_SESSION_ERROR as Yt, diskPressureLevel as Z, checkEasAuth as Zn, bundleEntryPoint as Zt, withDeviceBootAdmission as _, verifyAndroidReleaseLaunch as _n, WATCHMAN_KIND as _r, trimCaches as _t, countLiveOwnedDevicesAsync as a, withEasProjectLock as an, resolveRemote as ar, maintenanceLogger as at, shutDownIdleDevices as b, APP_READINESS_TIMEOUT_MS as bn, memoryCacheKind as br, deleteGradleVersions as bt, deviceSlotUsages as c, LAUNCH_UNVERIFIED as cn, remoteCliInvocation as cr, includesParkedDevices as ct, peekDeviceSlots as d, VERIFY_TIMEOUT_MS as dn, MIN_EAS_CLI_SIMULATOR_VERSION as dr, isWorkspacesScope as dt, ensureRemoteBootOwned as en, loadProjectProvider as er, lowestFree as et, runtimeMismatch as f, isBundleProof as fn, easCliSupport as fr, markOverCapCompilationCache as ft, unknownIosRuntimeRefusal as g, unverifiedLaunchLines as gn, GRADLE_DAEMONS_KIND as gr, selectsBeyondCaches as gt, unknownIosDeviceTypeRefusal as h, unattributedLaunchLines as hn, parseArchiveSelector as hr, selectCaches as ht, countLiveOwnedDevices as i, resolveRemoteContext as in, resolveEasCliBin as ir, openGcLog as it, cacheLabel as j, ensureMetroReverse as jn, discoverCaches as jr, deleteParkedAvds as jt, budgetGate as k, devClientUrl as kn, attributeMachineUsage as kr, collectParkedAvds as kt, deviceTypeMismatch as l, MANIFEST_VERIFY_TIMEOUT_MS as ln, remoteCommand as lr, includesRecordings as lt, unknownAndroidSystemImageRefusal as m, readMetroRecords as mn, ownedSessionName as mr, previewScopedEmptying as mt, DeviceAdmissionRefusal as n, remoteAndroidDeps as nn, providerFromConfig as nr, gcOptionsOf as nt, countLiveOwnedDevicesByPlatform as o, LAUNCH_BUNDLING as on, uploadRemote as or, emptyCaches as ot, unknownAndroidDeviceProfileRefusal as p, readCollectorRecords as pn, easCliUpgradeRemedy as pr, planCacheEmptying as pt, metroLastStop as q, runProcessOperation as qn, describeError as qt, checkDeviceCapacity as r, remoteIosDeps as rn, readProjectConfig as rr, maintenanceItem as rt, countLiveOwnedDevicesFrom as s, LAUNCH_FATAL as sn, bundleInvocation as sr, includesArchives as st, DEFAULT_DEVICE_SLOT_WAIT_MS as t, readInstalledEasCliVersionAsync as tn, ownerFromConfig as tr, protectWindowMs as tt, layerNote as u, RELEASE_VERIFY_WAIT_MS as un, MIN_EAS_CLI_DEVICE_VERSION as ur, includesWorkspaceOutputs as ut, clearDeviceIdleShutdown as v, verifyLaunch as vn, collectMemoryReport as vr, collectGradleVersions as vt, ccacheActivityLine as w, IOS_DEV_MENU_OFF_DEFAULTS_PLIST as wn, memoryWorkPending as wr, waitForGradleExit as wt, writeIdleShutdownEvent as x, ADB_INSTALL_TIMEOUT_MS as xn, memoryLines as xr, gradleVersionLines as xt, dueIdleDevices as y, verifyReleaseLaunch as yn, inspectWatchmanMemory as yr, deleteGradleVersion as yt, trimmableCaches as z, launchIosApp as zn, findDeadProjectOwnedDevices as zt };
@@ -1,21 +1,22 @@
1
- import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { _ as ensureWorkspaceStorage, d as writeWorkspaceState } from "./workspace-state-BhwAJBgA.mjs";
3
- import { A as withConfigLockAsync$1, c as ensureConfig, v as loadConfig$1 } from "./config-BA3TgoIP.mjs";
4
- import { i as macosProcess, o as requiredMacosRecord } from "./state-B4B5P4LU.mjs";
5
- import { A as getAvdNameForSerialAsync, F as listAvdDeviceProfiles, G as ownedAvdName, J as ownedAvdSystemImage, P as listAdbDevicesAsync, Q as pickDefaultSystemImage, R as listAvdsAsync, S as createOwnedAvd, Tt as forgetCreatedDeviceAsync, a as androidDeviceAbi, b as bootAndroidEmulator, d as androidToolPath, f as assertOwnedAvdStopped, g as avdPathExists, it as resolveOwnedAvdSerialAsync, j as hostSystemImageArch, rt as resetAdoptedAvd, t as DEFAULT_AVD_DEVICE_PROFILE, ut as waitForBoot, y as avdStorageRoots, z as listInstalledSystemImages } from "./android-SJx1V3R3.mjs";
6
- import { a as parsePidof, i as parseLogcatLine, t as androidClockOffset } from "./android-5wkcMFDG.mjs";
1
+ import { t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { _ as ensureWorkspaceStorage, d as writeWorkspaceState } from "./workspace-state-CHEN_xzy.mjs";
3
+ import { A as withConfigLockAsync$1, c as ensureConfig, v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
4
+ import { i as macosProcess, o as requiredMacosRecord } from "./state-45P8Kd6Z.mjs";
5
+ import { A as getAvdNameForSerialAsync, F as listAvdDeviceProfiles, G as ownedAvdName, J as ownedAvdSystemImage, P as listAdbDevicesAsync, Q as pickDefaultSystemImage, R as listAvdsAsync, S as createOwnedAvd, Tt as forgetCreatedDeviceAsync, a as androidDeviceAbi, b as bootAndroidEmulator, d as androidToolPath, f as assertOwnedAvdStopped, g as avdPathExists, it as resolveOwnedAvdSerialAsync, j as hostSystemImageArch, rt as resetAdoptedAvd, t as DEFAULT_AVD_DEVICE_PROFILE, ut as waitForBoot, y as avdStorageRoots, z as listInstalledSystemImages } from "./android-27_JgJ1T.mjs";
6
+ import { a as parsePidof, i as parseLogcatLine, t as androidClockOffset } from "./android-DGLG_VQ3.mjs";
7
7
  import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
8
- import { An as installAndroidApp, Fn as launchAndroidReleaseApp, In as launchIosApp, Mn as installIosApp, Nn as iosAppProcess, Pn as launchAndroidApp, Rn as reverseMetroPorts, Sn as androidAppProcess, o as countLiveOwnedDevicesByPlatform, zn as writeDebugHttpHost } from "./device-capacity-CpAVcKgq.mjs";
9
- import { ht as teardownOwnedIosSim, pt as teardownOwnedAvd } from "./workspaces-Dh5N70qW.mjs";
10
- import { E as resolveIosCreation, R as readHostMemoryPressure, T as resetIosPrivacy, a as createOwnedIosSim, d as listAllIosSims, g as listUserApps, j as uninstallIosApp, n as bootIosSim, w as resetIosKeychain } from "./ios-BhfpRfNf.mjs";
11
- import { E as muteBootedSimulator } from "./support-BJbXovoO.mjs";
12
- import { i as stopMacosAppHeld, n as stopHostedBundleInstances } from "./stop-BEBBruvD.mjs";
8
+ import { Fn as installIosApp, Hn as writeDebugHttpHost, In as iosAppProcess, Ln as launchAndroidApp, Nn as installAndroidApp, Rn as launchAndroidReleaseApp, Tn as androidAppProcess, Vn as reverseMetroPorts, o as countLiveOwnedDevicesByPlatform, zn as launchIosApp } from "./device-capacity-D_IlxZRL.mjs";
9
+ import { gt as teardownOwnedIosSim, mt as teardownOwnedAvd } from "./workspaces-BgAYIccE.mjs";
10
+ import { E as resolveIosCreation, R as readHostMemoryPressure, T as resetIosPrivacy, a as createOwnedIosSim, d as listAllIosSims, g as listUserApps, j as uninstallIosApp, n as bootIosSim, w as resetIosKeychain } from "./ios-DQEzde6f.mjs";
11
+ import { E as muteBootedSimulator } from "./support-BeVRaMWT.mjs";
12
+ import { i as stopMacosAppHeld, n as stopHostedBundleInstances } from "./stop-DrxHVVX9.mjs";
13
13
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
14
- import { a as systemImageInstallProblem, n as decideSystemImage, r as ensureSystemImage, t as androidImageInstallPolicy } from "./android-image-BZ57YL6R.mjs";
15
- import { _ as findAapt } from "./support-Vckdzrmk.mjs";
16
- import { i as muteBootedEmulator } from "./device-android-BB9Lugr8.mjs";
17
- import { t as waitForMacosRegistration } from "./registration-DKjJGQ6p.mjs";
18
- import { n as parseLogStreamLine } from "./ios-Qam0bT9n.mjs";
14
+ import { a as systemImageInstallProblem, n as decideSystemImage, r as ensureSystemImage, t as androidImageInstallPolicy } from "./android-image-BcUD6bPi.mjs";
15
+ import { _ as findAapt } from "./support-DBKG3Yyb.mjs";
16
+ import { i as muteBootedEmulator } from "./device-android-CSlBXuh_.mjs";
17
+ import { t as ensureIosRuntime } from "./ios-runtime-DLiKoOkd.mjs";
18
+ import { t as waitForMacosRegistration } from "./registration-C-3PDR3X.mjs";
19
+ import { n as parseLogStreamLine } from "./ios-2Qr4_Zu2.mjs";
19
20
  import { createHash, randomUUID } from "node:crypto";
20
21
  import { chmodSync, closeSync, copyFileSync, createReadStream, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statfsSync, symlinkSync, writeFileSync } from "node:fs";
21
22
  import { availableParallelism, freemem, homedir, loadavg } from "node:os";
@@ -1225,6 +1226,7 @@ async function main() {
1225
1226
  "stop",
1226
1227
  "install",
1227
1228
  "offer",
1229
+ "runtime",
1228
1230
  "count",
1229
1231
  "image",
1230
1232
  "logs",
@@ -1238,6 +1240,16 @@ async function main() {
1238
1240
  if (!Array.isArray(input.exclude) || input.exclude.some((device) => !isJsonObject(device) || device.platform !== "ios" && device.platform !== "android" || device.key !== void 0 && typeof device.key !== "string")) throw new Error("Invalid hosted device exclusions.");
1239
1241
  exclude = input.exclude;
1240
1242
  }
1243
+ if (input.mode === "runtime") {
1244
+ if (typeof input.runtime !== "string" || !/^(?:iOS )?\d+\.\d+(?:\.\d+)?$/.test(input.runtime)) throw new Error("Invalid iOS runtime version.");
1245
+ const result = await ensureIosRuntime({
1246
+ requested: input.runtime,
1247
+ workerProcessGroup: true,
1248
+ note: () => {}
1249
+ });
1250
+ process.stdout.write(`${JSON.stringify(result)}\n`);
1251
+ return;
1252
+ }
1241
1253
  if (input.mode === "count") {
1242
1254
  process.stdout.write(`${JSON.stringify(countLiveOwnedDevicesByPlatform({}, { exclude }))}\n`);
1243
1255
  return;
@@ -1,6 +1,6 @@
1
- import { ft as deviceSlotKey } from "./config-BA3TgoIP.mjs";
2
- import { A as selectPoolDevice, S as parseLease, b as leaseIsExpired, v as deviceLeasePath, y as fileLeaseIo } from "./activity-BpdDvA8Q.mjs";
3
- import { B as DEVICE_BUSY, H as DEVICE_WAIT_POLL_MS, W as leaseExpiryText } from "./support-BJbXovoO.mjs";
1
+ import { ft as deviceSlotKey } from "./config-CNmN-ndb.mjs";
2
+ import { A as selectPoolDevice, S as parseLease, b as leaseIsExpired, v as deviceLeasePath, y as fileLeaseIo } from "./activity-CANftndU.mjs";
3
+ import { B as DEVICE_BUSY, H as DEVICE_WAIT_POLL_MS, W as leaseExpiryText } from "./support-BeVRaMWT.mjs";
4
4
  //#region src/engine/device-pool.ts
5
5
  function heldPoolId(root, platform, now, io = fileLeaseIo, slot = "default") {
6
6
  const record = io.readHolder(root)[deviceSlotKey(platform, slot)];
@@ -1,14 +1,14 @@
1
- import { C as operationState, t as getExecutor } from "./exec-CGuDzt40.mjs";
1
+ import { C as operationState, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
2
  import { t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
- import { v as loadConfig$1 } from "./config-BA3TgoIP.mjs";
4
- import { X as resolveProjectSettings, Y as resolveIosProjectDir, an as makeTemporaryDirectory, it as settingValueAt, on as removeTemporaryEntry } from "./settings-Bap-qjnp.mjs";
5
- import { f as projectRegistry, g as selectNativeXcodeProject, i as findProjectRoot$1, p as NativeXcodeError, t as NO_PROJECT_REFUSAL } from "./project-Clk1JAWL.mjs";
6
- import { U as resolveScheme, nt as parsePlist, q as xcodebuildArgs, rt as parseProvisioningProfilePlist } from "./toolchain-DCnWAxQL.mjs";
7
- import { m as resolveConfiguration, y as resolveSchemeSelection } from "./support-BJbXovoO.mjs";
8
- import { a as discoverXcodeProject } from "./react-native-build-CJega_NM.mjs";
9
- import { n as findSigningIdentities, t as decodeProvisioningProfile } from "./ios-signing-BcH88ecn.mjs";
10
- import { f as resolveIosPhysicalDevice, l as listIosDevices } from "./ios-device-vhYL1N--.mjs";
11
- import { i as nativeXcodePackages, t as nativeXcodeHasPackages } from "./native-xcode-inputs-BWFTw5cJ.mjs";
3
+ import { v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
4
+ import { X as resolveProjectSettings, Y as resolveIosProjectDir, an as makeTemporaryDirectory, it as settingValueAt, on as removeTemporaryEntry } from "./settings-Cz8kQJzr.mjs";
5
+ import { f as projectRegistry, g as selectNativeXcodeProject, i as findProjectRoot$1, p as NativeXcodeError, t as NO_PROJECT_REFUSAL } from "./project-DIo71tGq.mjs";
6
+ import { $ as parsePlist, B as resolveScheme, W as xcodebuildArgs, et as parseProvisioningProfilePlist } from "./toolchain-CZvtCZ-m.mjs";
7
+ import { m as resolveConfiguration, y as resolveSchemeSelection } from "./support-BeVRaMWT.mjs";
8
+ import { a as discoverXcodeProject } from "./react-native-build-CFYTYmG4.mjs";
9
+ import { n as findSigningIdentities, t as decodeProvisioningProfile } from "./ios-signing-rWR_Mu5Z.mjs";
10
+ import { f as resolveIosPhysicalDevice, l as listIosDevices } from "./ios-device-BLm1BZB4.mjs";
11
+ import { i as nativeXcodePackages, t as nativeXcodeHasPackages } from "./native-xcode-inputs-BHvnAq4o.mjs";
12
12
  import { existsSync, readdirSync, realpathSync, statSync } from "node:fs";
13
13
  import { homedir } from "node:os";
14
14
  import { join } from "node:path";
@@ -1,14 +1,14 @@
1
- import { pt as deviceSlotPlatforms } from "./config-BA3TgoIP.mjs";
2
- import { s as ownedDeviceLabel } from "./project-Clk1JAWL.mjs";
3
- import { x as configureNewOwnedAvd } from "./android-SJx1V3R3.mjs";
4
- import { c as pidExists } from "./metro-DM3yJL1M.mjs";
5
- import { v as clearDeviceIdleShutdown } from "./device-capacity-CpAVcKgq.mjs";
6
- import { pt as teardownOwnedAvd } from "./workspaces-Dh5N70qW.mjs";
7
- import { h as tailLines } from "./activity-BpdDvA8Q.mjs";
8
- import "./ios-BhfpRfNf.mjs";
9
- import { T as ensureOwnedIosDevice, w as ensureIosBooted } from "./support-BJbXovoO.mjs";
10
- import { t as reconcileSimSlim } from "./simslim-DlBvwgeF.mjs";
11
- import { n as ensureAndroidBooted, r as ensureOwnedAndroidDevice, t as ANDROID_BOOT_TIMEOUT_MS } from "./device-android-BB9Lugr8.mjs";
1
+ import { pt as deviceSlotPlatforms } from "./config-CNmN-ndb.mjs";
2
+ import { s as ownedDeviceLabel } from "./project-DIo71tGq.mjs";
3
+ import { x as configureNewOwnedAvd } from "./android-27_JgJ1T.mjs";
4
+ import { c as pidExists } from "./metro-Cj6W4qOO.mjs";
5
+ import { v as clearDeviceIdleShutdown } from "./device-capacity-D_IlxZRL.mjs";
6
+ import { mt as teardownOwnedAvd } from "./workspaces-BgAYIccE.mjs";
7
+ import { h as tailLines } from "./activity-CANftndU.mjs";
8
+ import "./ios-DQEzde6f.mjs";
9
+ import { T as ensureOwnedIosDevice, w as ensureIosBooted } from "./support-BeVRaMWT.mjs";
10
+ import { t as reconcileSimSlim } from "./simslim-BMgpTRWe.mjs";
11
+ import { n as ensureAndroidBooted, r as ensureOwnedAndroidDevice, t as ANDROID_BOOT_TIMEOUT_MS } from "./device-android-CSlBXuh_.mjs";
12
12
  import { existsSync } from "node:fs";
13
13
  import { dirname, join, resolve, sep } from "node:path";
14
14
  import { rotatedLogPath } from "@stim-cli/core";
@@ -1,2 +1,2 @@
1
- import { a as readDoctorReport, i as parseDoctorPlatform, n as doctorCommand, o as shadowedStimFinding, r as doctorSuccessLines, s as toolchainReport, t as applySandboxFix } from "./doctor-DV639Iw_.mjs";
1
+ import { a as readDoctorReport, i as parseDoctorPlatform, n as doctorCommand, o as shadowedStimFinding, r as doctorSuccessLines, s as toolchainReport, t as applySandboxFix } from "./doctor-BQ1Kl44s.mjs";
2
2
  export { applySandboxFix, doctorCommand as default, doctorSuccessLines, parseDoctorPlatform, readDoctorReport, shadowedStimFinding, toolchainReport };
@@ -1,18 +1,18 @@
1
- import { f as refuseNoProject, l as phaseLine } from "./command-output-T3cDctRE.mjs";
2
- import { R as doctorIo, V as keyConfirmer, m as getProject, v as loadConfig$1 } from "./config-BA3TgoIP.mjs";
3
- import { Bt as repoRoot, q as resolveAndroidLayout, z as projectSettingsContextAsync } from "./settings-Bap-qjnp.mjs";
4
- import { f as projectRegistry, t as NO_PROJECT_REFUSAL } from "./project-Clk1JAWL.mjs";
5
- import { A as budgetLine, N as inspectBudget, br as memorySweepIsScoped, gr as inspectWatchmanMemory } from "./device-capacity-CpAVcKgq.mjs";
6
- import { c as inspectStimVersions, s as compareStimVersions } from "./eas-session-ledger-CXZ4aix0.mjs";
7
- import { L as detectXcodeMajorAsync } from "./toolchain-DCnWAxQL.mjs";
8
- import { H as memoryCulpritFindings, U as readMemoryCulpritsAsync, f as listAllIosSimsAsync, h as listIosRuntimesAsync, l as iosRuntimeMatches, x as pickDefaultIosCreation } from "./ios-BhfpRfNf.mjs";
9
- import { s as offloadCheck } from "./client-KSWIeQLA.mjs";
10
- import { $ as inspectBuildMachines, at as inspectDeviceHostMachines, h as resolveDeviceType, nt as configuredMachines, v as resolveRuntime } from "./support-BJbXovoO.mjs";
11
- import { r as maintenanceStatus, t as maintenanceLine } from "./status-CQWmNl1f.mjs";
12
- import { a as writeIgnoreDirs, c as recordDoctorRun, i as watchedCheckouts, n as inspectNestedWorktrees, r as nestedWorktreeFinding } from "./doctor-watchman-TZxYt_98.mjs";
13
- import { l as checkWorktreeStorageLayout, s as runDoctor, t as androidImageDecision, u as readMachineSettings } from "./doctor-CYZ45LnX.mjs";
14
- import { i as installSystemImage } from "./android-image-BZ57YL6R.mjs";
15
- import { t as confirmInTerminal } from "./device-provision-CxQDCtrc.mjs";
1
+ import { f as refuseNoProject, l as phaseLine } from "./command-output-DsjhOzJ3.mjs";
2
+ import { R as doctorIo, V as keyConfirmer, m as getProject, v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
3
+ import { Bt as repoRoot, q as resolveAndroidLayout, z as projectSettingsContextAsync } from "./settings-Cz8kQJzr.mjs";
4
+ import { f as projectRegistry, t as NO_PROJECT_REFUSAL } from "./project-DIo71tGq.mjs";
5
+ import { A as budgetLine, Cr as memorySweepIsScoped, N as inspectBudget, yr as inspectWatchmanMemory } from "./device-capacity-D_IlxZRL.mjs";
6
+ import { c as inspectStimVersions, s as compareStimVersions } from "./eas-session-ledger-BDpSdFDM.mjs";
7
+ import { P as detectXcodeMajorAsync } from "./toolchain-CZvtCZ-m.mjs";
8
+ import { H as memoryCulpritFindings, U as readMemoryCulpritsAsync, f as listAllIosSimsAsync, h as listIosRuntimesAsync, l as iosRuntimeMatches, x as pickDefaultIosCreation } from "./ios-DQEzde6f.mjs";
9
+ import { s as offloadCheck } from "./client-qwmHFSga.mjs";
10
+ import { $ as inspectBuildMachines, at as inspectDeviceHostMachines, h as resolveDeviceType, nt as configuredMachines, v as resolveRuntime } from "./support-BeVRaMWT.mjs";
11
+ import { r as maintenanceStatus, t as maintenanceLine } from "./status-C2PdxK6q.mjs";
12
+ import { a as writeIgnoreDirs, c as recordDoctorRun, i as watchedCheckouts, n as inspectNestedWorktrees, r as nestedWorktreeFinding } from "./doctor-watchman-B8e3s9ko.mjs";
13
+ import { l as checkWorktreeStorageLayout, s as runDoctor, t as androidImageDecision, u as readMachineSettings } from "./doctor-QNzDE4aW.mjs";
14
+ import { i as installSystemImage } from "./android-image-BcUD6bPi.mjs";
15
+ import { t as confirmInTerminal } from "./device-provision-C9NPdCne.mjs";
16
16
  import { isJsonObject, maintenanceNdjsonFile, readHostedAppMetadata, readHostedSessions } from "@stim-cli/core/state";
17
17
  import { dirname, join, sep } from "path";
18
18
  import chalk from "chalk";
@@ -44,11 +44,6 @@ function expandHome(value, home) {
44
44
  if (v.startsWith("$HOME/")) return join(home, v.slice(6));
45
45
  return v;
46
46
  }
47
- /**
48
- * Whether the sandbox actually stops Stim, rather than whether a harness that
49
- * can sandbox is present: a session with its sandbox off exports the same
50
- * variables as one with it on, so only a write says which this is.
51
- */
52
47
  function sandboxBlocksStimHome(stimHome, home = homedir()) {
53
48
  const dir = expandHome(stimHome, home);
54
49
  const probe = join(dir, `.probe-${process.pid}-${Math.random().toString(36).slice(2)}`);
@@ -150,7 +145,6 @@ function unmergeableKey(settings) {
150
145
  if ("network" in sandbox && !isPlainObject(sandbox.network)) return "sandbox.network";
151
146
  return null;
152
147
  }
153
- /** Merge the allowance into a settings object, leaving everything else as it is. */
154
148
  function withAllowance(settings, allowance) {
155
149
  const next = { ...settings };
156
150
  const sandbox = isPlainObject(next.sandbox) ? { ...next.sandbox } : {};
@@ -1,28 +1,28 @@
1
- import { a as trackReportResource, r as reportSignal, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { T as workspaceDerivedData, r as readWorkspaceState$1, y as sharedBuildCache } from "./workspace-state-BhwAJBgA.mjs";
3
- import { d as quotedPath, u as plural } from "./command-output-T3cDctRE.mjs";
4
- import { K as realIo, p as getPlatformDeviceLimits, s as configCorruptRepair, u as getConcurrencyLimits, v as loadConfig$1 } from "./config-BA3TgoIP.mjs";
5
- import { l as gitQuietAsync, o as git } from "./operation-exec-DKlBcKAL.mjs";
6
- import { Bt as repoRoot, D as iosSimSlimProfileSetting, E as iosSimSlimDefaultSetting, G as remoteIosSetting, Nt as locallyKnownUpstreamAsync, Q as resolveSettings, R as projectSettingsContext, St as gitCommonDirAsync, U as remoteAndroidSetting, V as readCommittedSettings, Vt as repoRootAsync, Wt as resolveSourceCheckoutAsync, Y as resolveIosProjectDir, a as SETTING_SHAPE_REMEDY, an as makeTemporaryDirectory, at as settingsLayers, cn as temporaryRoot, ct as webSettings, i as SETTINGS_WITH_RESOLVE_TIME_FALLBACK, in as filesystemDevice, it as settingValueAt, jt as listWorktreesAsync, k as mergeSettingsLayers, m as defaultAndroidLayout, q as resolveAndroidLayout, r as PATH_SETTINGS, rt as settingShapeErrors, st as unknownSettingKeys, tt as settingOrigin, yt as dirtyFingerprintFiles } from "./settings-Bap-qjnp.mjs";
7
- import { C as resolvePackageJson, _ as appProjectProblem, b as isPackageResolvable, v as detectIsExpo } from "./project-Clk1JAWL.mjs";
8
- import { bt as parkedMaxSetting, j as hostSystemImageArch, mt as POOL_SETTING_REMEDY, o as androidHome, z as listInstalledSystemImages } from "./android-SJx1V3R3.mjs";
9
- import { $n as providerFromConfig, E as projectCmakeLauncher, Jn as checkEasAuth$1, Qn as ownerFromConfig, Qt as readInstalledEasCliVersionAsync, T as ccacheInstallCommand, a as countLiveOwnedDevicesAsync, cr as MIN_EAS_CLI_SIMULATOR_VERSION, i as countLiveOwnedDevices, lr as easCliSupport, tr as resolveEasCliBin, ur as easCliUpgradeRemedy } from "./device-capacity-CpAVcKgq.mjs";
10
- import { wt as listBuildSlots } from "./workspaces-Dh5N70qW.mjs";
11
- import { X as podInstallCommand } from "./toolchain-DCnWAxQL.mjs";
12
- import { N as listBuildLocks } from "./activity-BpdDvA8Q.mjs";
13
- import { g as fingerprintProject, s as diffFingerprintSources } from "./build-cache-BW8T4oD2.mjs";
14
- import { F as hostMemoryPressureAdvice, z as readHostMemoryPressureAsync } from "./ios-BhfpRfNf.mjs";
1
+ import { a as trackReportResource, r as reportSignal, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { T as workspaceDerivedData, r as readWorkspaceState$1, y as sharedBuildCache } from "./workspace-state-CHEN_xzy.mjs";
3
+ import { d as quotedPath, u as plural } from "./command-output-DsjhOzJ3.mjs";
4
+ import { K as realIo, p as getPlatformDeviceLimits, s as configCorruptRepair, u as getConcurrencyLimits, v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
5
+ import { l as gitQuietAsync, o as git } from "./operation-exec-DNynwpqO.mjs";
6
+ import { Bt as repoRoot, D as iosSimSlimProfileSetting, E as iosSimSlimDefaultSetting, G as remoteIosSetting, Nt as locallyKnownUpstreamAsync, Q as resolveSettings, R as projectSettingsContext, St as gitCommonDirAsync, U as remoteAndroidSetting, V as readCommittedSettings, Vt as repoRootAsync, Wt as resolveSourceCheckoutAsync, Y as resolveIosProjectDir, a as SETTING_SHAPE_REMEDY, an as makeTemporaryDirectory, at as settingsLayers, cn as temporaryRoot, ct as webSettings, i as SETTINGS_WITH_RESOLVE_TIME_FALLBACK, in as filesystemDevice, it as settingValueAt, jt as listWorktreesAsync, k as mergeSettingsLayers, m as defaultAndroidLayout, q as resolveAndroidLayout, r as PATH_SETTINGS, rt as settingShapeErrors, st as unknownSettingKeys, tt as settingOrigin, yt as dirtyFingerprintFiles } from "./settings-Cz8kQJzr.mjs";
7
+ import { C as resolvePackageJson, _ as appProjectProblem, b as isPackageResolvable, v as detectIsExpo } from "./project-DIo71tGq.mjs";
8
+ import { bt as parkedMaxSetting, j as hostSystemImageArch, mt as POOL_SETTING_REMEDY, o as androidHome, z as listInstalledSystemImages } from "./android-27_JgJ1T.mjs";
9
+ import { E as projectCmakeLauncher, T as ccacheInstallCommand, Zn as checkEasAuth$1, a as countLiveOwnedDevicesAsync, dr as MIN_EAS_CLI_SIMULATOR_VERSION, fr as easCliSupport, i as countLiveOwnedDevices, ir as resolveEasCliBin, nr as providerFromConfig, pr as easCliUpgradeRemedy, tn as readInstalledEasCliVersionAsync, tr as ownerFromConfig } from "./device-capacity-D_IlxZRL.mjs";
10
+ import { Tt as listBuildSlots } from "./workspaces-BgAYIccE.mjs";
11
+ import { q as podInstallCommand } from "./toolchain-CZvtCZ-m.mjs";
12
+ import { N as listBuildLocks } from "./activity-CANftndU.mjs";
13
+ import { g as fingerprintProject, s as diffFingerprintSources } from "./build-cache-CJ65Efv7.mjs";
14
+ import { F as hostMemoryPressureAdvice, z as readHostMemoryPressureAsync } from "./ios-DQEzde6f.mjs";
15
15
  import { p as resolveOptimizations, u as compilerCacheFallbackMessage } from "./errors-DHm_U5gv.mjs";
16
- import { n as hasInstalledDependencies, r as installedNpmTreeIsValidAsync, t as dependencyState } from "./dependency-state-Blfp3AkG.mjs";
17
- import { g as androidPathRoomRemedy, i as ccacheEnabled, l as androidSdkRefusal, m as androidPathRoomMessage, p as androidPathRoom, t as apkOutputsDir } from "./react-native-build-CJega_NM.mjs";
18
- import { a as envSettingRefusal, i as configSettingRefusal } from "./settings-payload-D5jjhmrw.mjs";
19
- import { t as readDoctorFingerprint } from "./doctor-fingerprint-DqWvIhMb.mjs";
20
- import { i as probeSigningIdentities } from "./ios-signing-BcH88ecn.mjs";
21
- import { a as findChrome, t as CHROME_INSTALL_REMEDY } from "./chrome-C8sC5tdl.mjs";
22
- import { n as simslimIsOnPath } from "./simslim-DlBvwgeF.mjs";
23
- import { a as systemImageInstallProblem, n as decideSystemImage, t as androidImageInstallPolicy } from "./android-image-BZ57YL6R.mjs";
24
- import { t as MIN_EAS_CLI_BUILD_DOWNLOAD_VERSION } from "./eas-build-Xf5Jd6LR.mjs";
25
- import { r as resolveAndroidCompilerCache, t as readAndroidCasToolchain } from "./android-cas-BS9_55U5.mjs";
16
+ import { n as hasInstalledDependencies, r as installedNpmTreeIsValidAsync, t as dependencyState } from "./dependency-state-CBhPJAs_.mjs";
17
+ import { g as androidPathRoomRemedy, i as ccacheEnabled, l as androidSdkRefusal, m as androidPathRoomMessage, p as androidPathRoom, t as apkOutputsDir } from "./react-native-build-CFYTYmG4.mjs";
18
+ import { a as envSettingRefusal, i as configSettingRefusal } from "./settings-payload-BOcxsZ6k.mjs";
19
+ import { t as readDoctorFingerprint } from "./doctor-fingerprint-Bo4z8YNP.mjs";
20
+ import { i as probeSigningIdentities } from "./ios-signing-rWR_Mu5Z.mjs";
21
+ import { a as findChrome, t as CHROME_INSTALL_REMEDY } from "./chrome-DL5znvmo.mjs";
22
+ import { n as simslimIsOnPath } from "./simslim-BMgpTRWe.mjs";
23
+ import { a as systemImageInstallProblem, n as decideSystemImage, t as androidImageInstallPolicy } from "./android-image-BcUD6bPi.mjs";
24
+ import { t as MIN_EAS_CLI_BUILD_DOWNLOAD_VERSION } from "./eas-build-4rg9WpEg.mjs";
25
+ import { r as resolveAndroidCompilerCache, t as readAndroidCasToolchain } from "./android-cas-BDAwwL82.mjs";
26
26
  import { existsSync, lstatSync, readFileSync, readdirSync, realpathSync, rmSync } from "node:fs";
27
27
  import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
28
28
  import { LAST_BUILD_KEYS, REPLACED_SETTINGS, isJsonObject, readBuildHistory, readJsonObject, readStats, replacementAdvice, settingDefinition } from "@stim-cli/core/state";
@@ -1,4 +1,4 @@
1
- import { t as getExecutor } from "./exec-CGuDzt40.mjs";
1
+ import { t as getExecutor } from "./exec-L37dbiIb.mjs";
2
2
  import { setPriority } from "node:os";
3
3
  import { fileURLToPath } from "node:url";
4
4
  //#region src/doctor-fingerprint.ts
@@ -1,4 +1,4 @@
1
- import { g as fingerprintProject } from "./build-cache-BW8T4oD2.mjs";
1
+ import { g as fingerprintProject } from "./build-cache-CJ65Efv7.mjs";
2
2
  import * as fingerprint from "@expo/fingerprint";
3
3
  //#region bin/doctor-fingerprint.ts
4
4
  let input = "";
@@ -1,8 +1,8 @@
1
- import { A as withConfigLockAsync$1, O as upsertProject, d as getConfigDir, m as getProject } from "./config-BA3TgoIP.mjs";
2
- import { l as gitQuietAsync } from "./operation-exec-DKlBcKAL.mjs";
3
- import { Vt as repoRootAsync, jt as listWorktreesAsync } from "./settings-Bap-qjnp.mjs";
4
- import { f as projectRegistry } from "./project-Clk1JAWL.mjs";
5
- import { d as parseWatchRoots, m as runWatchman, s as compareStimVersions } from "./eas-session-ledger-CXZ4aix0.mjs";
1
+ import { A as withConfigLockAsync$1, O as upsertProject, d as getConfigDir, m as getProject } from "./config-CNmN-ndb.mjs";
2
+ import { l as gitQuietAsync } from "./operation-exec-DNynwpqO.mjs";
3
+ import { Vt as repoRootAsync, jt as listWorktreesAsync } from "./settings-Cz8kQJzr.mjs";
4
+ import { f as projectRegistry } from "./project-DIo71tGq.mjs";
5
+ import { d as parseWatchRoots, m as runWatchman, s as compareStimVersions } from "./eas-session-ledger-BDpSdFDM.mjs";
6
6
  import { mkdirSync, readFileSync, realpathSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
7
7
  import { dirname, isAbsolute, join, relative, sep } from "node:path";
8
8
  import { isJsonObject } from "@stim-cli/core/state";