stim 1.20.2 → 1.22.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 (231) hide show
  1. package/README.md +141 -8
  2. package/dist/acquire-artifact-Co2k4f7O.mjs +171 -0
  3. package/dist/act-DsuqEkiM.mjs +2801 -0
  4. package/dist/activity-CMLmzp7o.mjs +1397 -0
  5. package/dist/{agent-device-usage-output-Dzgv6lgR.mjs → agent-device-usage-output-DUFaTMdd.mjs} +23 -67
  6. package/dist/{android-DCKZrNvV.mjs → android-ByRMUoiJ.mjs} +157 -93
  7. package/dist/{android-Mz_Inn3w.mjs → android-C7sVmyI9.mjs} +299 -116
  8. package/dist/{android-Dlzxshgp.mjs → android-DGkNqa_c.mjs} +5 -5
  9. package/dist/{android-HqP1_vB_.mjs → android-DR5lZ2Az.mjs} +2 -2
  10. package/dist/android-cas-compiler.mjs +2 -2
  11. package/dist/{android-cas-Bl-cLJBk.mjs → android-cas-ngferVq2.mjs} +7 -6
  12. package/dist/android-project-BCAAmMwz.mjs +12 -0
  13. package/dist/android-project-DVWyCbWU.d.mts +391 -0
  14. package/dist/api.d.mts +810 -64
  15. package/dist/api.mjs +782 -1
  16. package/dist/{artifact-HSwkIWEQ.mjs → artifact-8EY8SAPw.mjs} +240 -213
  17. package/dist/{artifact-D3czlUvT.mjs → artifact-DJPy518Y.mjs} +203 -164
  18. package/dist/artifact-platform-CXcmX_j3.mjs +27 -0
  19. package/dist/{browser-web-CA-F1GQo.mjs → browser-web-Bcv99PBM.mjs} +194 -64
  20. package/dist/budget-Cvwn54qV.mjs +9285 -0
  21. package/dist/{build-DYDbfkk5.mjs → build-CabC3G23.mjs} +153 -98
  22. package/dist/build-cache-Dv7RN200.mjs +602 -0
  23. package/dist/build-plan-DUC8Ka9y.mjs +248 -0
  24. package/dist/{cache-manifest-XH-fvDUj.mjs → cache-manifest-DSeQjt-Q.mjs} +2 -2
  25. package/dist/cache-manifest.mjs +1 -1
  26. package/dist/{ccache-zdKiYQ3E.mjs → ccache-Btwc36-I.mjs} +10 -9
  27. package/dist/{cdp-Dq_ypAlJ.mjs → cdp-3fwICjzi.mjs} +18 -5
  28. package/dist/{chrome-BnzZMqsR.mjs → chrome-Bbw689-6.mjs} +7 -4
  29. package/dist/{cli-CLP3diBm.mjs → cli-CHZa9Lvk.mjs} +20 -20
  30. package/dist/cli.mjs +1 -1
  31. package/dist/client-OyRoEuSr.mjs +1577 -0
  32. package/dist/collector-run.d.mts +4 -40
  33. package/dist/collector-run.mjs +9 -8
  34. package/dist/{command-output-BTy8hZ0F.mjs → command-output-gwpm28fu.mjs} +1 -1
  35. package/dist/config-DlrsduwG.mjs +955 -0
  36. package/dist/{created-devices-Dzd5C2LF.mjs → created-devices-x9rN6bhs.mjs} +14 -4
  37. package/dist/{dependency-state-DG0p31-y.mjs → dependency-state-1I9KZT1Y.mjs} +20 -5
  38. package/dist/{detached-entry-B9C_zeQC.mjs → detached-entry-BwNEtIrP.mjs} +1 -1
  39. package/dist/{dev-client-DAWVIGBu.mjs → dev-client-BSDR5h3F.mjs} +2 -2
  40. package/dist/{device-BECOiufl.mjs → device-B-L3Fbxy.mjs} +91 -34
  41. package/dist/device-DklWZLqb.mjs +1068 -0
  42. package/dist/{device-capacity-CBUAcRyQ.mjs → device-capacity-DK5_EwRS.mjs} +42 -13
  43. package/dist/device-host-worker.mjs +76 -79
  44. package/dist/{device-ios-COSi6oS1.mjs → device-ios-DoB6KFCO.mjs} +77 -51
  45. package/dist/{device-lease-run-Cw2M4z51.mjs → device-lease-run-xJPQ_QQG.mjs} +14 -26
  46. package/dist/{device-pool-Bf-pOhSw.mjs → device-pool-BMkdsefq.mjs} +5 -5
  47. package/dist/{doctor-kfMBnUw6.mjs → doctor-Bo7BXLux.mjs} +271 -320
  48. package/dist/{doctor-CB8oZKCk.mjs → doctor-D5_EzwfA.mjs} +186 -91
  49. package/dist/doctor-fingerprint-DZLoYFVb.mjs +16 -0
  50. package/dist/doctor-fingerprint.mjs +19 -0
  51. package/dist/doctor-thjWAV0z.mjs +2 -0
  52. package/dist/{doctor-watchman-BRyV2adA.mjs → doctor-watchman-N2wDotwQ.mjs} +40 -21
  53. package/dist/{eas-build-JyfqyHfC.mjs → eas-build-CwknaQYj.mjs} +53 -20
  54. package/dist/{build-plan-B7SZsc2N.mjs → eas-fallback-CSgAulr5.mjs} +41 -214
  55. package/dist/{watchman-CPQFZLXY.mjs → eas-session-ledger-DlY_serQ.mjs} +230 -11
  56. package/dist/{error-diagnostics-BR677IDM.mjs → error-diagnostics-DBWO2rxE.mjs} +172 -82
  57. package/dist/exec-DEoAhcze.mjs +858 -0
  58. package/dist/exec-DnYc4HGH.d.mts +78 -0
  59. package/dist/{gc-qWOMdnER.mjs → gc-CXxN-4SE.mjs} +1091 -1029
  60. package/dist/gc-DnNDQyaP.mjs +3 -0
  61. package/dist/{guide-G9cAbVAc.mjs → guide-Br0LEfKy.mjs} +1165 -297
  62. package/dist/{hosted-android-C3MHGld1.mjs → hosted-android-B-9f-jkd.mjs} +10 -8
  63. package/dist/{hosted-client-ZEKpS9vw.mjs → hosted-client-DZAPrcro.mjs} +34 -19
  64. package/dist/{hosted-ios-l-o3iM9J.mjs → hosted-ios-CsCS21hn.mjs} +1 -1
  65. package/dist/{hosted-logs-EzQM7-3Z.mjs → hosted-logs-FIRx9X2f.mjs} +77 -43
  66. package/dist/{hosted-macos-BACVAVqE.mjs → hosted-macos-_awYSpfv.mjs} +35 -22
  67. package/dist/{hosted-native-A4s1QPXe.mjs → hosted-native-BdzE668-.mjs} +49 -27
  68. package/dist/idle-C4cZ757K.d.mts +24 -0
  69. package/dist/{idle-shutdown-DtxhPTKe.mjs → idle-shutdown-DDg3SdvY.mjs} +11 -10
  70. package/dist/ios-CDvlmUs7.d.mts +24 -0
  71. package/dist/{ios-BwVCF7oA.mjs → ios-Ds1clbIt.mjs} +8 -8
  72. package/dist/{ios-device-D7pi2Sca.mjs → ios-device--h_-8ENa.mjs} +51 -26
  73. package/dist/{ios-device-B5veSDDQ.mjs → ios-device-BXZ0c7Kb.mjs} +1 -1
  74. package/dist/{ios-RkW4pnQf.mjs → ios-hcBpnEGk.mjs} +200 -93
  75. package/dist/{ios-Ce7bc7br.mjs → ios-pm4nL6By.mjs} +160 -108
  76. package/dist/{ios-project-K9hY_Jab.mjs → ios-project-CZhKODF3.mjs} +13 -13
  77. package/dist/ios-signing-BtAffm0A.mjs +489 -0
  78. package/dist/{ios-state-CBLe1xYw.mjs → ios-state-Dtw5K2aI.mjs} +1 -1
  79. package/dist/{ios-nOLJGVdy.mjs → ios-xtlRHaeB.mjs} +1 -1
  80. package/dist/{js-swap-Bb3nsS07.mjs → js-swap-Bwhh4S7V.mjs} +30 -25
  81. package/dist/{launch-C3qJ6Agb.mjs → launch-BjxemNpK.mjs} +85 -543
  82. package/dist/{launch-F4sOqAhB.mjs → launch-CCzXlc8r.mjs} +91 -90
  83. package/dist/logs-BfwwadsZ.mjs +479 -0
  84. package/dist/logs-jTS_lHSo.mjs +248 -0
  85. package/dist/{macos-D7uDvO-z.mjs → macos-DVlSSyUg.mjs} +1 -1
  86. package/dist/macos-NfV2D7dO.mjs +694 -0
  87. package/dist/macos-run.mjs +1 -1
  88. package/dist/maintenance-run.mjs +123 -248
  89. package/dist/{metro-DnCEjCxs.mjs → metro-DiXtA3Ty.mjs} +107 -30
  90. package/dist/metro-gateway-CKZqKqx7.mjs +209 -0
  91. package/dist/{named-ports-4WopRPg-.mjs → named-ports-DkEzOfzO.mjs} +42 -90
  92. package/dist/native-android-CqgnOgsT.mjs +645 -0
  93. package/dist/native-gradle-artifact-inputs-DHFnmrVf.mjs +270 -0
  94. package/dist/native-gradle-inputs-Dnh84Zbd.mjs +211 -0
  95. package/dist/native-inputs-TRTTTRxt.mjs +91 -0
  96. package/dist/native-run-NwUuxbkg.mjs +276 -0
  97. package/dist/{native-runtime-k8dTIrbK.mjs → native-runtime-B7KIafpM.mjs} +11 -9
  98. package/dist/native-source-Y0yLhFyQ.mjs +133 -0
  99. package/dist/{native-xcode-inputs-CykopJdM.mjs → native-xcode-inputs-D_VOfFL7.mjs} +26 -18
  100. package/dist/{native-xcode-ios-Bbf30Gm0.mjs → native-xcode-ios-BYDOHWLN.mjs} +104 -60
  101. package/dist/{ndjson-GOnbyvso.mjs → ndjson-CgE_o3Dl.mjs} +3 -3
  102. package/dist/offload-worker.d.mts +59 -41
  103. package/dist/offload-worker.mjs +478 -115
  104. package/dist/operation-exec-BW0em61G.mjs +171 -0
  105. package/dist/{ownership-DCtw_2IA.mjs → ownership-C5fo5Edb.mjs} +3 -3
  106. package/dist/{page-DRHy329N.mjs → page-DBL2PiUU.mjs} +12 -5
  107. package/dist/paths-BsJMoPP2.mjs +12 -0
  108. package/dist/paths-DQtTgsBf.mjs +42 -0
  109. package/dist/{placement-log-MOfPVgaM.mjs → placement-log-BnGgJRRZ.mjs} +5 -5
  110. package/dist/{plan-placement-V0TdzYXp.mjs → plan-placement-DIsMtN-d.mjs} +15 -11
  111. package/dist/{ports-DdSUicVo.mjs → ports-Cy1RkmuQ.mjs} +3 -3
  112. package/dist/prebuild-D4JoEAEs.mjs +484 -0
  113. package/dist/{project-_phNIJfs.mjs → project-wM_XFTvE.mjs} +65 -37
  114. package/dist/{pull-request-CQ8sPbZa.mjs → pull-request-W1IuLXDt.mjs} +102 -20
  115. package/dist/pull-request-eODyIqZF.d.mts +124 -0
  116. package/dist/pull-requests.d.mts +2 -120
  117. package/dist/pull-requests.mjs +2 -2
  118. package/dist/{react-native-android-CM1XRDwv.mjs → react-native-android-6OZ7MSM7.mjs} +121 -72
  119. package/dist/{gradle-DSrXb6lG.mjs → react-native-build-Dvd8hC21.mjs} +292 -15
  120. package/dist/react-native-doctor-DsoSF1Y9.mjs +234 -0
  121. package/dist/{react-native-ios-Dhq_eiYQ.mjs → react-native-ios-4u1Rn-GR.mjs} +71 -39
  122. package/dist/{recordings-D0d5aQt0.mjs → recordings-CQmfzAh7.mjs} +12 -9
  123. package/dist/registration-BcRgF6Ox.mjs +51 -0
  124. package/dist/{reload-C8JhxjSh.mjs → reload-BzkYabB-.mjs} +94 -47
  125. package/dist/reload-D7AVlb8N.mjs +2 -0
  126. package/dist/{remote-BiR6aYjy.mjs → remote-DjGDmlTZ.mjs} +26 -18
  127. package/dist/result-D2Ykz_iD.mjs +435 -0
  128. package/dist/{run-BtPgpKks.mjs → run-DidHghD1.mjs} +5 -5
  129. package/dist/selection-DSMbWEX2.mjs +620 -0
  130. package/dist/{server-bare-R2m_gsH8.mjs → server-bare-CafzuyFB.mjs} +3 -4
  131. package/dist/{server-command-CTtCkmcQ.mjs → server-command-C6QjeupS.mjs} +14 -7
  132. package/dist/{server-expo-DsguMGUF.mjs → server-expo-CrjB29pq.mjs} +54 -11
  133. package/dist/server-expo-D58c9L0M.mjs +2 -0
  134. package/dist/{settings-B717odTD.mjs → settings-C7O8A6ZI.mjs} +309 -119
  135. package/dist/settings-DpR-1Wnn.mjs +114 -0
  136. package/dist/settings-write-CzD60rOD.mjs +360 -0
  137. package/dist/settings.schema.json +176 -16
  138. package/dist/{simslim-CCr3rE-A.mjs → simslim-BNckWpXi.mjs} +14 -12
  139. package/dist/{slot-launch-DPt0m9Nd.mjs → slot-launch-CbfmNgM6.mjs} +15 -20
  140. package/dist/{spawn-entry-Dcb7sDUz.mjs → spawn-entry-jw19m8Nl.mjs} +0 -1
  141. package/dist/stage-Bps5oius.mjs +200 -0
  142. package/dist/{start-TXeMmmO2.mjs → start-Br-oxqMD.mjs} +1 -1
  143. package/dist/start-EojN4WFz.mjs +1364 -0
  144. package/dist/{state-D1Icyjlu.mjs → state--smjFSTL.mjs} +55 -13
  145. package/dist/{state-CG_OFoaA.mjs → state-08I3hw3_.mjs} +3 -2
  146. package/dist/{stats-BoY5sEPU.mjs → stats-D3GerlFW.mjs} +7 -13
  147. package/dist/stats-report-BzaPrRm6.mjs +16 -0
  148. package/dist/{status-BTA7kKiQ.mjs → status-BRROykC8.mjs} +7 -5
  149. package/dist/status-EvrK72L2.mjs +2 -0
  150. package/dist/{status-WgFbkRzj.mjs → status-WBDajew2.mjs} +554 -452
  151. package/dist/{status-watch-C23ILtf9.mjs → status-watch-Bg_u-pwR.mjs} +222 -25
  152. package/dist/status-worker.d.mts +1 -0
  153. package/dist/status-worker.mjs +19 -0
  154. package/dist/stim-desktop-D5OGpYZM.mjs +112 -0
  155. package/dist/{stop-DR6VoDIk.mjs → stop-DTZ9uTw3.mjs} +2 -2
  156. package/dist/{stop-DPEhunlw.mjs → stop-Dky10AEJ.mjs} +33 -23
  157. package/dist/{stop-BNmBMi1F.mjs → stop-Mv6W9FAk.mjs} +137 -98
  158. package/dist/supervisor-run.d.mts +8 -17
  159. package/dist/supervisor-run.mjs +56 -28
  160. package/dist/{support-CwjbFs9H.mjs → support-CNioewsd.mjs} +14 -14
  161. package/dist/{support-DMTqj3Hm.mjs → support-yUiOjnVY.mjs} +20 -13
  162. package/dist/swiftpm-artifact-inputs-DFcGsXDP.mjs +153 -0
  163. package/dist/swiftpm-macos-BIak-Rxv.mjs +532 -0
  164. package/dist/toolchain-BY8X8HXx.mjs +2 -0
  165. package/dist/toolchain-DpJMHq0n.mjs +876 -0
  166. package/dist/{trigger-CigAYjeL.mjs → trigger-Cbyc41d_.mjs} +21 -6
  167. package/dist/trigger-yb_nFzPF.mjs +2 -0
  168. package/dist/{warm-progress-BuY-Fvfn.mjs → warm-progress-CA3TgT3-.mjs} +263 -156
  169. package/dist/web-CZ07gd77.mjs +2 -0
  170. package/dist/{web-BDBMxDpx.mjs → web-DKx6yoFA.mjs} +20 -14
  171. package/dist/web-run.mjs +13 -12
  172. package/dist/windows-report.d.mts +1 -0
  173. package/dist/windows-report.mjs +18 -0
  174. package/dist/windows-report.ps1 +43 -0
  175. package/dist/{workspace-state-DJt_MMvf.mjs → workspace-state-U08dEzhG.mjs} +62 -58
  176. package/dist/{workspaces-C36s2jb9.mjs → workspaces-CpANmBlq.mjs} +1723 -1286
  177. package/dist/{worktree-CgvJYJ-Q.mjs → worktree-CHecZ4Oq.mjs} +1097 -547
  178. package/dist/worktree-ZqZVjD9K.mjs +2 -0
  179. package/dist/xcode-BXn9-xYx.mjs +896 -0
  180. package/package.json +7 -5
  181. package/shim/android-audio/Main.java +24 -0
  182. package/shim/android-audio/README.md +17 -0
  183. package/shim/android-audio.jar +0 -0
  184. package/shim/android-optimizations.gradle +7 -5
  185. package/dist/activity-BSV745Kz.mjs +0 -629
  186. package/dist/api-qvOzWyfO.mjs +0 -154
  187. package/dist/api-run.mjs +0 -294
  188. package/dist/app-install-BIKtMfPq.mjs +0 -896
  189. package/dist/artifact-lifecycle-DzPpBYvK.mjs +0 -30
  190. package/dist/budget-f7516Zk0.mjs +0 -4106
  191. package/dist/build-facts-DcLv2HSd.d.mts +0 -111
  192. package/dist/cancellation-C_22VQTH.mjs +0 -24
  193. package/dist/client-qQAaXSUs.mjs +0 -1771
  194. package/dist/config-BYDxlMY3.mjs +0 -562
  195. package/dist/device-DuiPJQSn.mjs +0 -290
  196. package/dist/device-lease-BX1sJQ2E.mjs +0 -1224
  197. package/dist/device-remote-xRT0Vmo9.mjs +0 -1272
  198. package/dist/eas-session-ledger-Cm0Gwq2F.mjs +0 -207
  199. package/dist/exec-DqKo9GKJ.mjs +0 -268
  200. package/dist/git-DDfFzkMm.mjs +0 -45
  201. package/dist/launch-verify-B6Q8hZP-.mjs +0 -428
  202. package/dist/logs-BGrEUaEs.mjs +0 -383
  203. package/dist/macos-Ch5VJmcS.mjs +0 -584
  204. package/dist/metro-gateway-CX9Xlkq2.mjs +0 -103
  205. package/dist/miss-reason-mKzZ4VvN.mjs +0 -238
  206. package/dist/native-android-D5qc3-_v.mjs +0 -226
  207. package/dist/native-gradle-inputs-BsLRrl7u.mjs +0 -349
  208. package/dist/ndjson-Du3j0AQ9.d.mts +0 -17
  209. package/dist/plan-C4TjdPsR.mjs +0 -260
  210. package/dist/prebuild-DYbucPXy.mjs +0 -212
  211. package/dist/preview-78a9kR_-.mjs +0 -1011
  212. package/dist/react-native-build-CtCccJtb.mjs +0 -239
  213. package/dist/react-native-doctor-CfRnFfjs.mjs +0 -78
  214. package/dist/remote-cache-OyOyVIS3.mjs +0 -526
  215. package/dist/result-CaJg5Iat.mjs +0 -186
  216. package/dist/server-expo-Bigriskl.mjs +0 -2
  217. package/dist/settings-BORNaaCO.mjs +0 -402
  218. package/dist/settings-vk3mJGSm.d.mts +0 -13
  219. package/dist/spawn-claims-DVS5RkMS.mjs +0 -72
  220. package/dist/stage-KNTQopqv.mjs +0 -157
  221. package/dist/start-BWqzODpb.mjs +0 -1116
  222. package/dist/stim-desktop-BzBN2Em2.mjs +0 -63
  223. package/dist/swiftpm-macos-DRNVJWlb.mjs +0 -119
  224. package/dist/tailnet-Dh-qiYzG.mjs +0 -265
  225. package/dist/toolchain-BFkAcstd.mjs +0 -2
  226. package/dist/toolchain-DxSsNssu.mjs +0 -1657
  227. package/dist/trigger-9_USgmxz.mjs +0 -2
  228. package/dist/web-Dq-i3wzJ.mjs +0 -2
  229. package/dist/worktree-DpLdCHga.mjs +0 -2
  230. package/dist/{api-run.d.mts → doctor-fingerprint.d.mts} +0 -0
  231. package/dist/{errors-DzkMYh8Q.mjs → errors-ccaPc4ox.mjs} +2 -2
@@ -1,25 +1,24 @@
1
- import { B as deviceSlotKey, C as saveConfig, D as withConfigLock, E as upsertProject, N as formatBytes, V as deviceSlotPlatforms, _ as loadConfig, w as setDevice, z as deviceSlotFileKey } from "./config-BYDxlMY3.mjs";
2
- import { t as spawnEntry } from "./spawn-entry-Dcb7sDUz.mjs";
3
- import { j as providerUploadOutcome } from "./device-lease-BX1sJQ2E.mjs";
4
- import { w as workspaceLogsDir } from "./workspace-state-DJt_MMvf.mjs";
5
- import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-BTy8hZ0F.mjs";
6
- import { I as workspaceDevServerMode } from "./project-_phNIJfs.mjs";
7
- import { a as workspaceLinks } from "./stim-desktop-BzBN2Em2.mjs";
8
- import { $ as trimAndroidCaches, i as androidDataFreeBytes, q as resetAdoptedAvd, u as androidToolCwd } from "./android-Mz_Inn3w.mjs";
9
- import { d as signalProcessTree, s as pidExists } from "./metro-DnCEjCxs.mjs";
10
- import { v as teardownOwnedAvd } from "./workspaces-C36s2jb9.mjs";
11
- import { o as exitAfterFlush } from "./remote-cache-OyOyVIS3.mjs";
12
- import { a as VERIFY_TIMEOUT_MS, i as RELEASE_VERIFY_WAIT_MS, l as unattributedLaunchLines, n as LAUNCH_FATAL, r as LAUNCH_UNVERIFIED, t as LAUNCH_BUNDLING, u as unverifiedLaunchLines } from "./launch-verify-B6Q8hZP-.mjs";
13
- import { C as restartedAppNote, _ as installConflictKind, c as androidDevClientUrl, s as androidAppProcess, t as ADB_INSTALL_TIMEOUT_MS } from "./app-install-BIKtMfPq.mjs";
14
- import { i as launchOutcomeRecord } from "./native-runtime-k8dTIrbK.mjs";
15
- import { a as PLATFORM, b as noDeviceDiagnostic, h as displayPath, n as LAUNCH_FAILED, r as NO_DEVICE, t as INSTALL_FAILED } from "./support-DMTqj3Hm.mjs";
16
- import { c as lostRefusal, s as lostLine, t as DEBUG_VERIFY_STEP_MS } from "./device-lease-run-Cw2M4z51.mjs";
17
- import { a as reportAndroidResult, i as persistLastBuild, n as finishAndroidUpload } from "./result-CaJg5Iat.mjs";
18
- import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-DPt0m9Nd.mjs";
19
- import { n as verifyCollectorOwnership, r as readCollectors } from "./ownership-DCtw_2IA.mjs";
20
- import { a as printNativeCrashReport, r as captureNativeCrashes, t as errorDiagnostics } from "./error-diagnostics-BR677IDM.mjs";
1
+ import { m as workspaceLogsDir } from "./paths-DQtTgsBf.mjs";
2
+ import { B as deviceSlotFileKey, C as saveConfig, E as upsertProject, H as deviceSlotPlatforms, O as withConfigLockAsync, P as formatBytes, V as deviceSlotKey, _ as loadConfig, w as setDevice } from "./config-DlrsduwG.mjs";
3
+ import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-gwpm28fu.mjs";
4
+ import { L as workspaceDevServerMode } from "./project-wM_XFTvE.mjs";
5
+ import { c as pidExists, f as signalProcessTree } from "./metro-DiXtA3Ty.mjs";
6
+ import { En as restartedAppNote, Jt as LAUNCH_FATAL, Xt as RELEASE_VERIFY_WAIT_MS, Yt as LAUNCH_UNVERIFIED, Zt as VERIFY_TIMEOUT_MS, bn as installConflictKind, dn as androidAppProcess, fn as androidDevClientUrl, nn as unverifiedLaunchLines, qt as LAUNCH_BUNDLING, sn as ADB_INSTALL_TIMEOUT_MS, tn as unattributedLaunchLines } from "./budget-Cvwn54qV.mjs";
7
+ import { D as teardownOwnedAvd } from "./workspaces-CpANmBlq.mjs";
8
+ import { p as providerUploadOutcome } from "./build-cache-Dv7RN200.mjs";
9
+ import { $ as resetAdoptedAvd, i as androidDataFreeBytes, it as trimAndroidCaches, u as androidToolCwd } from "./android-C7sVmyI9.mjs";
10
+ import { o as workspaceLinks } from "./stim-desktop-D5OGpYZM.mjs";
11
+ import { n as verifyCollectorOwnership, r as readCollectors } from "./ownership-C5fo5Edb.mjs";
12
+ import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-CbfmNgM6.mjs";
13
+ import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
14
+ import { c as lostRefusal, s as lostLine, t as DEBUG_VERIFY_STEP_MS } from "./device-lease-run-xJPQ_QQG.mjs";
15
+ import { a as printNativeCrashReport, r as captureNativeCrashes, t as errorDiagnostics } from "./error-diagnostics-DBWO2rxE.mjs";
16
+ import { i as launchOutcomeRecord } from "./native-runtime-B7KIafpM.mjs";
17
+ import { a as PLATFORM, b as noDeviceDiagnostic, h as displayPath, n as LAUNCH_FAILED, r as NO_DEVICE, t as INSTALL_FAILED } from "./support-yUiOjnVY.mjs";
18
+ import { a as reportAndroidResult, i as persistLastBuild, n as finishAndroidUpload } from "./result-D2Ykz_iD.mjs";
21
19
  import { mkdirSync, openSync, statSync } from "node:fs";
22
20
  import { basename, join } from "node:path";
21
+ import { ambientEnv } from "@stim-cli/core";
23
22
  import chalk from "chalk";
24
23
  //#region src/commands/android/collector.ts
25
24
  function collectorEntry() {
@@ -91,7 +90,7 @@ async function startCollector({ root, slot = "default", serial, packageName, spa
91
90
  cwd: androidToolCwd() ?? root,
92
91
  detached: true,
93
92
  stdio,
94
- env: process.env
93
+ env: ambientEnv()
95
94
  });
96
95
  child?.unref?.();
97
96
  return child?.pid ?? null;
@@ -154,7 +153,7 @@ function androidMetroRuntime(prepare) {
154
153
  })
155
154
  };
156
155
  }
157
- async function verifyAndroidProcessRun({ root, slot, remoteDevice, verifyReleaseLaunched, serial, androidPackage, variant, logsDir, launchedAt, phase, embeddedJavaScript }) {
156
+ async function verifyAndroidProcessRun({ operation, root, slot, remoteDevice, verifyReleaseLaunched, serial, androidPackage, variant, logsDir, launchedAt, phase, embeddedJavaScript }) {
158
157
  const readNativeCrashes = () => remoteDevice ? [] : captureNativeCrashes({
159
158
  root,
160
159
  slot,
@@ -162,7 +161,7 @@ async function verifyAndroidProcessRun({ root, slot, remoteDevice, verifyRelease
162
161
  deviceId: serial,
163
162
  appId: androidPackage,
164
163
  since: launchedAt
165
- }, logsDir);
164
+ }, logsDir, operation?.signal, operation?.env);
166
165
  if (remoteDevice) {
167
166
  phase("verify", chalk.yellow("UNVERIFIED: remote adapter launch accepted; process verification is unavailable"));
168
167
  return { state: LAUNCH_UNVERIFIED };
@@ -171,9 +170,9 @@ async function verifyAndroidProcessRun({ root, slot, remoteDevice, verifyRelease
171
170
  serial,
172
171
  packageName: androidPackage
173
172
  });
174
- const crashes = readNativeCrashes();
173
+ const crashes = await readNativeCrashes();
175
174
  if (processCheck?.verified && !crashes.length) {
176
- phase("verify", `process alive ${formatDuration(processCheck.waitedMs ?? 0)} after launch (${variant}: no bundle fetch to observe)`);
175
+ phase("verify", `process alive ${formatDuration(processCheck.waitedMs ?? 0)} after launch (${variant ?? "debug"}: no bundle fetch to observe)`);
177
176
  return { state: true };
178
177
  }
179
178
  if (processCheck?.reason === "probe-failed" && !crashes.length) {
@@ -186,7 +185,7 @@ async function verifyAndroidProcessRun({ root, slot, remoteDevice, verifyRelease
186
185
  phase("", chalk.yellow(`${embeddedJavaScript ? "A release process" : "The app process"} exited before readiness. Run \`stim logs --errors\` for captured crash reports, or \`stim logs --source device\` for the full device output.`));
187
186
  return { state: LAUNCH_FATAL };
188
187
  }
189
- async function verifyAndroidMetroRun({ root, slot, remoteDevice, verifyLaunched, serial, androidPackage, metroCheck, logsDir, launchedAt, metroPort, isExpo, physical, device, scheme, component = null, phase, enterActivity }) {
188
+ async function verifyAndroidMetroRun({ operation, root, slot, remoteDevice, verifyLaunched, serial, androidPackage, metroCheck, logsDir, launchedAt, metroPort, isExpo, physical, device, scheme, component = null, phase, enterActivity }) {
190
189
  const runCommand = nativeRunCommand("android", slot, {
191
190
  physical,
192
191
  deviceId: serial
@@ -198,11 +197,11 @@ async function verifyAndroidMetroRun({ root, slot, remoteDevice, verifyLaunched,
198
197
  deviceId: serial,
199
198
  appId: androidPackage,
200
199
  since: launchedAt
201
- }, logsDir);
200
+ }, logsDir, operation?.signal, operation?.env);
202
201
  const freshEmulator = Boolean((device.created || device.adoptionPending) && device.owned && !remoteDevice);
203
202
  const timeoutMs = freshEmulator ? 6e4 : VERIFY_TIMEOUT_MS;
204
203
  if (metroCheck && freshEmulator) phase("verify", `waiting up to 60s for bundle load (${device.created ? "new" : "adopted"} emulator)`);
205
- const siblings = metroCheck ? siblingPlatformSlots(root, "android", slot) : [];
204
+ const siblings = metroCheck ? await siblingPlatformSlots(root, "android", slot) : [];
206
205
  const verification = metroCheck ? await verifyLaunched({
207
206
  timeoutMs,
208
207
  requireBundleResponse: true,
@@ -216,15 +215,15 @@ async function verifyAndroidMetroRun({ root, slot, remoteDevice, verifyLaunched,
216
215
  platform: "android",
217
216
  mode: workspaceDevServerMode(root, isExpo),
218
217
  readNativeCrashes,
219
- processAlive: () => {
220
- const running = androidAppProcess(serial, androidPackage);
218
+ processAlive: async () => {
219
+ const running = await androidAppProcess(serial, androidPackage);
221
220
  return running.state === "unknown" ? null : running.state === "running";
222
221
  }
223
222
  }) : {
224
223
  verified: false,
225
224
  skipped: true
226
225
  };
227
- const nativeCrashes = verification.errors?.some((record) => record.event === "native_crash") ? [] : readNativeCrashes();
226
+ const nativeCrashes = verification.errors?.some((record) => record.event === "native_crash") ? [] : await readNativeCrashes();
228
227
  if (nativeCrashes.length) verification.fatal = true;
229
228
  verification.errors = await errorDiagnostics([...verification.errors ?? [], ...nativeCrashes], {
230
229
  root,
@@ -304,7 +303,7 @@ async function wipeAdoptedAvd(room, free) {
304
303
  room.phase("device", chalk.yellow(`${room.avdName} has ${free === null ? "too little space" : `${formatBytes(free)} free`} on /data after removing other apps and trimming caches; wiping its user data`));
305
304
  const expectedRecord = deviceSlotPlatforms(loadConfig()?.projects?.[room.root], room.slot)?.android;
306
305
  if (!expectedRecord?.adoptionPending || expectedRecord.avdName !== room.avdName) throw new Error("the emulator assignment changed before the wipe; its data was kept");
307
- const wiped = room.wipeDevice(room.avdName, {
306
+ const wiped = await room.wipeDevice(room.avdName, {
308
307
  wipe: true,
309
308
  owner: {
310
309
  projectPath: room.root,
@@ -316,7 +315,7 @@ async function wipeAdoptedAvd(room, free) {
316
315
  if (wiped.status !== "torn-down") throw new Error(`could not wipe it: ${wiped.reason ?? wiped.status}`);
317
316
  const rebooted = await room.rebootDevice();
318
317
  if (!rebooted.ok || !rebooted.serial) throw new Error(`it did not boot after its user data was wiped: ${rebooted.reason ?? "no serial"}`);
319
- if (room.resolveAvdSerial(room.avdName).serial !== rebooted.serial) throw new Error(`${rebooted.serial} is not running ${room.avdName} after the wipe`);
318
+ if ((await room.resolveAvdSerial(room.avdName)).serial !== rebooted.serial) throw new Error(`${rebooted.serial} is not running ${room.avdName} after the wipe`);
320
319
  room.phase("device", `${room.avdName} (${rebooted.serial}) booted with wiped user data`);
321
320
  return rebooted.serial;
322
321
  }
@@ -326,45 +325,45 @@ async function installOnAdoptedAvd(room, serial, installApk) {
326
325
  const outOfSpace = (result) => Boolean(result.failed) && INSUFFICIENT_STORAGE.test(result.reason ?? "");
327
326
  let target = serial;
328
327
  let wiped = false;
329
- if (!roomy(room.dataFreeBytes(target))) {
330
- room.trimCaches(target, neededBytes);
331
- const free = room.dataFreeBytes(target);
328
+ if (!roomy(await room.dataFreeBytes(target))) {
329
+ await room.trimCaches(target, neededBytes);
330
+ const free = await room.dataFreeBytes(target);
332
331
  if (roomy(free)) room.phase("install", `trimmed app caches on ${room.avdName} to make room for the APK`);
333
332
  else {
334
333
  target = await wipeAdoptedAvd(room, free);
335
334
  wiped = true;
336
335
  }
337
336
  }
338
- let installed = installApk(target);
337
+ let installed = await installApk(target);
339
338
  if (wiped || !outOfSpace(installed)) return {
340
339
  serial: target,
341
340
  installed
342
341
  };
343
- room.trimCaches(target, neededBytes);
344
- installed = installApk(target);
342
+ await room.trimCaches(target, neededBytes);
343
+ installed = await installApk(target);
345
344
  if (!outOfSpace(installed)) return {
346
345
  serial: target,
347
346
  installed
348
347
  };
349
- target = await wipeAdoptedAvd(room, room.dataFreeBytes(target));
348
+ target = await wipeAdoptedAvd(room, await room.dataFreeBytes(target));
350
349
  return {
351
350
  serial: target,
352
- installed: installApk(target)
351
+ installed: await installApk(target)
353
352
  };
354
353
  }
355
354
  async function resolveInstallSerial({ root, slot, device, physical, remoteDevice, serial, resolveAvdSerial, waitForDeviceBoot, phase }) {
356
355
  if (physical || remoteDevice || !device.owned || !device.avdName) return serial;
357
- const resolved = resolveAvdSerial(device.avdName, { timeoutMs: 5e3 });
356
+ const resolved = await resolveAvdSerial(device.avdName, { timeoutMs: 5e3 });
358
357
  if (!resolved.serial) throw new Error(`Could not verify a running owned AVD ${device.avdName} before installation.`);
359
358
  if (resolved.serial !== serial) {
360
359
  phase("device", `${device.avdName} changed serial (${serial} -> ${resolved.serial}); checking readiness before installation`);
361
360
  const ready = await waitForDeviceBoot(resolved.serial, 6e4, { commandTimeoutMs: 5e3 });
362
361
  if (!ready.ok) throw new Error(`Emulator ${resolved.serial} never reported boot completion. Diagnostic: ${JSON.stringify(ready.diagnostic)}`);
363
- if (resolveAvdSerial(device.avdName, { timeoutMs: 5e3 }).serial !== resolved.serial) throw new Error(`Could not verify AVD ${device.avdName} still runs on ${resolved.serial} after checking readiness.`);
362
+ if ((await resolveAvdSerial(device.avdName, { timeoutMs: 5e3 })).serial !== resolved.serial) throw new Error(`Could not verify AVD ${device.avdName} still runs on ${resolved.serial} after checking readiness.`);
364
363
  phase("device", `reopen agent-device on ${resolved.serial}`);
365
364
  }
366
365
  const consolePort = Number(resolved.serial.replace(/^emulator-/, ""));
367
- withConfigLock(() => {
366
+ await withConfigLockAsync(() => {
368
367
  const current = deviceSlotPlatforms(loadConfig()?.projects?.[root], slot)?.android;
369
368
  if (!current?.owned || current.avdName !== device.avdName) throw new Error("The owned emulator assignment changed before installation.");
370
369
  if (current.consolePort !== consolePort) setDevice(root, PLATFORM, {
@@ -374,7 +373,8 @@ async function resolveInstallSerial({ root, slot, device, physical, remoteDevice
374
373
  });
375
374
  return resolved.serial;
376
375
  }
377
- async function finishAndroidRun({ 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, 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 }) {
376
+ 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, 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 }) {
377
+ const { env, signal } = operation ?? {};
378
378
  let androidPackage = initialPackage;
379
379
  let leaseWarned = false;
380
380
  const raiseLeaseFor = (boundMs, beforeInstall) => {
@@ -422,9 +422,9 @@ async function finishAndroidRun({ runtime, runtimePreparation, lease, releaseLea
422
422
  return fail(NO_DEVICE, error instanceof Error ? error.message : String(error), `Run \`stim status\` to inspect the owned AVD, then retry \`${runCommand}\`; the APK was not installed.`);
423
423
  }
424
424
  phase("device", physical ? `${device.deviceName || serial} (${serial}) connected, not owned by Stim` : `${device.avdName || serial} (${serial}) ${device.adopted || device.adoptionPending ? "adopted" : "booted"} ${bootDuration()}`);
425
- const packageFromApk = readApkPackage(apkPath);
425
+ const packageFromApk = await readApkPackage(apkPath);
426
426
  if (packageFromApk && androidPackage && packageFromApk !== androidPackage) phase("install", chalk.dim(`applicationId ${packageFromApk} (from the APK; project files say ${androidPackage})`));
427
- androidPackage = packageFromApk || androidPackage || readProjectPackage();
427
+ androidPackage = packageFromApk || androidPackage || await readProjectPackage();
428
428
  if (!androidPackage && androidPackageProblem) return fail(LAUNCH_FAILED, androidPackageProblem, packageRemedy, { lastBuildStatus: true });
429
429
  const adopting = !physical && !remoteDevice && Boolean(device.adoptionPending);
430
430
  if (adopting) {
@@ -467,7 +467,7 @@ async function finishAndroidRun({ runtime, runtimePreparation, lease, releaseLea
467
467
  } catch (error) {
468
468
  return fail(INSTALL_FAILED, `Could not make room on adopted emulator ${device.avdName}: ${String(error?.message || error)}`, `Run \`${runCommand}\` again; adoption remains pending, so it retries the cleanup.`);
469
469
  }
470
- } else installed = installApk(serial);
470
+ } else installed = await installApk(serial);
471
471
  if (installed.failed) {
472
472
  const installRemedy = remoteDevice?.failureRemedy() ?? localInstallRemedy({
473
473
  reason: installed.reason,
@@ -478,7 +478,7 @@ async function finishAndroidRun({ runtime, runtimePreparation, lease, releaseLea
478
478
  return fail(installed.code || "STIM_INSTALL_FAILED", installed.reason, installRemedy, { lastBuildStatus: true });
479
479
  }
480
480
  if (adopting) try {
481
- withConfigLock(() => {
481
+ await withConfigLockAsync(() => {
482
482
  const config = loadConfig();
483
483
  const current = deviceSlotPlatforms(config?.projects?.[root], slot)?.android;
484
484
  if (!config || !current || current.avdName !== device.avdName) throw new Error("The adopted emulator assignment changed during installation.");
@@ -503,7 +503,7 @@ async function finishAndroidRun({ runtime, runtimePreparation, lease, releaseLea
503
503
  record.bundleId = androidPackage;
504
504
  if (!androidPackage) return fail(LAUNCH_FAILED, "Could not determine this app's Android package name, so there is nothing to launch.", packageRemedy, { lastBuildStatus: true });
505
505
  if (physical) raiseLeaseFor(0, false);
506
- const scheme = runtime.scheme(root, apkPath, resolveDevClientScheme);
506
+ const scheme = await runtime.scheme(root, apkPath, resolveDevClientScheme);
507
507
  enterPhase("launch");
508
508
  const launchTimer = stepTimer(now);
509
509
  const launchedAt = now();
@@ -530,14 +530,14 @@ async function finishAndroidRun({ runtime, runtimePreparation, lease, releaseLea
530
530
  launchRelease
531
531
  });
532
532
  if (launched.failed) {
533
- printNativeCrashReport({
533
+ await printNativeCrashReport({
534
534
  root,
535
535
  slot,
536
536
  platform: "android",
537
537
  deviceId: serial,
538
538
  appId: androidPackage,
539
539
  since: launchedAt
540
- }, logsDir, (line) => phase("launch", chalk.red(line)), Boolean(remoteDevice));
540
+ }, logsDir, (line) => phase("launch", chalk.red(line)), Boolean(remoteDevice), signal, env);
541
541
  return fail(launched.code || "STIM_LAUNCH_FAILED", launched.reason, launchRemedy(remoteDevice, serial, androidPackage), { lastBuildStatus: true });
542
542
  }
543
543
  writer.write({
@@ -578,7 +578,7 @@ async function finishAndroidRun({ runtime, runtimePreparation, lease, releaseLea
578
578
  });
579
579
  }
580
580
  const uploadWasAbandoned = await finishAndroidUpload(uploadPending, remote, phase);
581
- const providerOutcome = providerUploadOutcome(providerUpload ? await providerUpload : null, providerName);
581
+ const providerOutcome = providerUploadOutcome(providerUpload ? await providerUpload : null, providerName, env);
582
582
  if (providerOutcome) phase("cache", providerOutcome.warn ? chalk.yellow(providerOutcome.line) : providerOutcome.line);
583
583
  persistLastBuild({
584
584
  recordBuild,
@@ -621,6 +621,7 @@ async function finishAndroidRun({ runtime, runtimePreparation, lease, releaseLea
621
621
  }
622
622
  if (physical) raiseLeaseFor(runtime.verificationWaitMs, false);
623
623
  const { state: launchState, warning: launchWarning, unattributed } = await runtime.verify(runtimePreparation, {
624
+ operation,
624
625
  root,
625
626
  slot,
626
627
  remoteDevice: Boolean(remoteDevice),
@@ -654,45 +655,45 @@ async function finishAndroidRun({ runtime, runtimePreparation, lease, releaseLea
654
655
  }));
655
656
  const leaseFacts = lease?.facts() ?? null;
656
657
  releaseLease();
657
- const facts = reportAndroidResult({
658
- root,
659
- slot,
660
- json,
661
- useBuildCache,
662
- variant,
663
- release,
664
- runtimeKind: runtime.kind,
665
- metroCheck,
666
- metroPort,
667
- logsDir: remoteRelease ? null : logsDir,
668
- serial,
669
- apkPath,
670
- androidPackage,
671
- installSkipped,
672
- record,
673
- waitedForBuild,
674
- remote,
675
- providerName,
676
- launchState,
677
- launchWarning,
678
- launched,
679
- ccache,
680
- durationMs: now() - started,
681
- writer,
682
- emit,
683
- lease: physical ? leaseFacts : void 0,
684
- recordRun,
685
- reclaimed,
686
- devServer,
687
- links: workspaceLinks(root, {
688
- platform: "android",
689
- slot
690
- })
691
- });
692
- if (remoteWasAbandoned || uploadWasAbandoned) exitAfterFlush(0);
693
658
  return {
694
659
  ok: true,
695
- facts
660
+ facts: reportAndroidResult({
661
+ root,
662
+ slot,
663
+ json,
664
+ useBuildCache,
665
+ variant,
666
+ release,
667
+ runtimeKind: runtime.kind,
668
+ metroCheck,
669
+ metroPort,
670
+ logsDir: remoteRelease ? null : logsDir,
671
+ serial,
672
+ apkPath,
673
+ androidPackage,
674
+ installSkipped,
675
+ record,
676
+ waitedForBuild,
677
+ remote,
678
+ providerName,
679
+ launchState,
680
+ launchWarning,
681
+ launched,
682
+ ccache,
683
+ durationMs: now() - started,
684
+ writer,
685
+ emit,
686
+ out,
687
+ lease: physical ? leaseFacts : void 0,
688
+ recordRun,
689
+ reclaimed,
690
+ devServer,
691
+ links: await workspaceLinks(root, {
692
+ platform: "android",
693
+ slot
694
+ })
695
+ }),
696
+ uploadsAbandoned: remoteWasAbandoned || uploadWasAbandoned
696
697
  };
697
698
  }
698
699
  function localInstallRemedy({ reason, packageName, serial, useBuildCache }) {