stim 1.35.0 → 1.37.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-0E_iw7Rf.mjs → acquire-artifact-zBUbPuDP.mjs} +20 -4
  3. package/dist/{act-CyxFP8Vj.mjs → act-BGAFjY8f.mjs} +21 -21
  4. package/dist/{activity-BQpJpAjA.mjs → activity-CdpXXSq2.mjs} +6 -6
  5. package/dist/{agent-device-usage-output-BoOC3ZF9.mjs → agent-device-usage-output-D0582GHy.mjs} +5 -5
  6. package/dist/{android-YRb1UzSy.mjs → android-BBwLpxRh.mjs} +51 -40
  7. package/dist/{android-B2DSKg-A.mjs → android-BPBARZMR.mjs} +2 -2
  8. package/dist/{android-Iq0M2t2d.mjs → android-CGctfYpv.mjs} +7 -7
  9. package/dist/{android-CjcJE7uA.mjs → android-CaSsewbu.mjs} +5 -5
  10. package/dist/android-cas-compiler.mjs +1 -1
  11. package/dist/{android-cas-Dhcjkys1.mjs → android-cas-p8gna03x.mjs} +4 -4
  12. package/dist/{android-image-DFk26aY6.mjs → android-image-DY8KxK2m.mjs} +3 -3
  13. package/dist/{android-project-DhO6el8N.d.mts → android-project-v_1nej_x.d.mts} +3 -1
  14. package/dist/api.d.mts +30 -9
  15. package/dist/api.mjs +36 -28
  16. package/dist/{apk-signed-tail-CPpA-3vu.mjs → apk-signed-tail-BMv-KLcB.mjs} +2 -2
  17. package/dist/{artifact-2NIRz6SC.mjs → artifact-BrNZTZtA.mjs} +44 -15
  18. package/dist/{artifact-BG4h_WTC.mjs → artifact-BsimBWxG.mjs} +37 -15
  19. package/dist/{artifact-platform-DqCWUieN.mjs → artifact-platform-BaGL1i1X.mjs} +1 -1
  20. package/dist/{auto-placement-CBdWa87P.mjs → auto-placement-CFKNrWLU.mjs} +7 -7
  21. package/dist/{browser-web-CNlRugJv.mjs → browser-web-YFsgCP_a.mjs} +15 -15
  22. package/dist/{build-CNE3Wo5-.mjs → build-DIhuoozz.mjs} +77 -28
  23. package/dist/{build-cache-_fkewiwH.mjs → build-cache-Dt-dhCJF.mjs} +6 -6
  24. package/dist/{build-plan-BSgR9yKo.mjs → build-plan-CgnLDof9.mjs} +7 -7
  25. package/dist/{cache-manifest-8JX9S1QJ.mjs → cache-manifest-BO0TIcPV.mjs} +1 -1
  26. package/dist/cache-manifest.mjs +1 -1
  27. package/dist/{cdp-C216kOAn.mjs → cdp-CgT47_9A.mjs} +1 -1
  28. package/dist/{chrome-C8sC5tdl.mjs → chrome-DL5znvmo.mjs} +1 -1
  29. package/dist/{cli-DK24VzHi.mjs → cli-BGUrlSH3.mjs} +21 -20
  30. package/dist/cli.mjs +1 -1
  31. package/dist/{client-Dy0eJJtz.mjs → client-DU6dnGX1.mjs} +7 -7
  32. package/dist/collector-run.mjs +7 -7
  33. package/dist/{command-output-CGxrQ3Bd.mjs → command-output-ByEmIwur.mjs} +1 -1
  34. package/dist/{config-BW0fAtoK.mjs → config-CNmN-ndb.mjs} +61 -12
  35. package/dist/{dependencies-IVl2Ga2D.mjs → dependencies-BozoTBqa.mjs} +102 -64
  36. package/dist/{dependency-state-mL5g4H6K.mjs → dependency-state-BQeC4FVn.mjs} +2 -2
  37. package/dist/{detached-entry-tfrgGVWb.mjs → detached-entry-VqFeEE9W.mjs} +1 -1
  38. package/dist/{dev-client-DDApoVvd.mjs → dev-client-3SQzMRXZ.mjs} +2 -2
  39. package/dist/{device-p_cp8IzW.mjs → device-BIg1iExg.mjs} +11 -11
  40. package/dist/{device-mOFYiHiw.mjs → device-DGMvzoZZ.mjs} +13 -13
  41. package/dist/{device-android-C-biM49_.mjs → device-android-CBat355q.mjs} +9 -9
  42. package/dist/{device-capacity-C0PiTyRb.mjs → device-capacity-DWUOvY13.mjs} +19 -19
  43. package/dist/device-host-worker.mjs +16 -16
  44. package/dist/{device-pool-nsMvt2X2.mjs → device-pool-B8IqZKqm.mjs} +3 -3
  45. package/dist/{device-provision-BYYJuRKZ.mjs → device-provision-DWAoSKEw.mjs} +10 -10
  46. package/dist/{doctor-RosbBfTV.mjs → doctor-Bknt0121.mjs} +24 -24
  47. package/dist/{doctor-BptE4PaK.mjs → doctor-CPzwqcXY.mjs} +15 -15
  48. package/dist/{doctor-BBAb8NLe.mjs → doctor-CxgR5vPi.mjs} +1 -1
  49. package/dist/{doctor-fingerprint-DqWvIhMb.mjs → doctor-fingerprint-Bo4z8YNP.mjs} +1 -1
  50. package/dist/doctor-fingerprint.mjs +1 -1
  51. package/dist/{doctor-watchman-CKOnCINh.mjs → doctor-watchman-CPE4C8KV.mjs} +5 -5
  52. package/dist/{eas-build-BxJdzQnF.mjs → eas-build-CwOXKJwa.mjs} +4 -4
  53. package/dist/{eas-fallback-DU2WDF8r.mjs → eas-fallback-Cnb12a50.mjs} +6 -6
  54. package/dist/{eas-session-ledger-DCUfh6m7.mjs → eas-session-ledger-TE1miVz5.mjs} +6 -6
  55. package/dist/{error-diagnostics-D6wlK-yX.mjs → error-diagnostics-CXTT3bYC.mjs} +10 -10
  56. package/dist/{exec-CGuDzt40.mjs → exec-L37dbiIb.mjs} +7 -1
  57. package/dist/{gc-BUkonUfz.mjs → gc-0jdcnDHs.mjs} +19 -19
  58. package/dist/{gc-CvMEytXz.mjs → gc-1ZLq1djg.mjs} +2 -2
  59. package/dist/{guide-BWozWG7D.mjs → guide-COxIANZu.mjs} +179 -86
  60. package/dist/{hosted-android-y6K3DKQT.mjs → hosted-android-D8JbIzgC.mjs} +4 -4
  61. package/dist/{hosted-client-Bb89P6an.mjs → hosted-client-BLwuXEZS.mjs} +7 -7
  62. package/dist/{hosted-logs-DYPsnWMF.mjs → hosted-logs-BWEQNJx_.mjs} +7 -7
  63. package/dist/{hosted-logs-sync-DfUJ2GpF.mjs → hosted-logs-sync-uWSrH2mf.mjs} +5 -5
  64. package/dist/{hosted-macos-DsEzYVY_.mjs → hosted-macos-BnCYAv1y.mjs} +6 -6
  65. package/dist/{hosted-native-C9xQYYFb.mjs → hosted-native-OBT2sJxn.mjs} +8 -8
  66. package/dist/{ios-Qam0bT9n.mjs → ios-2Qr4_Zu2.mjs} +1 -1
  67. package/dist/{ios-BCKxjpRp.mjs → ios-Bjz7aPLy.mjs} +8 -8
  68. package/dist/{ios-BdZdNsAj.mjs → ios-BveW7qK1.mjs} +16 -6
  69. package/dist/{ios-FhMkDfNC.mjs → ios-CGyx4PA7.mjs} +44 -34
  70. package/dist/{ios-device-DMOnaH5n.mjs → ios-device-ByrDWSpC.mjs} +3 -3
  71. package/dist/{ios-device-DLdEDWJj.mjs → ios-device-ygijU78G.mjs} +1 -1
  72. package/dist/{ios-project-PXBDoaii.mjs → ios-project-XHg87vyQ.mjs} +7 -7
  73. package/dist/{ios-signing-CCFNjjWU.mjs → ios-signing-CRYQ1W42.mjs} +3 -3
  74. package/dist/{ios-state-CWsBysyN.mjs → ios-state-enWc5P6U.mjs} +1 -1
  75. package/dist/{js-swap-07ikLRJJ.mjs → js-swap-C6vl3vEd.mjs} +60 -13
  76. package/dist/{launch-CTq5gBim.mjs → launch-f3RnbFW5.mjs} +48 -28
  77. package/dist/{lightened-DikgC3-S.mjs → lightened-Cdfmo8MO.mjs} +5 -5
  78. package/dist/{logs-YDMfEohb.mjs → logs-DAjxBF3c.mjs} +6 -6
  79. package/dist/{logs-DwI3Rkpf.mjs → logs-x3em2-oI.mjs} +7 -7
  80. package/dist/{macos-BoNM-l6f.mjs → macos-D_LAseN9.mjs} +22 -22
  81. package/dist/{macos-C_e9f5-5.mjs → macos-ZfpWlzBO.mjs} +1 -1
  82. package/dist/macos-run.mjs +1 -1
  83. package/dist/maintenance-run.mjs +6 -6
  84. package/dist/{metro-B5PVz0Wv.mjs → metro-TIQ1Wft-.mjs} +4 -4
  85. package/dist/{metro-request-2LmFpC1z.mjs → metro-request-DcUxyaq8.mjs} +2 -2
  86. package/dist/{named-ports-CA0nB9Yw.mjs → named-ports-BfEMi9bK.mjs} +3 -3
  87. package/dist/{native-android-Mv4YTrVN.mjs → native-android-COOrNDk2.mjs} +18 -18
  88. package/dist/{native-gradle-artifact-inputs-C_TU6wPq.mjs → native-gradle-artifact-inputs-B4Mwydmf.mjs} +5 -5
  89. package/dist/{native-runtime-oDqT4UES.mjs → native-runtime-UxUBU8up.mjs} +6 -6
  90. package/dist/{native-source-ChAGj7R1.mjs → native-source-D2ZfiQ6U.mjs} +1 -1
  91. package/dist/{native-xcode-inputs-DsozghTX.mjs → native-xcode-inputs-DUv7Q3ok.mjs} +3 -3
  92. package/dist/{native-xcode-ios-UXnH9NRY.mjs → native-xcode-ios-DXcteLVi.mjs} +18 -19
  93. package/dist/offload-worker.d.mts +1 -1
  94. package/dist/offload-worker.mjs +22 -22
  95. package/dist/{operation-exec-DKlBcKAL.mjs → operation-exec-DNynwpqO.mjs} +1 -1
  96. package/dist/{ownership-hC7xvvxF.mjs → ownership-CQTg6v1d.mjs} +3 -3
  97. package/dist/{page-Dj8IqvGM.mjs → page-CoN9al_x.mjs} +2 -2
  98. package/dist/{phone-reverses-B9WyCBKQ.mjs → phone-reverses-CHtco460.mjs} +4 -4
  99. package/dist/{placement-log-D0DZLcJk.mjs → placement-log-oQnELAvQ.mjs} +1 -1
  100. package/dist/{plan-placement-DqmLrWoX.mjs → plan-placement-45EOlIG1.mjs} +6 -6
  101. package/dist/{ports-C1_1Qgdy.mjs → ports-DKO7EUNt.mjs} +3 -3
  102. package/dist/{prebuild-BptrXmh_.mjs → prebuild-BKkj3OyL.mjs} +12 -12
  103. package/dist/{project-Dqqj3IkW.mjs → project-BCtQz48d.mjs} +16 -16
  104. package/dist/{pull-request-BpMTNkMB.mjs → pull-request-m8cMZ3aE.mjs} +2 -2
  105. package/dist/pull-requests.mjs +1 -1
  106. package/dist/{react-native-android-Bsm_o4A8.mjs → react-native-android-MI4ktuhL.mjs} +27 -31
  107. package/dist/{react-native-build-BTUcE926.mjs → react-native-build-dixAL2G8.mjs} +9 -9
  108. package/dist/{react-native-doctor-CfsCTKZt.mjs → react-native-doctor-CvkWincj.mjs} +6 -6
  109. package/dist/{react-native-ios-_cK2pjZn.mjs → react-native-ios-DF5otoBR.mjs} +17 -18
  110. package/dist/recorded-build-CGHGCO8m.mjs +76 -0
  111. package/dist/{recordings-AKZfsW2W.mjs → recordings-BcOzqFD1.mjs} +1 -1
  112. package/dist/{registration-DKjJGQ6p.mjs → registration-C-3PDR3X.mjs} +1 -1
  113. package/dist/{reload-DsTMtMDU.mjs → reload-DGWfNFwQ.mjs} +16 -16
  114. package/dist/{reload-CXgce4Yo.mjs → reload-DWxmO9dY.mjs} +1 -1
  115. package/dist/{remote-BsmYHUxH.mjs → remote-CV2jBcLv.mjs} +9 -9
  116. package/dist/remote-DWYGW2f5.mjs +158 -0
  117. package/dist/{result-DK6nTO-M.mjs → result-CWyxwPvZ.mjs} +23 -17
  118. package/dist/{run-N-BbRxnC.mjs → run-FZtMQgrx.mjs} +2 -2
  119. package/dist/{server-bare-BTlICuaX.mjs → server-bare-Ksh1NKeI.mjs} +2 -2
  120. package/dist/{server-command-Cu2w-UjB.mjs → server-command-BO2DIsJV.mjs} +5 -5
  121. package/dist/server-expo-9hQwyLze.mjs +2 -0
  122. package/dist/{server-expo-CjQwxvIi.mjs → server-expo-ZS9_WaNG.mjs} +3 -3
  123. package/dist/{settings-B5IBDfTx.mjs → settings-Ag4pbs0z.mjs} +5 -4
  124. package/dist/{settings-DcmVICCn.mjs → settings-TYrzDh8T.mjs} +2 -2
  125. package/dist/{settings-payload-BoiFMiFq.mjs → settings-payload-CUM0DYwz.mjs} +5 -5
  126. package/dist/{settings-write-B3LzEVwf.mjs → settings-write-D_9_IEx7.mjs} +6 -6
  127. package/dist/settings.schema.json +1 -1
  128. package/dist/{simslim-DKdJx0LL.mjs → simslim-BMgpTRWe.mjs} +2 -2
  129. package/dist/{slot-launch-DsQmPdlg.mjs → slot-launch-DW_29Bmu.mjs} +6 -6
  130. package/dist/{stage-Dqk0qvaI.mjs → stage-_8k8p7uq.mjs} +2 -2
  131. package/dist/{start-GkRBR1e3.mjs → start-CdgtOksb.mjs} +1 -1
  132. package/dist/{start-DIFiT2P5.mjs → start-CzBB5R7N.mjs} +12 -12
  133. package/dist/{state-CtmYTRWm.mjs → state-CfP-ccP8.mjs} +4 -4
  134. package/dist/{state-DSOUqO-o.mjs → state-DsrFh3yv.mjs} +2 -2
  135. package/dist/{stats-Dz08IopP.mjs → stats-BgTyuzib.mjs} +5 -5
  136. package/dist/{stats-report-BVRCqwWA.mjs → stats-report-Ci6TAfFm.mjs} +1 -1
  137. package/dist/{status-DhKv_e8a.mjs → status-Bcdy5eHt.mjs} +24 -24
  138. package/dist/{status-DTFhDnd1.mjs → status-C2PdxK6q.mjs} +1 -1
  139. package/dist/{status-Dost__Vn.mjs → status-C7Zzb-Eh.mjs} +1 -1
  140. package/dist/{status-watch-UecLnPQD.mjs → status-watch-DY0EZcmg.mjs} +5 -5
  141. package/dist/status-worker.mjs +1 -1
  142. package/dist/{stim-desktop-_WTria-r.mjs → stim-desktop-DWGAfaud.mjs} +2 -2
  143. package/dist/{stop-CcZISot5.mjs → stop-CbxsTKyZ.mjs} +5 -5
  144. package/dist/{stop-vRe6TQk5.mjs → stop-CkmBkNyg.mjs} +16 -16
  145. package/dist/{stop-QFOqgICJ.mjs → stop-iGkvEvDn.mjs} +2 -2
  146. package/dist/supervisor-run.mjs +15 -15
  147. package/dist/{support-DW575Dnx.mjs → support-CfYmOdQs.mjs} +76 -38
  148. package/dist/{support-CNqJDBrH.mjs → support-JZ4KRW0C.mjs} +7 -7
  149. package/dist/{swiftpm-artifact-inputs-DQTJTczX.mjs → swiftpm-artifact-inputs-C1rZDRDs.mjs} +4 -4
  150. package/dist/{swiftpm-macos-BKczZ0k9.mjs → swiftpm-macos-DRTjC7Ff.mjs} +11 -11
  151. package/dist/{toolchain-DRQyCvlp.mjs → toolchain-BeD7tbBW.mjs} +73 -9
  152. package/dist/{toolchain-BDlugtoh.mjs → toolchain-CNlKc9pH.mjs} +1 -1
  153. package/dist/trigger-Bp3lruF2.mjs +2 -0
  154. package/dist/{trigger-BtB4kbe0.mjs → trigger-G_gbfIVB.mjs} +2 -2
  155. package/dist/{warm-progress-q11Vdvhh.mjs → warm-progress-CJQ8tk5O.mjs} +6 -6
  156. package/dist/{web-TDWjHUT3.mjs → web-BXbmysa1.mjs} +9 -9
  157. package/dist/web-BcaySU05.mjs +2 -0
  158. package/dist/web-run.mjs +8 -8
  159. package/dist/windows-report.mjs +1 -1
  160. package/dist/{workspace-state-BdZ-QgmB.mjs → workspace-state-DOPXG2Gp.mjs} +3 -3
  161. package/dist/{workspaces-CY3KSdC0.mjs → workspaces-DCzDzydB.mjs} +15 -14
  162. package/dist/{worktree-D6myrQ2H.mjs → worktree-6ngObKkw.mjs} +1 -1
  163. package/dist/{worktree-fKKe8j5M.mjs → worktree-BAC43Kio.mjs} +27 -27
  164. package/package.json +7 -7
  165. package/dist/server-expo-DbSypdNl.mjs +0 -2
  166. package/dist/trigger-D8B7QR0q.mjs +0 -2
  167. package/dist/web-D1m1LKEz.mjs +0 -2
@@ -1,9 +1,9 @@
1
- import { l as cancellableSleep } from "./exec-CGuDzt40.mjs";
2
- import { l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
3
- import { a as agentAccess, i as closeAgentConnection, o as removeAgentAccess, t as pullHostedMacosLogs } from "./hosted-logs-DYPsnWMF.mjs";
4
- import { n as macosDir } from "./state-DSOUqO-o.mjs";
5
- import { _t as runCancellationSignal } from "./toolchain-DRQyCvlp.mjs";
6
- import { _ as sha256, a as RESERVE_TIMEOUT_MS, b as upload, c as bundleManifest, d as heldNoLonger, g as settle, i as PREPARE_TIMEOUT_MS, l as call, n as INSTALL_TIMEOUT_MS, o as SESSION_TIMEOUT_MS, p as hostedSession, s as attach, u as connectHost, v as stoppedSession, y as unknownSession } from "./hosted-client-Bb89P6an.mjs";
1
+ import { l as cancellableSleep } from "./exec-L37dbiIb.mjs";
2
+ import { l as phaseLine } from "./command-output-ByEmIwur.mjs";
3
+ import { a as agentAccess, i as closeAgentConnection, o as removeAgentAccess, t as pullHostedMacosLogs } from "./hosted-logs-BWEQNJx_.mjs";
4
+ import { n as macosDir } from "./state-DsrFh3yv.mjs";
5
+ import { _t as runCancellationSignal } from "./toolchain-BeD7tbBW.mjs";
6
+ import { _ as sha256, a as RESERVE_TIMEOUT_MS, b as upload, c as bundleManifest, d as heldNoLonger, g as settle, i as PREPARE_TIMEOUT_MS, l as call, n as INSTALL_TIMEOUT_MS, o as SESSION_TIMEOUT_MS, p as hostedSession, s as attach, u as connectHost, v as stoppedSession, y as unknownSession } from "./hosted-client-BLwuXEZS.mjs";
7
7
  import { randomUUID } from "node:crypto";
8
8
  import { join } from "node:path";
9
9
  import { ambientContext, ambientWrite } from "@stim-cli/core";
@@ -1,11 +1,11 @@
1
- import { l as cancellableSleep, w as withDrainingCancellation } from "./exec-CGuDzt40.mjs";
2
- import { E as workspaceDir, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-BdZ-QgmB.mjs";
3
- import { l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
4
- import { a as agentAccess, i as closeAgentConnection, n as pullHostedNativeLogs, o as removeAgentAccess } from "./hosted-logs-DYPsnWMF.mjs";
5
- import { _t as runCancellationSignal } from "./toolchain-DRQyCvlp.mjs";
6
- import { _ as sha256, a as RESERVE_TIMEOUT_MS, b as upload, c as bundleManifest, d as heldNoLonger, g as settle, h as requireHostedAppMode, i as PREPARE_TIMEOUT_MS, l as call, n as INSTALL_TIMEOUT_MS, o as SESSION_TIMEOUT_MS, p as hostedSession, r as OFFER_TIMEOUT_MS, s as attach, t as IMAGE_INSTALL_TIMEOUT_MS, u as connectHost, v as stoppedSession, y as unknownSession } from "./hosted-client-Bb89P6an.mjs";
7
- import { a as requestHostedMetro, n as closeHostedMetro, o as requireHostedMetro, r as hostedAgentPort } from "./metro-request-2LmFpC1z.mjs";
8
- import { s as writeHostedNative } from "./ios-state-CWsBysyN.mjs";
1
+ import { l as cancellableSleep, w as withDrainingCancellation } from "./exec-L37dbiIb.mjs";
2
+ import { E as workspaceDir, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-DOPXG2Gp.mjs";
3
+ import { l as phaseLine } from "./command-output-ByEmIwur.mjs";
4
+ import { a as agentAccess, i as closeAgentConnection, n as pullHostedNativeLogs, o as removeAgentAccess } from "./hosted-logs-BWEQNJx_.mjs";
5
+ import { _t as runCancellationSignal } from "./toolchain-BeD7tbBW.mjs";
6
+ import { _ as sha256, a as RESERVE_TIMEOUT_MS, b as upload, c as bundleManifest, d as heldNoLonger, g as settle, h as requireHostedAppMode, i as PREPARE_TIMEOUT_MS, l as call, n as INSTALL_TIMEOUT_MS, o as SESSION_TIMEOUT_MS, p as hostedSession, r as OFFER_TIMEOUT_MS, s as attach, t as IMAGE_INSTALL_TIMEOUT_MS, u as connectHost, v as stoppedSession, y as unknownSession } from "./hosted-client-BLwuXEZS.mjs";
7
+ import { a as requestHostedMetro, n as closeHostedMetro, o as requireHostedMetro, r as hostedAgentPort } from "./metro-request-DcUxyaq8.mjs";
8
+ import { s as writeHostedNative } from "./ios-state-enWc5P6U.mjs";
9
9
  import { randomUUID } from "node:crypto";
10
10
  import { readFileSync } from "node:fs";
11
11
  import { join } from "node:path";
@@ -1,4 +1,4 @@
1
- import { t as getExecutor } from "./exec-CGuDzt40.mjs";
1
+ import { t as getExecutor } from "./exec-L37dbiIb.mjs";
2
2
  //#region src/collector/ios.ts
3
3
  const MESSAGE_TYPE_LEVEL = {
4
4
  Debug: "debug",
@@ -1,9 +1,9 @@
1
- import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-CGxrQ3Bd.mjs";
2
- import { Q as pickDevClientScheme, et as schemesFromInfoPlist } from "./toolchain-DRQyCvlp.mjs";
3
- import { f as podAction, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, s as iosConfigurationSetting, t as appNameFromPath, u as isReleaseConfiguration, v as resolveRuntime } from "./support-DW575Dnx.mjs";
4
- import { n as ensureWorkspaceStorageSafely } from "./native-runtime-oDqT4UES.mjs";
5
- import { t as devClientScheme } from "./dev-client-DDApoVvd.mjs";
6
- import { c as writeLastBuild, i as iosFacts, n as cacheDescription, o as lastBuildRecord } from "./ios-project-PXBDoaii.mjs";
7
- import { d as replaceCollector, u as collectorEntry } from "./dependencies-IVl2Ga2D.mjs";
8
- import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-FhMkDfNC.mjs";
1
+ import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-ByEmIwur.mjs";
2
+ import { Q as pickDevClientScheme, et as schemesFromInfoPlist } from "./toolchain-BeD7tbBW.mjs";
3
+ import { f as podAction, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, s as iosConfigurationSetting, t as appNameFromPath, u as isReleaseConfiguration, v as resolveRuntime } from "./support-CfYmOdQs.mjs";
4
+ import { n as ensureWorkspaceStorageSafely } from "./native-runtime-UxUBU8up.mjs";
5
+ import { t as devClientScheme } from "./dev-client-3SQzMRXZ.mjs";
6
+ import { c as writeLastBuild, i as iosFacts, n as cacheDescription, o as lastBuildRecord } from "./ios-project-XHg87vyQ.mjs";
7
+ import { d as replaceCollector, u as collectorEntry } from "./dependencies-BozoTBqa.mjs";
8
+ import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-CGyx4PA7.mjs";
9
9
  export { appNameFromPath, buildLogFile, cacheDescription, collectorEntry, iosCommand as default, devClientScheme, deviceLabel, ensureWorkspaceStorageSafely, formatDuration, iosConfigurationSetting, iosFacts, isReleaseConfiguration, lastBuildRecord, phaseLine, pickDevClientScheme, podAction, registerIos, replaceCollector, resolveConfiguration, resolveDeviceType, resolveRuntime, runIosOperation, schemesFromInfoPlist, shortHash, shortUdid, writeLastBuild };
@@ -1,10 +1,10 @@
1
- import { f as WorkspaceProcessCleanupError, l as cancellableSleep, n as isTimeoutError, t as getExecutor } from "./exec-CGuDzt40.mjs";
1
+ import { f as WorkspaceProcessCleanupError, l as cancellableSleep, n as isTimeoutError, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
2
  import { n as stripAnsi, r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
- import { rt as formatBytes, v as loadConfig$1 } from "./config-BW0fAtoK.mjs";
4
- import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
5
- import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-_WTria-r.mjs";
6
- import { Ot as recordCreatedDeviceAsync, Tt as forgetCreatedDeviceAsync, pt as isStimOwnedSim } from "./android-Iq0M2t2d.mjs";
7
- import { n as signedTailFor } from "./apk-signed-tail-CPpA-3vu.mjs";
3
+ import { it as formatBytes, v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
4
+ import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-DNynwpqO.mjs";
5
+ import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-DWGAfaud.mjs";
6
+ import { Ot as recordCreatedDeviceAsync, Tt as forgetCreatedDeviceAsync, pt as isStimOwnedSim } from "./android-CGctfYpv.mjs";
7
+ import { n as signedTailFor } from "./apk-signed-tail-BMv-KLcB.mjs";
8
8
  import { createHash } from "node:crypto";
9
9
  import { closeSync, existsSync, lstatSync, mkdtempSync, openSync, readSync, readdirSync, rmSync, writeFileSync } from "node:fs";
10
10
  import { tmpdir, totalmem } from "node:os";
@@ -1013,6 +1013,16 @@ const CLEARED_CONTAINER_DIRS = [
1013
1013
  ];
1014
1014
  async function clearIosAppData(udid, bundleId, { defaultsPlist = null } = {}) {
1015
1015
  const exec = getExecutor();
1016
+ try {
1017
+ await exec.runFileAsync("xcrun", [
1018
+ "simctl",
1019
+ "terminate",
1020
+ udid,
1021
+ bundleId
1022
+ ], SIMCTL_OPTIONS);
1023
+ } catch (error) {
1024
+ if (!/found nothing to terminate/.test(error instanceof Error ? error.message : String(error))) throw error;
1025
+ }
1016
1026
  if (defaultsPlist) await exec.runFileAsync("xcrun", [
1017
1027
  "simctl",
1018
1028
  "spawn",
@@ -1,31 +1,32 @@
1
- import { a as recordWorkspaceUseAsync, k as workspaceLogsDir$1 } from "./workspace-state-BdZ-QgmB.mjs";
2
- import { _ as stepTimer, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
3
- import { _t as validateDeviceSlot, mt as parseDeviceSlotOption, ut as deviceSlotFileKey } from "./config-BW0fAtoK.mjs";
4
- import { B as publicUrlSetting, C as iosSigningIdentitySettingError, F as metroWarmupUrlSetting, N as metroPortSetting, S as iosSigningIdentitySetting, T as iosSigningIdentitySha1SettingError, a as SETTING_SHAPE_REMEDY, g as deviceReclaimIdleMinutesSetting, ot as tunnelModeSetting, v as iosLanHostSetting, w as iosSigningIdentitySha1Setting, y as iosLanHostSettingError, z as projectSettingsContextAsync } from "./settings-B5IBDfTx.mjs";
5
- import { t as NO_PROJECT_REFUSAL } from "./project-Dqqj3IkW.mjs";
6
- import { bt as parkedMaxSetting, mt as POOL_SETTING_REMEDY } from "./android-Iq0M2t2d.mjs";
7
- import { Hn as exitAfterFlush, Wn as runProcessOperation, dr as ownedSessionName, qt as binOnPath, yn as DEFAULT_METRO_PORT } from "./device-capacity-C0PiTyRb.mjs";
8
- import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, Z as runFailureRecord, et as thrownRunFailureRecord, lt as statsProjectKey$1, rt as createRunRecorder } from "./workspaces-CY3KSdC0.mjs";
9
- import { A as COMPILATION_CACHE_NOT_RUN, _t as runCancellationSignal, gt as runCancellation, lt as cancelledFailure, vt as withNativeBuildRun } from "./toolchain-DRQyCvlp.mjs";
10
- import { i as createIosSimSnapshot } from "./ios-BdZdNsAj.mjs";
1
+ import { a as recordWorkspaceUseAsync, k as workspaceLogsDir$1 } from "./workspace-state-DOPXG2Gp.mjs";
2
+ import { _ as stepTimer, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-ByEmIwur.mjs";
3
+ import { dt as deviceSlotFileKey, ht as parseDeviceSlotOption, vt as validateDeviceSlot } from "./config-CNmN-ndb.mjs";
4
+ import { B as publicUrlSetting, C as iosSigningIdentitySettingError, F as metroWarmupUrlSetting, N as metroPortSetting, S as iosSigningIdentitySetting, T as iosSigningIdentitySha1SettingError, a as SETTING_SHAPE_REMEDY, g as deviceReclaimIdleMinutesSetting, ot as tunnelModeSetting, v as iosLanHostSetting, w as iosSigningIdentitySha1Setting, y as iosLanHostSettingError, z as projectSettingsContextAsync } from "./settings-Ag4pbs0z.mjs";
5
+ import { t as NO_PROJECT_REFUSAL } from "./project-BCtQz48d.mjs";
6
+ import { bt as parkedMaxSetting, mt as POOL_SETTING_REMEDY } from "./android-CGctfYpv.mjs";
7
+ import { Hn as exitAfterFlush, Wn as runProcessOperation, dr as ownedSessionName, qt as binOnPath, yn as DEFAULT_METRO_PORT } from "./device-capacity-DWUOvY13.mjs";
8
+ import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, Z as runFailureRecord, et as thrownRunFailureRecord, lt as statsProjectKey$1, rt as createRunRecorder } from "./workspaces-DCzDzydB.mjs";
9
+ import { A as COMPILATION_CACHE_NOT_RUN, _t as runCancellationSignal, gt as runCancellation, lt as cancelledFailure, vt as withNativeBuildRun } from "./toolchain-BeD7tbBW.mjs";
10
+ import { i as createIosSimSnapshot } from "./ios-BveW7qK1.mjs";
11
11
  import { d as optimizationBuildProfile, l as artifactCachePolicy } from "./errors-DHm_U5gv.mjs";
12
- import { C as setRemoteLogSink, d as simulatorRuntime } from "./client-Dy0eJJtz.mjs";
13
- import { N as parseBuildMachineOption, W as leaseExpiryText, X as waitFlagConflict, _ as resolveIosWait, a as deviceModelRefusal, b as resolveSimulatorAppFlag, c as iosProjectPathError, d as ownedSimFailure, g as resolveIosBuildSetup, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, r as createIosDeviceWaitRun, u as isReleaseConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-DW575Dnx.mjs";
14
- import { i as hostedMetroSettings } from "./metro-request-2LmFpC1z.mjs";
15
- import { i as writeDevicePlacementAsync } from "./ios-state-CWsBysyN.mjs";
16
- import { t as devClientPortBusy } from "./hosted-native-C9xQYYFb.mjs";
17
- import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-DikgC3-S.mjs";
18
- import { r as isEasBuildFailure } from "./eas-build-BxJdzQnF.mjs";
19
- import { a as iosPoolCandidates, c as isWirelessIosDevice, f as resolveIosPhysicalDevice, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds } from "./ios-device-DMOnaH5n.mjs";
20
- import { i as launchOutcomeRecord, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-oDqT4UES.mjs";
21
- import "./dev-client-DDApoVvd.mjs";
22
- import { t as didSetUpDevice } from "./device-p_cp8IzW.mjs";
12
+ import { C as setRemoteLogSink, d as simulatorRuntime } from "./client-DU6dnGX1.mjs";
13
+ import { N as parseBuildMachineOption, W as leaseExpiryText, X as waitFlagConflict, _ as resolveIosWait, a as deviceModelRefusal, b as resolveSimulatorAppFlag, c as iosProjectPathError, d as ownedSimFailure, g as resolveIosBuildSetup, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, r as createIosDeviceWaitRun, u as isReleaseConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-CfYmOdQs.mjs";
14
+ import { i as hostedMetroSettings } from "./metro-request-DcUxyaq8.mjs";
15
+ import { i as writeDevicePlacementAsync } from "./ios-state-enWc5P6U.mjs";
16
+ import { t as devClientPortBusy } from "./hosted-native-OBT2sJxn.mjs";
17
+ import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-Cdfmo8MO.mjs";
18
+ import { r as isEasBuildFailure } from "./eas-build-CwOXKJwa.mjs";
19
+ import { a as iosPoolCandidates, c as isWirelessIosDevice, f as resolveIosPhysicalDevice, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds } from "./ios-device-ByrDWSpC.mjs";
20
+ import { i as launchOutcomeRecord, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-UxUBU8up.mjs";
21
+ import { t as lookupRecordedBuild } from "./recorded-build-CGHGCO8m.mjs";
22
+ import "./dev-client-3SQzMRXZ.mjs";
23
+ import { t as didSetUpDevice } from "./device-BIg1iExg.mjs";
23
24
  import { t as unsupportedPlan } from "./project-plan-BPwbLwQu.mjs";
24
- import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-BSgR9yKo.mjs";
25
- import { a as iosLedgerDevice, c as writeLastBuild, o as lastBuildRecord, s as reportIosResult } from "./ios-project-PXBDoaii.mjs";
26
- import { t as acquireIosArtifact } from "./artifact-2NIRz6SC.mjs";
27
- import { a as hostedIosSelectors, i as hostedIosMetroNote, n as connectIosTarget, o as iosPlacementBudget, r as deviceRemoteConflict, s as selectIosPlacement, t as connectIosBackend } from "./remote-BsmYHUxH.mjs";
28
- import { i as lanOriginUrlFor, l as verifyIosMetroRun, n as chooseLanAddress, o as finishIosRun, t as DEFAULT_DEPS } from "./dependencies-IVl2Ga2D.mjs";
25
+ import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-CgnLDof9.mjs";
26
+ import { a as iosLedgerDevice, c as writeLastBuild, o as lastBuildRecord, s as reportIosResult } from "./ios-project-XHg87vyQ.mjs";
27
+ import { n as acquireIosArtifactOrRecorded } from "./artifact-BrNZTZtA.mjs";
28
+ import { a as hostedIosSelectors, i as hostedIosMetroNote, n as connectIosTarget, o as iosPlacementBudget, r as deviceRemoteConflict, s as selectIosPlacement, t as connectIosBackend } from "./remote-CV2jBcLv.mjs";
29
+ import { i as lanOriginUrlFor, l as verifyIosMetroRun, n as chooseLanAddress, o as finishIosRun, t as DEFAULT_DEPS } from "./dependencies-BozoTBqa.mjs";
29
30
  import { join } from "node:path";
30
31
  import { workspaceId } from "@stim-cli/core";
31
32
  import { hostedIosStatus, parseMachine } from "@stim-cli/core/state";
@@ -296,7 +297,8 @@ function unlessCancelled(context, result) {
296
297
  compilationCache: result.artifact.cache.compilation
297
298
  };
298
299
  }
299
- function iosProjectTargetRefusal(project, { physical, easProfile, placement }) {
300
+ function iosProjectTargetRefusal(project, { physical, easProfile, placement, recordedRefusal }) {
301
+ if (recordedRefusal) return recordedRefusal;
300
302
  const target = physical ? "physical" : placement ? placement.machine ? "hosted" : placement.backend ? "remote" : "simulator" : null;
301
303
  if (target && !project.targets.includes(target)) return {
302
304
  code: "STIM_BAD_ARG",
@@ -310,13 +312,13 @@ function iosProjectTargetRefusal(project, { physical, easProfile, placement }) {
310
312
  };
311
313
  return null;
312
314
  }
313
- function iosArtifactTargetInputs({ udid, physical, remote, hosted, simulatorArch, lanAddress, metroPort, settings }) {
315
+ function iosArtifactTargetInputs({ udid, physical, remote, hosted, simulatorArch, configuration, lanAddress, metroPort, settings }) {
314
316
  return {
315
317
  target: {
316
318
  udid,
317
319
  destination: remote || hosted ? "generic/platform=iOS Simulator" : null,
318
320
  sdk: physical ? "iphoneos" : "iphonesimulator",
319
- arch: remote || hosted ? simulatorArch : null,
321
+ arch: remote || hosted || isReleaseConfiguration(configuration) ? simulatorArch : null,
320
322
  keyArch: simulatorArch,
321
323
  offloadRuntime: () => hosted?.choice.runtimeId ?? (remote ? null : simulatorRuntime(udid)),
322
324
  hostedArchitecture: hosted?.choice.architecture,
@@ -635,9 +637,15 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
635
637
  const isExpo = integration.isExpo;
636
638
  const schemeRefusal = await integration.schemeProblem(buildScheme, configuration);
637
639
  if (schemeRefusal) return fail(schemeRefusal);
640
+ const recordedLookup = lookupRecordedBuild(opts.recordedBuild, root, {
641
+ platform: "ios",
642
+ scheme: buildScheme,
643
+ configuration: builtConfiguration
644
+ });
638
645
  const capabilityRefusal = iosProjectTargetRefusal(integration, {
639
646
  physical,
640
- easProfile: opts.easProfile
647
+ easProfile: opts.easProfile,
648
+ recordedRefusal: recordedLookup.refusal
641
649
  });
642
650
  if (capabilityRefusal) return fail(capabilityRefusal);
643
651
  const simSnapshot = createIosSimSnapshot();
@@ -681,7 +689,8 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
681
689
  deviceSlotWait.automatic = Boolean(remoteSelection.auto);
682
690
  const targetRefusal = iosProjectTargetRefusal(integration, {
683
691
  physical,
684
- placement: remoteSelection
692
+ placement: remoteSelection,
693
+ recordedRefusal: null
685
694
  });
686
695
  if (targetRefusal) return fail(targetRefusal);
687
696
  devicePlacement = remoteSelection.devicePlacement;
@@ -1078,10 +1087,9 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
1078
1087
  const simulatorArch = simulatorBuildArch({
1079
1088
  physical,
1080
1089
  remoteArch,
1081
- hostArch: d.hostSimulatorArch(),
1082
- configuration
1090
+ hostArch: d.hostSimulatorArch()
1083
1091
  });
1084
- const acquiredArtifact = unlessCancelled(context, await acquireIosArtifact({
1092
+ const acquiredArtifact = unlessCancelled(context, await acquireIosArtifactOrRecorded(recordedLookup.build, {
1085
1093
  context,
1086
1094
  root,
1087
1095
  logFile,
@@ -1101,6 +1109,7 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
1101
1109
  remote: Boolean(remoteDevice),
1102
1110
  hosted: hostedTarget,
1103
1111
  simulatorArch,
1112
+ configuration,
1104
1113
  lanAddress,
1105
1114
  metroPort,
1106
1115
  settings
@@ -1242,6 +1251,7 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
1242
1251
  lanAddress,
1243
1252
  lanOriginUrl,
1244
1253
  remoteDevice,
1254
+ cleanAppState: Boolean(opts.cleanAppState),
1245
1255
  bootPromise,
1246
1256
  bootDuration: () => bootDuration,
1247
1257
  bootPending: () => bootPending,
@@ -1,6 +1,6 @@
1
- import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { bn as INSTALL_ERROR, wn as appProcessFromPid } from "./device-capacity-C0PiTyRb.mjs";
3
- import { n as TOOL_ERROR_PREFIX } from "./ios-device-DLdEDWJj.mjs";
1
+ import { t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { bn as INSTALL_ERROR, wn as appProcessFromPid } from "./device-capacity-DWUOvY13.mjs";
3
+ import { n as TOOL_ERROR_PREFIX } from "./ios-device-ygijU78G.mjs";
4
4
  import { mkdtempSync, readFileSync, rmSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
6
6
  import { join } from "node:path";
@@ -1,4 +1,4 @@
1
- import { t as getExecutor } from "./exec-CGuDzt40.mjs";
1
+ import { t as getExecutor } from "./exec-L37dbiIb.mjs";
2
2
  //#region src/collector/ios-device.ts
3
3
  const CONSOLE_ENV = { OS_ACTIVITY_DT_MODE: "enable" };
4
4
  const DEV_MENU_LAUNCH_ARGS = [
@@ -1,10 +1,10 @@
1
- import { w as workspaceAgentDeviceDir } from "./workspace-state-BdZ-QgmB.mjs";
2
- import { i as formatDuration, l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
3
- import { a as workspaceLinkLine } from "./stim-desktop-_WTria-r.mjs";
4
- import { Kn as UPLOAD_TIMEOUT_MS, Xn as isEasAuthFailureText, Yn as easAuthNote, qn as cacheLevel } from "./device-capacity-C0PiTyRb.mjs";
5
- import { X as recordFinishedBuild } from "./workspaces-CY3KSdC0.mjs";
6
- import { A as COMPILATION_CACHE_NOT_RUN, F as compilationCacheActivityLine } from "./toolchain-DRQyCvlp.mjs";
7
- import { i as deviceLabel } from "./support-DW575Dnx.mjs";
1
+ import { w as workspaceAgentDeviceDir } from "./workspace-state-DOPXG2Gp.mjs";
2
+ import { i as formatDuration, l as phaseLine } from "./command-output-ByEmIwur.mjs";
3
+ import { a as workspaceLinkLine } from "./stim-desktop-DWGAfaud.mjs";
4
+ import { Kn as UPLOAD_TIMEOUT_MS, Xn as isEasAuthFailureText, Yn as easAuthNote, qn as cacheLevel } from "./device-capacity-DWUOvY13.mjs";
5
+ import { X as recordFinishedBuild } from "./workspaces-DCzDzydB.mjs";
6
+ import { A as COMPILATION_CACHE_NOT_RUN, F as compilationCacheActivityLine } from "./toolchain-BeD7tbBW.mjs";
7
+ import { i as deviceLabel } from "./support-CfYmOdQs.mjs";
8
8
  import { buildDiagnostics } from "@stim-cli/core/state";
9
9
  import chalk from "chalk";
10
10
  //#region src/commands/ios/result.ts
@@ -1,6 +1,6 @@
1
- import { d as throwIfCancelled, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { a as killOnAbort, r as childEnvironment } from "./operation-exec-DKlBcKAL.mjs";
3
- import { at as profileGate, it as parseSigningIdentities, ot as signingGate, rt as parseProvisioningProfilePlist, tt as SIGNING_CODES } from "./toolchain-DRQyCvlp.mjs";
1
+ import { d as throwIfCancelled, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { a as killOnAbort, r as childEnvironment } from "./operation-exec-DNynwpqO.mjs";
3
+ import { at as profileGate, it as parseSigningIdentities, ot as signingGate, rt as parseProvisioningProfilePlist, tt as SIGNING_CODES } from "./toolchain-BeD7tbBW.mjs";
4
4
  import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
6
6
  import { join } from "node:path";
@@ -1,4 +1,4 @@
1
- import { l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-BdZ-QgmB.mjs";
1
+ import { l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-DOPXG2Gp.mjs";
2
2
  import { HOSTED_METRO_REQUESTS_KEY, hostedMetroRequests, hostedNativeRecords, isJsonObject, parseHostedNativePlacement, unreadableHostedNative } from "@stim-cli/core/state";
3
3
  //#region src/device-host/ios-state.ts
4
4
  function readHostedNative(root, platform, slot) {
@@ -1,13 +1,15 @@
1
- import { C as operationState, b as spawnDeclared, d as throwIfCancelled, t as getExecutor } from "./exec-CGuDzt40.mjs";
1
+ import { C as operationState, b as spawnDeclared, d as throwIfCancelled, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { E as workspaceDir } from "./workspace-state-DOPXG2Gp.mjs";
2
3
  import { r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
- import { a as killOnAbort, t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
4
- import { an as makeTemporaryDirectory, on as removeTemporaryEntry } from "./settings-B5IBDfTx.mjs";
5
- import { ir as bundleInvocation } from "./device-capacity-C0PiTyRb.mjs";
6
- import { K as tailLines, M as HEARTBEAT_INTERVAL_MS, W as startBuildHeartbeat } from "./toolchain-DRQyCvlp.mjs";
7
- import { s as expoTelemetryEnv, t as cleanLine } from "./server-expo-CjQwxvIi.mjs";
8
- import { randomUUID } from "node:crypto";
4
+ import { a as killOnAbort, t as runOperationFile } from "./operation-exec-DNynwpqO.mjs";
5
+ import { an as makeTemporaryDirectory, on as removeTemporaryEntry } from "./settings-Ag4pbs0z.mjs";
6
+ import { ir as bundleInvocation } from "./device-capacity-DWUOvY13.mjs";
7
+ import { K as tailLines, M as HEARTBEAT_INTERVAL_MS, W as startBuildHeartbeat } from "./toolchain-BeD7tbBW.mjs";
8
+ import { s as expoTelemetryEnv, t as cleanLine } from "./server-expo-ZS9_WaNG.mjs";
9
+ import { createHash, randomUUID } from "node:crypto";
9
10
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
10
11
  import { basename, join } from "node:path";
12
+ import { ensurePrivateDir } from "@stim-cli/core";
11
13
  //#region src/engine/js-swap.ts
12
14
  const JS_BUNDLE_NAME = "main.jsbundle";
13
15
  const LAST_LINES = 5;
@@ -49,6 +51,55 @@ function detectEntryFile(root) {
49
51
  }
50
52
  return pickEntryFile(entries);
51
53
  }
54
+ function bundlerInputsKey(root, env) {
55
+ const hash = createHash("sha256");
56
+ for (const name of Object.keys(env).toSorted()) if (name.startsWith("EXPO_PUBLIC_") || name === "EXPO_NO_DOTENV" || name === "NODE_ENV") hash.update(`env\0${name}\0${env[name] ?? ""}\0`);
57
+ let entries = [];
58
+ try {
59
+ entries = readdirSync(root).filter((name) => name.startsWith(".env")).toSorted();
60
+ } catch {}
61
+ for (const name of entries) try {
62
+ hash.update(`file\0${name}\0`).update(readFileSync(join(root, name))).update("\0");
63
+ } catch {}
64
+ return hash.digest("hex");
65
+ }
66
+ /**
67
+ * The TMPDIR for a swap's bundler child: a workspace-private directory that holds Metro's transform cache
68
+ * (`$TMPDIR/metro-cache`). Metro's cache key omits the `EXPO_PUBLIC_*` values babel-preset-expo inlines,
69
+ * and `expo export:embed` ignores `--reset-cache` when `CI` is set (expo/expo#49630), so the directory is
70
+ * emptied whenever those values, the project's `.env*` files, or the `EXPO_NO_DOTENV` and `NODE_ENV` that
71
+ * select which of those files Expo loads differ from the previous swap's.
72
+ */
73
+ function swapBundlerTmpdir(root, env) {
74
+ const dir = join(workspaceDir(root), "js-swap-tmp");
75
+ const stamp = join(dir, "inputs");
76
+ const key = bundlerInputsKey(root, env);
77
+ let previous = null;
78
+ try {
79
+ previous = readFileSync(stamp, "utf-8");
80
+ } catch {}
81
+ if (previous !== key) {
82
+ rmSync(dir, {
83
+ recursive: true,
84
+ force: true
85
+ });
86
+ ensurePrivateDir(dir);
87
+ writeFileSync(stamp, key);
88
+ }
89
+ return dir;
90
+ }
91
+ /** Node's `os.tmpdir()` reads `TMPDIR` on POSIX and `TEMP`, then `TMP`, on Windows. */
92
+ function swapBundlerEnv(root, env) {
93
+ const tmp = swapBundlerTmpdir(root, env);
94
+ return {
95
+ ...env,
96
+ ...expoTelemetryEnv(env),
97
+ FORCE_COLOR: "0",
98
+ TMPDIR: tmp,
99
+ TEMP: tmp,
100
+ TMP: tmp
101
+ };
102
+ }
52
103
  function bundleCommand({ isExpo, entryFile, bundleOutput, assetsDest, assetCatalogDest = null }) {
53
104
  const catalogArgs = assetCatalogDest ? ["--asset-catalog-dest", assetCatalogDest] : [];
54
105
  if (isExpo) return {
@@ -311,11 +362,7 @@ async function swapJsBundle({ context, root, iosDir, isExpo, cachedAppPath, logW
311
362
  "pipe",
312
363
  "pipe"
313
364
  ],
314
- env: {
315
- ...context?.env ?? process.env,
316
- ...expoTelemetryEnv(context?.env ?? process.env),
317
- FORCE_COLOR: "0"
318
- }
365
+ env: swapBundlerEnv(root, context?.env ?? process.env)
319
366
  }));
320
367
  killOnAbort(context ? operationState(context).runSignal ?? context.signal : void 0)(child);
321
368
  } catch (err) {
@@ -436,4 +483,4 @@ function describe(err) {
436
483
  return String(err?.message || err);
437
484
  }
438
485
  //#endregion
439
- export { swapJsBundle as i, detectEntryFile as n, refreshUpdatesManifestFile as r, UPDATES_MANIFEST_NAME as t };
486
+ export { swapJsBundle as a, swapBundlerEnv as i, detectEntryFile as n, refreshUpdatesManifestFile as r, UPDATES_MANIFEST_NAME as t };
@@ -1,24 +1,24 @@
1
- import { w as withDrainingCancellation } from "./exec-CGuDzt40.mjs";
2
- import { k as workspaceLogsDir } from "./workspace-state-BdZ-QgmB.mjs";
3
- import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-CGxrQ3Bd.mjs";
4
- import { D as upsertProject, T as setDevice, dt as deviceSlotKey, ft as deviceSlotPlatforms, k as withConfigLockAsync, rt as formatBytes, ut as deviceSlotFileKey, v as loadConfig, w as saveConfig } from "./config-BW0fAtoK.mjs";
5
- import { L as workspaceDevServerMode } from "./project-Dqqj3IkW.mjs";
6
- import { o as workspaceLinks } from "./stim-desktop-_WTria-r.mjs";
7
- import { ct as trimAndroidCaches, i as androidDataFreeBytes, rt as resetAdoptedAvd, u as androidToolCwd } from "./android-Iq0M2t2d.mjs";
8
- import { c as pidExists, f as signalProcessTree } from "./metro-B5PVz0Wv.mjs";
9
- import { Cn as androidDevClientUrl, Ln as restartedAppNote, Sn as androidAppProcess, an as LAUNCH_UNVERIFIED, cn as VERIFY_TIMEOUT_MS, fn as unattributedLaunchLines, in as LAUNCH_FATAL, jn as installConflictKind, pn as unverifiedLaunchLines, rn as LAUNCH_BUNDLING, sn as RELEASE_VERIFY_WAIT_MS, vn as ADB_INSTALL_TIMEOUT_MS } from "./device-capacity-C0PiTyRb.mjs";
10
- import { pt as teardownOwnedAvd } from "./workspaces-CY3KSdC0.mjs";
11
- import { C as providerUploadOutcome } from "./build-cache-_fkewiwH.mjs";
12
- import { G as lostLine, K as lostRefusal, z as DEBUG_VERIFY_STEP_MS } from "./support-DW575Dnx.mjs";
13
- import { t as recordPhoneReverse } from "./phone-reverses-B9WyCBKQ.mjs";
14
- import { n as verifyCollectorOwnership, r as readCollectors } from "./ownership-hC7xvvxF.mjs";
15
- import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-DsQmPdlg.mjs";
1
+ import { w as withDrainingCancellation } from "./exec-L37dbiIb.mjs";
2
+ import { k as workspaceLogsDir } from "./workspace-state-DOPXG2Gp.mjs";
3
+ import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-ByEmIwur.mjs";
4
+ import { A as withConfigLockAsync, O as upsertProject, T as setDevice, dt as deviceSlotFileKey, ft as deviceSlotKey, it as formatBytes, pt as deviceSlotPlatforms, v as loadConfig, w as saveConfig } from "./config-CNmN-ndb.mjs";
5
+ import { L as workspaceDevServerMode } from "./project-BCtQz48d.mjs";
6
+ import { o as workspaceLinks } from "./stim-desktop-DWGAfaud.mjs";
7
+ import { ct as trimAndroidCaches, i as androidDataFreeBytes, rt as resetAdoptedAvd, u as androidToolCwd } from "./android-CGctfYpv.mjs";
8
+ import { c as pidExists, f as signalProcessTree } from "./metro-TIQ1Wft-.mjs";
9
+ import { Cn as androidDevClientUrl, Ln as restartedAppNote, Sn as androidAppProcess, an as LAUNCH_UNVERIFIED, cn as VERIFY_TIMEOUT_MS, fn as unattributedLaunchLines, in as LAUNCH_FATAL, jn as installConflictKind, pn as unverifiedLaunchLines, rn as LAUNCH_BUNDLING, sn as RELEASE_VERIFY_WAIT_MS, vn as ADB_INSTALL_TIMEOUT_MS } from "./device-capacity-DWUOvY13.mjs";
10
+ import { pt as teardownOwnedAvd } from "./workspaces-DCzDzydB.mjs";
11
+ import { C as providerUploadOutcome } from "./build-cache-Dt-dhCJF.mjs";
12
+ import { G as lostLine, K as lostRefusal, z as DEBUG_VERIFY_STEP_MS } from "./support-CfYmOdQs.mjs";
13
+ import { t as recordPhoneReverse } from "./phone-reverses-CHtco460.mjs";
14
+ import { n as verifyCollectorOwnership, r as readCollectors } from "./ownership-CQTg6v1d.mjs";
15
+ import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-DW_29Bmu.mjs";
16
16
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
17
- import { a as captureNativeCrashes, r as androidCrashClockOffset, s as printNativeCrashReport, t as errorDiagnostics } from "./error-diagnostics-D6wlK-yX.mjs";
18
- import { f as settleFingerprintCheck } from "./prebuild-BptrXmh_.mjs";
19
- import { i as launchOutcomeRecord } from "./native-runtime-oDqT4UES.mjs";
20
- import { a as PLATFORM, b as noDeviceDiagnostic, h as displayPath, n as LAUNCH_FAILED, r as NO_DEVICE, t as INSTALL_FAILED } from "./support-CNqJDBrH.mjs";
21
- import { a as persistLastBuild, n as finishAndroidUpload, s as reportAndroidResult } from "./result-DK6nTO-M.mjs";
17
+ import { a as captureNativeCrashes, r as androidCrashClockOffset, s as printNativeCrashReport, t as errorDiagnostics } from "./error-diagnostics-CXTT3bYC.mjs";
18
+ import { f as settleFingerprintCheck } from "./prebuild-BKkj3OyL.mjs";
19
+ import { i as launchOutcomeRecord } from "./native-runtime-UxUBU8up.mjs";
20
+ import { a as PLATFORM, b as noDeviceDiagnostic, h as displayPath, n as LAUNCH_FAILED, r as NO_DEVICE, t as INSTALL_FAILED } from "./support-JZ4KRW0C.mjs";
21
+ import { a as persistLastBuild, n as finishAndroidUpload, s as reportAndroidResult } from "./result-CWyxwPvZ.mjs";
22
22
  import { mkdirSync, openSync, statSync } from "node:fs";
23
23
  import { basename, join } from "node:path";
24
24
  import { ambientEnv } from "@stim-cli/core";
@@ -382,7 +382,31 @@ async function resolveInstallSerial({ root, slot, device, physical, remoteDevice
382
382
  });
383
383
  return resolved.serial;
384
384
  }
385
- async function finishAndroidRun({ operation, runtime, runtimePreparation, lease, releaseLease, root, slot, json, metroCheck, useBuildCache, variant, release, isExpo, metroPort, logsDir, emuLog, device, physical, remoteDevice, bootPromise, resolveAvdSerial, waitForDeviceBoot, bootDuration, bootPending, apkPath, androidPackage: initialPackage, androidPackageProblem, record, waitedForBuild, ccache, uploadPending, fingerprintCheck, providerUpload, providerName, remote, abandonedRemote: remoteWasAbandoned, started, startedAt, writer, phase, fail, readApkPackage, readProjectPackage, packageRemedy, install, launch, launchRelease, resolveDevClientScheme, verifyLaunched, verifyReleaseLaunched, spawn, kill, pidAlive, verifyCollector, writeLaunch, recordBuild, now, out, emit, recordRun, reclaimed, devServer, enterPhase, enterActivity, rebootDevice, dataFreeBytes = androidDataFreeBytes, trimCaches = trimAndroidCaches, wipeDevice = teardownOwnedAvd }) {
385
+ async function cleanEmulatorAppState({ avdName, owned }, serial, androidPackage, adopting, phase) {
386
+ if (!adopting && !owned) return {
387
+ code: "STIM_BAD_ARG",
388
+ message: `cleanAppState clears only an emulator Stim owns, and ${avdName ?? serial} is not one.`,
389
+ remedy: "Run `stim gc --delete` to clear the assignment so Stim creates an owned emulator."
390
+ };
391
+ const emulator = adopting ? "adopted emulator" : "emulator";
392
+ if (!androidPackage || !avdName) return {
393
+ code: LAUNCH_FAILED,
394
+ message: `Cannot clean an ${emulator} without its app package and AVD name.`,
395
+ remedy: "Retry once the APK applicationId can be read."
396
+ };
397
+ try {
398
+ await resetAdoptedAvd(avdName, serial, androidPackage);
399
+ } catch (error) {
400
+ return {
401
+ code: LAUNCH_FAILED,
402
+ message: `Could not clean ${emulator} ${avdName}: ${String(error?.message || error)}`,
403
+ remedy: adopting ? "Fix the device cleanup error and retry; adoption remains pending and the app was not launched." : "Fix the device cleanup error and retry; the app was not launched."
404
+ };
405
+ }
406
+ if (!adopting) phase("install", `cleared app state on ${avdName}`);
407
+ return null;
408
+ }
409
+ async function finishAndroidRun({ operation, runtime, runtimePreparation, lease, releaseLease, root, slot, json, metroCheck, useBuildCache, variant, release, isExpo, metroPort, logsDir, emuLog, device, physical, remoteDevice, cleanAppState = false, bootPromise, resolveAvdSerial, waitForDeviceBoot, bootDuration, bootPending, apkPath, androidPackage: initialPackage, androidPackageProblem, record, waitedForBuild, ccache, uploadPending, fingerprintCheck, providerUpload, providerName, remote, abandonedRemote: remoteWasAbandoned, started, startedAt, writer, phase, fail, readApkPackage, readProjectPackage, packageRemedy, install, launch, launchRelease, resolveDevClientScheme, verifyLaunched, verifyReleaseLaunched, spawn, kill, pidAlive, verifyCollector, writeLaunch, recordBuild, now, out, emit, recordRun, reclaimed, devServer, enterPhase, enterActivity, rebootDevice, dataFreeBytes = androidDataFreeBytes, trimCaches = trimAndroidCaches, wipeDevice = teardownOwnedAvd }) {
386
410
  const { env, signal } = operation ?? {};
387
411
  let androidPackage = initialPackage;
388
412
  let leaseWarned = false;
@@ -436,13 +460,9 @@ async function finishAndroidRun({ operation, runtime, runtimePreparation, lease,
436
460
  androidPackage = packageFromApk || androidPackage || await readProjectPackage();
437
461
  if (!androidPackage && androidPackageProblem) return fail(LAUNCH_FAILED, androidPackageProblem, packageRemedy, { lastBuildStatus: true });
438
462
  const adopting = !physical && !remoteDevice && Boolean(device.adoptionPending);
439
- if (adopting) {
440
- if (!androidPackage || !device.avdName) return fail(LAUNCH_FAILED, "Cannot clean an adopted emulator without its app package and AVD name.", "Retry once the APK applicationId can be read.");
441
- try {
442
- await resetAdoptedAvd(device.avdName, serial, androidPackage);
443
- } catch (error) {
444
- return fail(LAUNCH_FAILED, `Could not clean adopted emulator ${device.avdName}: ${String(error?.message || error)}`, "Fix the device cleanup error and retry; adoption remains pending and the app was not launched.");
445
- }
463
+ if (adopting || cleanAppState && !physical && !remoteDevice) {
464
+ const cleanupFailure = await cleanEmulatorAppState(device, serial, androidPackage, adopting, phase);
465
+ if (cleanupFailure) return fail(cleanupFailure.code, cleanupFailure.message, cleanupFailure.remedy);
446
466
  }
447
467
  const lostBeforeInstall = physical ? raiseLeaseFor(ADB_INSTALL_TIMEOUT_MS, true) : null;
448
468
  if (lostBeforeInstall) return lostBeforeInstall;
@@ -1,9 +1,9 @@
1
- import { f as WorkspaceProcessCleanupError } from "./exec-CGuDzt40.mjs";
2
- import { c as withWorkspaceStateLock } from "./workspace-state-BdZ-QgmB.mjs";
3
- import { l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
4
- import { Jt as warmWorktreePaths, Lt as podsOutOfSync, Q as resolveSettings, Rt as readWorktreeExclude, kt as listCarryableIgnoredEntries, vt as depsOutOfSync } from "./settings-B5IBDfTx.mjs";
1
+ import { f as WorkspaceProcessCleanupError } from "./exec-L37dbiIb.mjs";
2
+ import { c as withWorkspaceStateLock } from "./workspace-state-DOPXG2Gp.mjs";
3
+ import { l as phaseLine } from "./command-output-ByEmIwur.mjs";
4
+ import { Jt as warmWorktreePaths, Lt as podsOutOfSync, Q as resolveSettings, Rt as readWorktreeExclude, kt as listCarryableIgnoredEntries, vt as depsOutOfSync } from "./settings-Ag4pbs0z.mjs";
5
5
  import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
6
- import { m as warmWorktreeTarget } from "./worktree-fKKe8j5M.mjs";
6
+ import { m as warmWorktreeTarget } from "./worktree-BAC43Kio.mjs";
7
7
  import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
8
8
  import { basename, dirname, join, relative } from "node:path";
9
9
  import { isJsonObject, readJsonObject, workspaceLightenedFile, workspaceMetadataFile } from "@stim-cli/core/state";
@@ -1,9 +1,9 @@
1
- import { T as process_identity_exports } from "./exec-CGuDzt40.mjs";
2
- import { k as workspaceLogsDir$1 } from "./workspace-state-BdZ-QgmB.mjs";
3
- import { ht as projectDeviceSlots, v as loadConfig$1 } from "./config-BW0fAtoK.mjs";
4
- import { f as readAgentDeviceRecordsAsync, n as agentDeviceLiveness, o as envDir } from "./activity-BQpJpAjA.mjs";
5
- import { o as captureWorkspaceCrashes } from "./error-diagnostics-D6wlK-yX.mjs";
6
- import { n as followHostedLogs, r as syncHostedLogs } from "./hosted-logs-sync-DfUJ2GpF.mjs";
1
+ import { T as process_identity_exports } from "./exec-L37dbiIb.mjs";
2
+ import { k as workspaceLogsDir$1 } from "./workspace-state-DOPXG2Gp.mjs";
3
+ import { gt as projectDeviceSlots, v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
4
+ import { f as readAgentDeviceRecordsAsync, n as agentDeviceLiveness, o as envDir } from "./activity-CdpXXSq2.mjs";
5
+ import { o as captureWorkspaceCrashes } from "./error-diagnostics-CXTT3bYC.mjs";
6
+ import { n as followHostedLogs, r as syncHostedLogs } from "./hosted-logs-sync-uWSrH2mf.mjs";
7
7
  import { readdirSync, statSync, watch } from "node:fs";
8
8
  import { homedir } from "node:os";
9
9
  import { dirname, join, relative, resolve, sep } from "node:path";
@@ -1,11 +1,11 @@
1
- import { i as recordWorkspaceUse, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-BdZ-QgmB.mjs";
2
- import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-CGxrQ3Bd.mjs";
3
- import { _ as isPathPrefix$1, mt as parseDeviceSlotOption, v as loadConfig$1 } from "./config-BW0fAtoK.mjs";
4
- import { n as findCommandWorkspace } from "./project-Dqqj3IkW.mjs";
1
+ import { i as recordWorkspaceUse, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-DOPXG2Gp.mjs";
2
+ import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-ByEmIwur.mjs";
3
+ import { _ as isPathPrefix$1, ht as parseDeviceSlotOption, v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
4
+ import { n as findCommandWorkspace } from "./project-BCtQz48d.mjs";
5
5
  import { n as SOURCES$1, t as LEVELS$1 } from "./ndjson-CrjIsGzw.mjs";
6
- import { i as followAgentActions, n as openWorkspaceLogs } from "./logs-YDMfEohb.mjs";
7
- import { t as errorDiagnostics } from "./error-diagnostics-D6wlK-yX.mjs";
8
- import { n as followHostedLogs } from "./hosted-logs-sync-DfUJ2GpF.mjs";
6
+ import { i as followAgentActions, n as openWorkspaceLogs } from "./logs-DAjxBF3c.mjs";
7
+ import { t as errorDiagnostics } from "./error-diagnostics-CXTT3bYC.mjs";
8
+ import { n as followHostedLogs } from "./hosted-logs-sync-uWSrH2mf.mjs";
9
9
  import { t as watchStdoutReader } from "./stdout-reader-C8yjre1x.mjs";
10
10
  import { realpathSync } from "node:fs";
11
11
  import { relative, sep } from "node:path";