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,31 +1,31 @@
1
- import { C as operationState, b as spawnDeclared, d as throwIfCancelled, r as reportSignal, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { r as readWorkspaceState } from "./workspace-state-BdZ-QgmB.mjs";
1
+ import { C as operationState, b as spawnDeclared, d as throwIfCancelled, r as reportSignal, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { r as readWorkspaceState } from "./workspace-state-DOPXG2Gp.mjs";
3
3
  import { r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
4
- import { i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-CGxrQ3Bd.mjs";
5
- import { _t as validateDeviceSlot, ft as deviceSlotPlatforms, m as getProject } from "./config-BW0fAtoK.mjs";
6
- import { a as killOnAbort, t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
7
- import { B as publicUrlSetting, H as realpathInside, W as remoteEasFallbackSetting, an as makeTemporaryDirectory, at as settingsLayers, m as defaultAndroidLayout, nt as settingOriginScope, on as removeTemporaryEntry, ot as tunnelModeSetting, q as resolveAndroidLayout } from "./settings-B5IBDfTx.mjs";
8
- import { v as detectIsExpo } from "./project-Dqqj3IkW.mjs";
9
- import { J as ownedAvdSystemImage, O as findBuildTool, R as listAvdsAsync, U as ownedAvdDirectory, l as androidSystemImageAbi, r as androidBuildToolName, z as listInstalledSystemImages } from "./android-Iq0M2t2d.mjs";
10
- import { Jn as checkEasAuth, O as resolveCcache, Un as processContext, Zn as loadProjectProvider, ir as bundleInvocation, nr as resolveRemote } from "./device-capacity-C0PiTyRb.mjs";
11
- import { lt as statsProjectKey } from "./workspaces-CY3KSdC0.mjs";
12
- import { K as tailLines, M as HEARTBEAT_INTERVAL_MS, W as startBuildHeartbeat, r as androidToolchainAsync, t as androidRequirements } from "./toolchain-DRQyCvlp.mjs";
13
- import { E as storeBuild, F as compareAssetManifests, I as readAssetManifest, M as untrackedNativeFiles, N as assetDiffReason, O as storedAssetManifest, P as captureAssetManifest, T as resolveBuild, _ as gitignoredFingerprintInputs, g as fingerprintProject, j as untrackedMissLine, m as fingerprintDiffRecord, n as buildCacheKey, o as configInputsChanged, p as filesystemBuildCapability, r as changedDuringBuildLine, w as refingerprintAfterMutation, y as inputsChangedDuringBuild } from "./build-cache-_fkewiwH.mjs";
14
- import { s as expoTelemetryEnv, t as cleanLine } from "./server-expo-CjQwxvIi.mjs";
15
- import { c as readProductFlavors, h as androidPathRoomRefusal, n as buildAndroid, s as productFlavorRefusal } from "./react-native-build-BTUcE926.mjs";
16
- import { h as detectAppIds, m as detectAndroidPackage } from "./start-DIFiT2P5.mjs";
17
- import { t as readDoctorFingerprint } from "./doctor-fingerprint-DqWvIhMb.mjs";
18
- import { n as decideSystemImage, t as androidImageInstallPolicy } from "./android-image-DFk26aY6.mjs";
19
- import { i as planEasDevelopmentBuild } from "./eas-build-BxJdzQnF.mjs";
20
- import { a as runPrebuild, c as fingerprintErrorMissReason, d as memoizedFingerprint, i as recordPrebuildAsync, n as planPrebuildAsync, o as staleNativeDirRefusal, s as explainBuildMiss, t as planPrebuild } from "./prebuild-BptrXmh_.mjs";
21
- import { a as PLATFORM, c as androidGradleProject, g as dumpApkManifest, h as displayPath, i as NO_FINGERPRINT, l as androidJobLayout, o as androidBuildOptions, p as apkPackage, r as NO_DEVICE } from "./support-CNqJDBrH.mjs";
4
+ import { i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-ByEmIwur.mjs";
5
+ import { m as getProject, pt as deviceSlotPlatforms, vt as validateDeviceSlot } from "./config-CNmN-ndb.mjs";
6
+ import { a as killOnAbort, t as runOperationFile } from "./operation-exec-DNynwpqO.mjs";
7
+ import { B as publicUrlSetting, H as realpathInside, W as remoteEasFallbackSetting, an as makeTemporaryDirectory, at as settingsLayers, m as defaultAndroidLayout, nt as settingOriginScope, on as removeTemporaryEntry, ot as tunnelModeSetting, q as resolveAndroidLayout } from "./settings-Ag4pbs0z.mjs";
8
+ import { v as detectIsExpo } from "./project-BCtQz48d.mjs";
9
+ import { J as ownedAvdSystemImage, O as findBuildTool, R as listAvdsAsync, U as ownedAvdDirectory, l as androidSystemImageAbi, r as androidBuildToolName, z as listInstalledSystemImages } from "./android-CGctfYpv.mjs";
10
+ import { Jn as checkEasAuth, O as resolveCcache, Un as processContext, Zn as loadProjectProvider, ir as bundleInvocation, nr as resolveRemote } from "./device-capacity-DWUOvY13.mjs";
11
+ import { lt as statsProjectKey } from "./workspaces-DCzDzydB.mjs";
12
+ import { K as tailLines, M as HEARTBEAT_INTERVAL_MS, W as startBuildHeartbeat, r as androidToolchainAsync, t as androidRequirements } from "./toolchain-BeD7tbBW.mjs";
13
+ import { E as storeBuild, F as compareAssetManifests, I as readAssetManifest, M as untrackedNativeFiles, N as assetDiffReason, O as storedAssetManifest, P as captureAssetManifest, T as resolveBuild, _ as gitignoredFingerprintInputs, g as fingerprintProject, j as untrackedMissLine, m as fingerprintDiffRecord, n as buildCacheKey, o as configInputsChanged, p as filesystemBuildCapability, r as changedDuringBuildLine, w as refingerprintAfterMutation, y as inputsChangedDuringBuild } from "./build-cache-Dt-dhCJF.mjs";
14
+ import { t as cleanLine } from "./server-expo-ZS9_WaNG.mjs";
15
+ import { c as readProductFlavors, h as androidPathRoomRefusal, n as buildAndroid, s as productFlavorRefusal } from "./react-native-build-dixAL2G8.mjs";
16
+ import { h as detectAppIds, m as detectAndroidPackage } from "./start-CzBB5R7N.mjs";
17
+ import { t as readDoctorFingerprint } from "./doctor-fingerprint-Bo4z8YNP.mjs";
18
+ import { n as decideSystemImage, t as androidImageInstallPolicy } from "./android-image-DY8KxK2m.mjs";
19
+ import { i as planEasDevelopmentBuild } from "./eas-build-CwOXKJwa.mjs";
20
+ import { a as runPrebuild, c as fingerprintErrorMissReason, d as memoizedFingerprint, i as recordPrebuildAsync, n as planPrebuildAsync, o as staleNativeDirRefusal, s as explainBuildMiss, t as planPrebuild } from "./prebuild-BKkj3OyL.mjs";
21
+ import { a as PLATFORM, c as androidGradleProject, g as dumpApkManifest, h as displayPath, i as NO_FINGERPRINT, l as androidJobLayout, o as androidBuildOptions, p as apkPackage, r as NO_DEVICE } from "./support-JZ4KRW0C.mjs";
22
22
  import { t as AndroidRecipeRefusal } from "./android-project-BCAAmMwz.mjs";
23
- import { u as resolveAndroidRunPlan } from "./result-DK6nTO-M.mjs";
24
- import { n as androidProcessRuntime, t as androidMetroRuntime } from "./launch-CTq5gBim.mjs";
25
- import { t as checkEasFallback } from "./eas-fallback-DU2WDF8r.mjs";
26
- import { n as planFlagRefusal, r as planPayload, t as planCachedBuild } from "./build-plan-BSgR9yKo.mjs";
27
- import { n as detectEntryFile, r as refreshUpdatesManifestFile, t as UPDATES_MANIFEST_NAME } from "./js-swap-07ikLRJJ.mjs";
28
- import { t as planHostedDevice } from "./plan-placement-DqmLrWoX.mjs";
23
+ import { u as resolveAndroidRunPlan } from "./result-CWyxwPvZ.mjs";
24
+ import { n as androidProcessRuntime, t as androidMetroRuntime } from "./launch-f3RnbFW5.mjs";
25
+ import { t as checkEasFallback } from "./eas-fallback-Cnb12a50.mjs";
26
+ import { n as planFlagRefusal, r as planPayload, t as planCachedBuild } from "./build-plan-CgnLDof9.mjs";
27
+ import { i as swapBundlerEnv, n as detectEntryFile, r as refreshUpdatesManifestFile, t as UPDATES_MANIFEST_NAME } from "./js-swap-C6vl3vEd.mjs";
28
+ import { t as planHostedDevice } from "./plan-placement-45EOlIG1.mjs";
29
29
  import { constants, existsSync, mkdirSync, readFileSync, renameSync } from "node:fs";
30
30
  import { basename, dirname, isAbsolute, join, relative } from "node:path";
31
31
  import chalk from "chalk";
@@ -257,11 +257,7 @@ async function swapApkBundle({ context, root, isExpo, cachedApkPath, keystore, l
257
257
  "pipe",
258
258
  "pipe"
259
259
  ],
260
- env: {
261
- ...context?.env ?? process.env,
262
- ...expoTelemetryEnv(context?.env ?? process.env),
263
- FORCE_COLOR: "0"
264
- }
260
+ env: swapBundlerEnv(root, context?.env ?? process.env)
265
261
  }));
266
262
  killOnAbort(context ? operationState(context).runSignal ?? context.signal : void 0)(child);
267
263
  } catch (err) {
@@ -1,13 +1,13 @@
1
- import { b as spawnDeclared, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { x as sharedCompilationCache } from "./workspace-state-BdZ-QgmB.mjs";
1
+ import { b as spawnDeclared, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { x as sharedCompilationCache } from "./workspace-state-DOPXG2Gp.mjs";
3
3
  import { n as stripAnsi, r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
4
- import { l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
5
- import { a as killOnAbort } from "./operation-exec-DKlBcKAL.mjs";
6
- import { C as resolvePackageJson } from "./project-Dqqj3IkW.mjs";
7
- import { o as androidHome } from "./android-Iq0M2t2d.mjs";
8
- import { C as CCACHE_UNAVAILABLE, D as readCcacheActivity } from "./device-capacity-C0PiTyRb.mjs";
9
- import { r as register } from "./cache-manifest-8JX9S1QJ.mjs";
10
- import { B as pickXcodeProject, G as swiftPrefixMappingSupported, I as compilationCacheSettings, M as HEARTBEAT_INTERVAL_MS, N as SWIFT_PREFIX_MAPPING_MIN_SWIFT, P as buildXcode, R as parseSwiftVersion, W as startBuildHeartbeat, z as parseXcodeMajor } from "./toolchain-DRQyCvlp.mjs";
4
+ import { l as phaseLine } from "./command-output-ByEmIwur.mjs";
5
+ import { a as killOnAbort } from "./operation-exec-DNynwpqO.mjs";
6
+ import { C as resolvePackageJson } from "./project-BCtQz48d.mjs";
7
+ import { o as androidHome } from "./android-CGctfYpv.mjs";
8
+ import { C as CCACHE_UNAVAILABLE, D as readCcacheActivity } from "./device-capacity-DWUOvY13.mjs";
9
+ import { r as register } from "./cache-manifest-BO0TIcPV.mjs";
10
+ import { B as pickXcodeProject, G as swiftPrefixMappingSupported, I as compilationCacheSettings, M as HEARTBEAT_INTERVAL_MS, N as SWIFT_PREFIX_MAPPING_MIN_SWIFT, P as buildXcode, R as parseSwiftVersion, W as startBuildHeartbeat, z as parseXcodeMajor } from "./toolchain-BeD7tbBW.mjs";
11
11
  import { p as resolveOptimizations } from "./errors-DHm_U5gv.mjs";
12
12
  import { createHash } from "node:crypto";
13
13
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync } from "node:fs";
@@ -1,9 +1,9 @@
1
- import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
3
- import { Y as resolveIosProjectDir, q as resolveAndroidLayout } from "./settings-B5IBDfTx.mjs";
4
- import { v as detectIsExpo } from "./project-Dqqj3IkW.mjs";
5
- import { Y as bundlerPin, a as buildsOnlyOnWorker, c as iosToolchainAsync, n as androidToolchain, r as androidToolchainAsync, t as androidRequirements } from "./toolchain-DRQyCvlp.mjs";
6
- import { a as mainCheckoutProjectRoot, c as repairCxxLauncherState, i as detectLinkedLibraryGitMetadata, n as checkMainCheckout, o as reactNativeDoctorFindings, r as detectFingerprintParity } from "./doctor-RosbBfTV.mjs";
1
+ import { t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { l as phaseLine } from "./command-output-ByEmIwur.mjs";
3
+ import { Y as resolveIosProjectDir, q as resolveAndroidLayout } from "./settings-Ag4pbs0z.mjs";
4
+ import { v as detectIsExpo } from "./project-BCtQz48d.mjs";
5
+ import { Y as bundlerPin, a as buildsOnlyOnWorker, c as iosToolchainAsync, n as androidToolchain, r as androidToolchainAsync, t as androidRequirements } from "./toolchain-BeD7tbBW.mjs";
6
+ import { a as mainCheckoutProjectRoot, c as repairCxxLauncherState, i as detectLinkedLibraryGitMetadata, n as checkMainCheckout, o as reactNativeDoctorFindings, r as detectFingerprintParity } from "./doctor-Bknt0121.mjs";
7
7
  import { existsSync, readdirSync, statSync } from "node:fs";
8
8
  import { join, relative } from "node:path";
9
9
  //#region src/diagnostics/doctor-ios-architectures.ts
@@ -1,20 +1,20 @@
1
- import { r as reportSignal } from "./exec-CGuDzt40.mjs";
2
- import { i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-CGxrQ3Bd.mjs";
3
- import { B as publicUrlSetting, G as remoteIosSetting, W as remoteEasFallbackSetting, Y as resolveIosProjectDir, a as SETTING_SHAPE_REMEDY, ot as tunnelModeSetting, p as cacheProviderSettingError, rt as settingShapeErrors } from "./settings-B5IBDfTx.mjs";
4
- import { Un as processContext } from "./device-capacity-C0PiTyRb.mjs";
5
- import { lt as statsProjectKey } from "./workspaces-CY3KSdC0.mjs";
6
- import { Y as bundlerPin, _t as runCancellationSignal, a as buildsOnlyOnWorker, c as iosToolchainAsync } from "./toolchain-DRQyCvlp.mjs";
7
- import { A as trackedFingerprintPaths, _ as gitignoredFingerprintInputs, f as expoProductionEnvFiles, j as untrackedMissLine, m as fingerprintDiffRecord, n as buildCacheKey, o as configInputsChanged, p as filesystemBuildCapability, r as changedDuringBuildLine, v as ignoredFingerprintPaths, w as refingerprintAfterMutation, y as inputsChangedDuringBuild } from "./build-cache-_fkewiwH.mjs";
1
+ import { r as reportSignal } from "./exec-L37dbiIb.mjs";
2
+ import { i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-ByEmIwur.mjs";
3
+ import { B as publicUrlSetting, G as remoteIosSetting, W as remoteEasFallbackSetting, Y as resolveIosProjectDir, a as SETTING_SHAPE_REMEDY, ot as tunnelModeSetting, p as cacheProviderSettingError, rt as settingShapeErrors } from "./settings-Ag4pbs0z.mjs";
4
+ import { Un as processContext } from "./device-capacity-DWUOvY13.mjs";
5
+ import { lt as statsProjectKey } from "./workspaces-DCzDzydB.mjs";
6
+ import { Y as bundlerPin, _t as runCancellationSignal, a as buildsOnlyOnWorker, c as iosToolchainAsync } from "./toolchain-BeD7tbBW.mjs";
7
+ import { A as trackedFingerprintPaths, _ as gitignoredFingerprintInputs, f as expoProductionEnvFiles, j as untrackedMissLine, m as fingerprintDiffRecord, n as buildCacheKey, o as configInputsChanged, p as filesystemBuildCapability, r as changedDuringBuildLine, v as ignoredFingerprintPaths, w as refingerprintAfterMutation, y as inputsChangedDuringBuild } from "./build-cache-Dt-dhCJF.mjs";
8
8
  import { d as optimizationBuildProfile, l as artifactCachePolicy, p as resolveOptimizations } from "./errors-DHm_U5gv.mjs";
9
- import { a as deviceModelRefusal, c as iosProjectPathError, f as podAction, h as resolveDeviceType, l as iosProviderRunOptions, m as resolveConfiguration, u as isReleaseConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-DW575Dnx.mjs";
10
- import { t as readDoctorFingerprint } from "./doctor-fingerprint-DqWvIhMb.mjs";
11
- import { i as planEasDevelopmentBuild, n as easDeviceBuildRemedy } from "./eas-build-BxJdzQnF.mjs";
12
- import { c as fingerprintErrorMissReason, d as memoizedFingerprint, i as recordPrebuildAsync, o as staleNativeDirRefusal, s as explainBuildMiss } from "./prebuild-BptrXmh_.mjs";
13
- import { r as planPayload, t as planCachedBuild } from "./build-plan-BSgR9yKo.mjs";
14
- import { t as IosRecipeRefusal } from "./ios-project-PXBDoaii.mjs";
15
- import { a as hostedIosSelectors } from "./remote-BsmYHUxH.mjs";
16
- import { a as writeIpTxt, c as iosProcessRuntime, r as copyAppAside, s as iosMetroRuntime, t as DEFAULT_DEPS } from "./dependencies-IVl2Ga2D.mjs";
17
- import { t as planHostedDevice } from "./plan-placement-DqmLrWoX.mjs";
9
+ import { a as deviceModelRefusal, c as iosProjectPathError, f as podAction, h as resolveDeviceType, l as iosProviderRunOptions, m as resolveConfiguration, u as isReleaseConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-CfYmOdQs.mjs";
10
+ import { t as readDoctorFingerprint } from "./doctor-fingerprint-Bo4z8YNP.mjs";
11
+ import { i as planEasDevelopmentBuild, n as easDeviceBuildRemedy } from "./eas-build-CwOXKJwa.mjs";
12
+ import { c as fingerprintErrorMissReason, d as memoizedFingerprint, i as recordPrebuildAsync, o as staleNativeDirRefusal, s as explainBuildMiss } from "./prebuild-BKkj3OyL.mjs";
13
+ import { r as planPayload, t as planCachedBuild } from "./build-plan-CgnLDof9.mjs";
14
+ import { t as IosRecipeRefusal } from "./ios-project-XHg87vyQ.mjs";
15
+ import { a as hostedIosSelectors } from "./remote-CV2jBcLv.mjs";
16
+ import { a as writeIpTxt, c as iosProcessRuntime, r as copyAppAside, s as iosMetroRuntime, t as DEFAULT_DEPS } from "./dependencies-BozoTBqa.mjs";
17
+ import { t as planHostedDevice } from "./plan-placement-45EOlIG1.mjs";
18
18
  import { existsSync, rmSync } from "node:fs";
19
19
  import { join } from "node:path";
20
20
  import chalk from "chalk";
@@ -147,8 +147,7 @@ async function planReactNativeIos(root, opts, d, schemeProblem, { context: setti
147
147
  const keyArch = (remoteArch) => simulatorBuildArch({
148
148
  physical: false,
149
149
  remoteArch,
150
- hostArch: d.hostSimulatorArch(),
151
- configuration
150
+ hostArch: d.hostSimulatorArch()
152
151
  });
153
152
  let arch = keyArch(null);
154
153
  let placement;
@@ -0,0 +1,76 @@
1
+ import { E as workspaceDir, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-DOPXG2Gp.mjs";
2
+ import { existsSync } from "node:fs";
3
+ import { basename, dirname, join } from "node:path";
4
+ import { isJsonObject } from "@stim-cli/core/state";
5
+ import { readdir, rm } from "node:fs/promises";
6
+ //#region src/engine/recorded-build.ts
7
+ const RECORDED_BUILDS_KEY = "recordedBuilds";
8
+ function recordedBuildKey(selectors) {
9
+ const configuration = selectors.configuration ?? (selectors.platform === "ios" ? "Debug" : "debug");
10
+ return [
11
+ selectors.platform,
12
+ selectors.scheme ?? "",
13
+ configuration
14
+ ].join("|");
15
+ }
16
+ function recordBuild(root, key, build) {
17
+ updateWorkspaceState(root, (state) => ({
18
+ ...state,
19
+ [RECORDED_BUILDS_KEY]: {
20
+ ...isJsonObject(state[RECORDED_BUILDS_KEY]) ? state[RECORDED_BUILDS_KEY] : {},
21
+ [key]: {
22
+ ...build,
23
+ builtAt: (/* @__PURE__ */ new Date()).toISOString()
24
+ }
25
+ }
26
+ }));
27
+ }
28
+ /** Callers must hold the workspace native-run lock, so no other build or recorded-build install is using a copy. */
29
+ async function pruneArtifactCopies(root, platform, keep, warn) {
30
+ const artifacts = join(workspaceDir(root), "artifacts");
31
+ const recorded = readWorkspaceState$1(root)?.[RECORDED_BUILDS_KEY];
32
+ const kept = /* @__PURE__ */ new Set([basename(keep)]);
33
+ for (const entry of isJsonObject(recorded) ? Object.values(recorded) : []) if (isJsonObject(entry) && typeof entry.appPath === "string") kept.add(basename(dirname(entry.appPath)));
34
+ try {
35
+ const entries = await readdir(artifacts, { withFileTypes: true });
36
+ await Promise.all(entries.filter((entry) => entry.isDirectory() && entry.name.startsWith(`${platform}-`) && !kept.has(entry.name)).map((entry) => rm(join(artifacts, entry.name), {
37
+ recursive: true,
38
+ force: true
39
+ })));
40
+ } catch (error) {
41
+ warn(`could not remove older app copies: ${error instanceof Error ? error.message : String(error)}`);
42
+ }
43
+ }
44
+ function readRecordedBuild(root, key) {
45
+ const recorded = readWorkspaceState$1(root)?.[RECORDED_BUILDS_KEY];
46
+ const entry = isJsonObject(recorded) ? recorded[key] : null;
47
+ if (!isJsonObject(entry) || typeof entry.appPath !== "string" || !existsSync(entry.appPath)) return null;
48
+ return {
49
+ appPath: entry.appPath,
50
+ bundleId: typeof entry.bundleId === "string" ? entry.bundleId : null,
51
+ builtAt: typeof entry.builtAt === "string" ? entry.builtAt : ""
52
+ };
53
+ }
54
+ const NO_RECORDED_BUILD = "STIM_NO_RECORDED_BUILD";
55
+ function lookupRecordedBuild(requested, root, selectors) {
56
+ if (!requested) return {
57
+ build: null,
58
+ refusal: null
59
+ };
60
+ const build = readRecordedBuild(root, recordedBuildKey(selectors));
61
+ if (build) return {
62
+ build,
63
+ refusal: null
64
+ };
65
+ const described = [selectors.scheme && `scheme ${selectors.scheme}`, selectors.configuration].filter(Boolean).join(", ");
66
+ return {
67
+ build: null,
68
+ refusal: {
69
+ code: NO_RECORDED_BUILD,
70
+ message: `No recorded ${selectors.platform} build${described ? ` (${described})` : ""} exists for this checkout, so there is no app to install.`,
71
+ remedy: "Build the app first with the same selectors, then run again."
72
+ }
73
+ };
74
+ }
75
+ //#endregion
76
+ export { recordedBuildKey as i, pruneArtifactCopies as n, recordBuild as r, lookupRecordedBuild as t };
@@ -1,4 +1,4 @@
1
- import { Ct as gitCommonDirOnDisk } from "./settings-B5IBDfTx.mjs";
1
+ import { Ct as gitCommonDirOnDisk } from "./settings-Ag4pbs0z.mjs";
2
2
  import { existsSync } from "node:fs";
3
3
  import { loadConfig, recordingEnabled, workspaceRecordingsDir } from "@stim-cli/core/state";
4
4
  import { rm } from "node:fs/promises";
@@ -1,4 +1,4 @@
1
- import { T as process_identity_exports } from "./exec-CGuDzt40.mjs";
1
+ import { T as process_identity_exports } from "./exec-L37dbiIb.mjs";
2
2
  import { readMacosRecord } from "@stim-cli/core/state";
3
3
  //#region src/macos/registration.ts
4
4
  function waitForMacosRegistration(root, launchId, child, deadline) {
@@ -1,19 +1,19 @@
1
- import { d as throwIfCancelled, l as cancellableSleep, s as loadScaledBudgetMs, u as cancelledError } from "./exec-CGuDzt40.mjs";
2
- import { a as recordWorkspaceUseAsync, r as readWorkspaceState$1 } from "./workspace-state-BdZ-QgmB.mjs";
3
- import { f as refuseNoProject, l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
4
- import { ft as deviceSlotPlatforms, m as getProject, pt as parseDeviceSlotKey } from "./config-BW0fAtoK.mjs";
5
- import { Vt as repoRootAsync } from "./settings-B5IBDfTx.mjs";
6
- import { I as readWorkspaceLaunches, P as readRemoteSession, r as findCommandWorkspaceAsync } from "./project-Dqqj3IkW.mjs";
7
- import { it as resolveOwnedAvdSerialAsync } from "./android-Iq0M2t2d.mjs";
8
- import { a as listeningPidsAsync, d as resolveProjectMetro, h as isMetroRunning, u as processCwds } from "./metro-B5PVz0Wv.mjs";
9
- import { Nn as iosAppProcess, On as ensureMetroReverse, Sn as androidAppProcess } from "./device-capacity-C0PiTyRb.mjs";
10
- import { d as webFactsAsync, o as readWebRecord, r as cdpEndpoint } from "./state-CtmYTRWm.mjs";
11
- import { D as resolveOwnedIosSim, f as listAllIosSimsAsync } from "./ios-BdZdNsAj.mjs";
12
- import { m as probeHostedSession } from "./hosted-client-Bb89P6an.mjs";
13
- import { r as readHostedNative } from "./ios-state-CWsBysyN.mjs";
14
- import { r as reopenHostedAndroidMetro } from "./hosted-android-y6K3DKQT.mjs";
15
- import { n as nativeRunCommand } from "./slot-launch-DsQmPdlg.mjs";
16
- import { n as sendToOwnedPage, t as liveWebRecord } from "./page-Dj8IqvGM.mjs";
1
+ import { d as throwIfCancelled, l as cancellableSleep, s as loadScaledBudgetMs, u as cancelledError } from "./exec-L37dbiIb.mjs";
2
+ import { a as recordWorkspaceUseAsync, r as readWorkspaceState$1 } from "./workspace-state-DOPXG2Gp.mjs";
3
+ import { f as refuseNoProject, l as phaseLine } from "./command-output-ByEmIwur.mjs";
4
+ import { m as getProject, mt as parseDeviceSlotKey, pt as deviceSlotPlatforms } from "./config-CNmN-ndb.mjs";
5
+ import { Vt as repoRootAsync } from "./settings-Ag4pbs0z.mjs";
6
+ import { I as readWorkspaceLaunches, P as readRemoteSession, r as findCommandWorkspaceAsync } from "./project-BCtQz48d.mjs";
7
+ import { it as resolveOwnedAvdSerialAsync } from "./android-CGctfYpv.mjs";
8
+ import { a as listeningPidsAsync, d as resolveProjectMetro, h as isMetroRunning, u as processCwds } from "./metro-TIQ1Wft-.mjs";
9
+ import { Nn as iosAppProcess, On as ensureMetroReverse, Sn as androidAppProcess } from "./device-capacity-DWUOvY13.mjs";
10
+ import { d as webFactsAsync, o as readWebRecord, r as cdpEndpoint } from "./state-CfP-ccP8.mjs";
11
+ import { D as resolveOwnedIosSim, f as listAllIosSimsAsync } from "./ios-BveW7qK1.mjs";
12
+ import { m as probeHostedSession } from "./hosted-client-BLwuXEZS.mjs";
13
+ import { r as readHostedNative } from "./ios-state-enWc5P6U.mjs";
14
+ import { r as reopenHostedAndroidMetro } from "./hosted-android-D8JbIzgC.mjs";
15
+ import { n as nativeRunCommand } from "./slot-launch-DW_29Bmu.mjs";
16
+ import { n as sendToOwnedPage, t as liveWebRecord } from "./page-CoN9al_x.mjs";
17
17
  import { hostedAndroidDeviceName, hostedNativeRecords } from "@stim-cli/core/state";
18
18
  import chalk from "chalk";
19
19
  import { WebSocket } from "ws";
@@ -1,2 +1,2 @@
1
- import { n as reloadCommand, r as runReload, t as registerReload } from "./reload-DsTMtMDU.mjs";
1
+ import { n as reloadCommand, r as runReload, t as registerReload } from "./reload-DGWfNFwQ.mjs";
2
2
  export { reloadCommand as default, registerReload, runReload };
@@ -1,12 +1,12 @@
1
- import { f as WorkspaceProcessCleanupError } from "./exec-CGuDzt40.mjs";
2
- import { l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
3
- import { ft as deviceSlotPlatforms } from "./config-BW0fAtoK.mjs";
4
- import { B as publicUrlSetting, G as remoteIosSetting, L as parseIosRemote, W as remoteEasFallbackSetting, ot as tunnelModeSetting } from "./settings-B5IBDfTx.mjs";
5
- import "./device-capacity-C0PiTyRb.mjs";
6
- import { _t as runCancellationSignal } from "./toolchain-DRQyCvlp.mjs";
7
- import { b as resolveSimulatorAppFlag } from "./support-DW575Dnx.mjs";
8
- import { n as devicePlacementRecord } from "./placement-log-D0DZLcJk.mjs";
9
- import { n as devicePlacementLine } from "./auto-placement-CBdWa87P.mjs";
1
+ import { f as WorkspaceProcessCleanupError } from "./exec-L37dbiIb.mjs";
2
+ import { l as phaseLine } from "./command-output-ByEmIwur.mjs";
3
+ import { pt as deviceSlotPlatforms } from "./config-CNmN-ndb.mjs";
4
+ import { B as publicUrlSetting, G as remoteIosSetting, L as parseIosRemote, W as remoteEasFallbackSetting, ot as tunnelModeSetting } from "./settings-Ag4pbs0z.mjs";
5
+ import "./device-capacity-DWUOvY13.mjs";
6
+ import { _t as runCancellationSignal } from "./toolchain-BeD7tbBW.mjs";
7
+ import { b as resolveSimulatorAppFlag } from "./support-CfYmOdQs.mjs";
8
+ import { n as devicePlacementRecord } from "./placement-log-oQnELAvQ.mjs";
9
+ import { n as devicePlacementLine } from "./auto-placement-CFKNrWLU.mjs";
10
10
  import chalk from "chalk";
11
11
  //#region src/commands/ios/remote.ts
12
12
  function deviceRemoteConflict(remote, physical) {
@@ -0,0 +1,158 @@
1
+ import { l as phaseLine } from "./command-output-ByEmIwur.mjs";
2
+ import { D as updateRemoteMachinesAsync, R as doctorIo, V as keyConfirmer, W as parseMachine$1 } from "./config-CNmN-ndb.mjs";
3
+ import { $ as inspectBuildMachines, Q as forgetBuildMachine, at as inspectDeviceHostMachines, nt as configuredMachines, rt as forgetDeviceHostMachine } from "./support-CfYmOdQs.mjs";
4
+ import { t as confirmInTerminal } from "./device-provision-DWAoSKEw.mjs";
5
+ import { readBuildMachines, readDeviceHostMachines } from "@stim-cli/core/state";
6
+ import chalk from "chalk";
7
+ //#region src/commands/remote.ts
8
+ function refusal(code, message, remedy) {
9
+ return Object.assign(new Error(message), {
10
+ code,
11
+ message,
12
+ remedy
13
+ });
14
+ }
15
+ function invalidSetting() {
16
+ return refusal("STIM_BAD_ARG", "remote.machines is not a list of machine names.", "Run `stim guide settings` and correct remote.machines, then run the command again.");
17
+ }
18
+ function asRefusal(error) {
19
+ if (!(error instanceof Error) || !("code" in error)) return null;
20
+ if (typeof error.code !== "string" || !error.code.startsWith("STIM_")) return null;
21
+ const remedy = "remedy" in error && typeof error.remedy === "string" ? error.remedy : null;
22
+ return {
23
+ code: error.code,
24
+ message: error.message,
25
+ remedy
26
+ };
27
+ }
28
+ async function run(json, action) {
29
+ try {
30
+ await action();
31
+ } catch (error) {
32
+ const failure = asRefusal(error);
33
+ if (!failure) throw error;
34
+ console.error(chalk.red(phaseLine("error", `${failure.code}: ${failure.message}`)));
35
+ if (failure.remedy) console.error(phaseLine("remedy", failure.remedy));
36
+ if (json) console.log(JSON.stringify(failure));
37
+ process.exitCode = 1;
38
+ }
39
+ }
40
+ function requireMachine(machine) {
41
+ if (parseMachine$1(machine)) return;
42
+ throw refusal("STIM_BAD_ARG", `${JSON.stringify(machine)} is not a tailnet name or local: address.`, "Expected `name`, `name:port`, `local:<host>` or `local:<host>:port`.");
43
+ }
44
+ function printFindings(findings) {
45
+ const seen = /* @__PURE__ */ new Set();
46
+ for (const finding of findings) {
47
+ if (seen.has(finding.title)) continue;
48
+ seen.add(finding.title);
49
+ console.log(`\n${chalk.bold(finding.title)}`);
50
+ console.log(` ${finding.detail}`);
51
+ if (finding.fix) console.log(chalk.dim(` -> ${finding.fix}`));
52
+ }
53
+ }
54
+ function confirmer(json) {
55
+ const interactive = !json && process.stdin.isTTY === true && process.stderr.isTTY === true;
56
+ return keyConfirmer(interactive ? confirmInTerminal : null);
57
+ }
58
+ function stateLine(build, host) {
59
+ return `build ${build?.state ?? "unknown"}, device-host ${host?.state ?? "unknown"}`;
60
+ }
61
+ function remoteCommand(program, version, io = doctorIo()) {
62
+ const remote = program.command("remote").description("Manage remote.machines, the remote machines this machine builds on and hosts devices on. Works from any directory.");
63
+ remote.command("add <machine>").description("Append a remote machine to remote.machines, keeping the existing entries, and ask it for build and device-host approval. Prints the stim-server setup command a person runs there to approve this machine.").option("--json", "print the result as JSON").action((machine, opts) => run(Boolean(opts.json), async () => {
64
+ requireMachine(machine);
65
+ const { before, after } = await updateRemoteMachinesAsync((machines) => machines.includes(machine) ? machines : [...machines, machine], await io.status());
66
+ if (before === null) throw invalidSetting();
67
+ const added = !before.includes(machine);
68
+ const options = {
69
+ fix: true,
70
+ forget: false,
71
+ version,
72
+ tickets: /* @__PURE__ */ new Map(),
73
+ confirmKey: confirmer(Boolean(opts.json))
74
+ };
75
+ const build = await inspectBuildMachines(options, io, [machine]);
76
+ const host = await inspectDeviceHostMachines(options, io, [machine]);
77
+ const findings = [...build.findings, ...host.findings];
78
+ const buildReport = build.machines[0] ?? null;
79
+ const hostReport = host.machines[0] ?? null;
80
+ if (opts.json) {
81
+ console.log(JSON.stringify({
82
+ machine,
83
+ added,
84
+ machines: after,
85
+ build: buildReport,
86
+ deviceHost: hostReport,
87
+ findings
88
+ }));
89
+ return;
90
+ }
91
+ console.log(added ? `Added ${machine} to remote.machines (${after.length} machine${after.length === 1 ? "" : "s"}).` : `${machine} is already in remote.machines.`);
92
+ console.log(`${machine}: ${stateLine(buildReport, hostReport)}`);
93
+ printFindings(findings);
94
+ }));
95
+ remote.command("list").description("Contact each machine in remote.machines and report its build and device-host approval, in placement order. Completes the connection to a machine that approved since the last contact; asks nothing new.").option("--json", "print the machines as JSON").action((opts) => run(Boolean(opts.json), async () => {
96
+ const entries = configuredMachines();
97
+ if (entries === null) throw invalidSetting();
98
+ const options = {
99
+ fix: false,
100
+ version,
101
+ confirmKey: confirmer(Boolean(opts.json))
102
+ };
103
+ const build = await inspectBuildMachines(options, io, entries);
104
+ const host = await inspectDeviceHostMachines(options, io, entries);
105
+ const machines = entries.map((machine, at) => ({
106
+ machine,
107
+ priority: at + 1,
108
+ build: build.machines.find((each) => each.machine === machine) ?? null,
109
+ deviceHost: host.machines.find((each) => each.machine === machine) ?? null
110
+ }));
111
+ const findings = [...build.findings, ...host.findings];
112
+ if (opts.json) {
113
+ console.log(JSON.stringify({
114
+ machines,
115
+ findings
116
+ }));
117
+ return;
118
+ }
119
+ if (!entries.length) {
120
+ console.log("No remote machines. Add one with `stim remote add <machine>`.");
121
+ return;
122
+ }
123
+ for (const each of machines) console.log(`${each.priority} ${each.machine}: ${stateLine(each.build, each.deviceHost)}`);
124
+ printFindings(findings);
125
+ }));
126
+ remote.command("remove <machine>").description("Remove a machine from remote.machines and forget this machine's credentials for it. Approval on that machine stays until a person there revokes it; prints the command.").option("--json", "print the result as JSON").action((machine, opts) => run(Boolean(opts.json), async () => {
127
+ if (configuredMachines() === null) throw invalidSetting();
128
+ const credentials = [...readBuildMachines(), ...readDeviceHostMachines()].filter((each) => each.machine === machine);
129
+ const revoke = [...new Set(credentials.flatMap((each) => each.deviceId ? [each.deviceId] : []))].map((id) => `stim-server devices revoke ${id}`);
130
+ const pending = credentials.some((each) => !each.deviceId);
131
+ const { before, after } = await updateRemoteMachinesAsync((machines) => machines.filter((each) => each !== machine), await io.status());
132
+ if (before === null) throw invalidSetting();
133
+ const removed = before.includes(machine);
134
+ const busy = `another run holds the hosting credentials, so this machine's credentials for ${machine} were kept.`;
135
+ if (!await forgetDeviceHostMachine(machine)) throw refusal("STIM_CLAIM_REFUSED", removed ? `Removed ${machine} from remote.machines, but ${busy}` : `Nothing changed: ${busy}`, `Run \`stim remote remove ${machine}\` again after it finishes.`);
136
+ await forgetBuildMachine(machine);
137
+ if (opts.json) {
138
+ console.log(JSON.stringify({
139
+ machine,
140
+ removed,
141
+ forgot: credentials.length > 0,
142
+ machines: after,
143
+ revoke,
144
+ pending
145
+ }));
146
+ return;
147
+ }
148
+ if (!removed && !credentials.length) {
149
+ console.log(`${machine} is not in remote.machines.`);
150
+ return;
151
+ }
152
+ console.log(removed ? `Removed ${machine} from remote.machines and forgot its credentials.` : `${machine} was not in remote.machines; forgot its credentials.`);
153
+ if (revoke.length) console.log(chalk.dim(` -> ${machine} keeps this machine's approval until a person there runs: ${revoke.join("; ")}`));
154
+ if (pending) console.log(chalk.dim(` -> A request to ${machine} was still pending here. If a person there approved it, find this machine in \`stim-server devices\` there and revoke it.`));
155
+ }));
156
+ }
157
+ //#endregion
158
+ export { remoteCommand as default };
@@ -1,20 +1,21 @@
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 { ft as deviceSlotPlatforms, m as getProject } from "./config-BW0fAtoK.mjs";
4
- import { J as resolveCacheProviderConfig, L as parseIosRemote, U as remoteAndroidSetting, _ as inertSettingWarning, a as SETTING_SHAPE_REMEDY, at as settingsLayers, d as androidLayoutSetting, et as settingFile, f as androidLayoutSettingError, nt as settingOriginScope, p as cacheProviderSettingError, q as resolveAndroidLayout, rt as settingShapeErrors, s as androidAvdConfigSettingError, st as unknownSettingKeys, u as androidDataPartitionSizeGbSettingError } from "./settings-B5IBDfTx.mjs";
5
- import { v as detectIsExpo } from "./project-Dqqj3IkW.mjs";
6
- import { a as workspaceLinkLine } from "./stim-desktop-_WTria-r.mjs";
7
- import { H as ownedAvdDeviceProfile, I as listAvdDeviceProfilesAsync, J as ownedAvdSystemImage, Q as pickDefaultSystemImage, bt as parkedMaxSetting, et as profileNeedsFoldFeature, j as hostSystemImageArch, l as androidSystemImageAbi, st as systemImageSupportsFold, t as DEFAULT_AVD_DEVICE_PROFILE, z as listInstalledSystemImages } from "./android-Iq0M2t2d.mjs";
8
- import { C as CCACHE_UNAVAILABLE, Kn as UPLOAD_TIMEOUT_MS, Xn as isEasAuthFailureText, Yn as easAuthNote, qn as cacheLevel, t as DEFAULT_DEVICE_SLOT_WAIT_MS, w as ccacheActivityLine } from "./device-capacity-C0PiTyRb.mjs";
9
- import { X as recordFinishedBuild } from "./workspaces-CY3KSdC0.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 { m as getProject, pt as deviceSlotPlatforms } from "./config-CNmN-ndb.mjs";
4
+ import { J as resolveCacheProviderConfig, L as parseIosRemote, U as remoteAndroidSetting, _ as inertSettingWarning, a as SETTING_SHAPE_REMEDY, at as settingsLayers, d as androidLayoutSetting, et as settingFile, f as androidLayoutSettingError, nt as settingOriginScope, p as cacheProviderSettingError, q as resolveAndroidLayout, rt as settingShapeErrors, s as androidAvdConfigSettingError, st as unknownSettingKeys, u as androidDataPartitionSizeGbSettingError } from "./settings-Ag4pbs0z.mjs";
5
+ import { v as detectIsExpo } from "./project-BCtQz48d.mjs";
6
+ import { a as workspaceLinkLine } from "./stim-desktop-DWGAfaud.mjs";
7
+ import { H as ownedAvdDeviceProfile, I as listAvdDeviceProfilesAsync, J as ownedAvdSystemImage, Q as pickDefaultSystemImage, bt as parkedMaxSetting, et as profileNeedsFoldFeature, j as hostSystemImageArch, l as androidSystemImageAbi, st as systemImageSupportsFold, t as DEFAULT_AVD_DEVICE_PROFILE, z as listInstalledSystemImages } from "./android-CGctfYpv.mjs";
8
+ import { C as CCACHE_UNAVAILABLE, Kn as UPLOAD_TIMEOUT_MS, Xn as isEasAuthFailureText, Yn as easAuthNote, qn as cacheLevel, t as DEFAULT_DEVICE_SLOT_WAIT_MS, w as ccacheActivityLine } from "./device-capacity-DWUOvY13.mjs";
9
+ import { X as recordFinishedBuild } from "./workspaces-DCzDzydB.mjs";
10
10
  import { d as optimizationBuildProfile, l as artifactCachePolicy, p as resolveOptimizations, u as compilerCacheFallbackMessage } from "./errors-DHm_U5gv.mjs";
11
- import { n as buildPlacementCandidates } from "./client-Dy0eJJtz.mjs";
12
- import { q as parseDeviceWait } from "./support-DW575Dnx.mjs";
13
- import { c as readProductFlavors, s as productFlavorRefusal } from "./react-native-build-BTUcE926.mjs";
14
- import { t as androidImageInstallPolicy } from "./android-image-DFk26aY6.mjs";
15
- import { n as resolveAndroidCas, r as resolveAndroidCompilerCache } from "./android-cas-Dhcjkys1.mjs";
16
- import { r as isPhysicalDeviceRequest } from "./native-runtime-oDqT4UES.mjs";
17
- import { C as remoteAvdFlagRefusal, D as systemImageRefusal, E as resolveVariant, T as resolveSystemImage, a as PLATFORM, m as deviceProfileRefusal, v as foldableImageRefusal, w as resolveDeviceProfile, y as isReleaseVariant } from "./support-CNqJDBrH.mjs";
11
+ import { n as buildPlacementCandidates } from "./client-DU6dnGX1.mjs";
12
+ import { q as parseDeviceWait } from "./support-CfYmOdQs.mjs";
13
+ import { c as readProductFlavors, s as productFlavorRefusal } from "./react-native-build-dixAL2G8.mjs";
14
+ import { t as androidImageInstallPolicy } from "./android-image-DY8KxK2m.mjs";
15
+ import { n as resolveAndroidCas, r as resolveAndroidCompilerCache } from "./android-cas-p8gna03x.mjs";
16
+ import { r as isPhysicalDeviceRequest } from "./native-runtime-UxUBU8up.mjs";
17
+ import { t as lookupRecordedBuild } from "./recorded-build-CGHGCO8m.mjs";
18
+ import { C as remoteAvdFlagRefusal, D as systemImageRefusal, E as resolveVariant, T as resolveSystemImage, a as PLATFORM, m as deviceProfileRefusal, v as foldableImageRefusal, w as resolveDeviceProfile, y as isReleaseVariant } from "./support-JZ4KRW0C.mjs";
18
19
  import { buildDiagnostics } from "@stim-cli/core/state";
19
20
  import chalk from "chalk";
20
21
  //#region src/commands/android/plan.ts
@@ -127,7 +128,7 @@ function resolveAndroidBuildPlan({ settings, settingsContext, env, easProfile, v
127
128
  }
128
129
  };
129
130
  }
130
- async function resolveAndroidRunPlan({ settings, settingsContext, env, slot, signal, easProfile, variant: variantFlag, systemImage: systemImageFlag, deviceProfile: deviceProfileFlag, device: deviceFlag, wait: waitFlag, waitConflict, remote: commandRemoteBackend, buildCache: requestedBuildCache, buildMachine }, { warn, runtimeKind, resolveCompilerCache = androidCompilerCache, resolveCacheProvider = resolveCacheProviderConfig, validateAvdConfig = androidAvdConfigSettingError, readFlavors = readProductFlavors, variantProblem = (variant) => productFlavorRefusal({
131
+ async function resolveAndroidRunPlan({ settings, settingsContext, env, slot, signal, easProfile, recordedBuild, variant: variantFlag, systemImage: systemImageFlag, deviceProfile: deviceProfileFlag, device: deviceFlag, wait: waitFlag, waitConflict, remote: commandRemoteBackend, buildCache: requestedBuildCache, buildMachine }, { warn, runtimeKind, resolveCompilerCache = androidCompilerCache, resolveCacheProvider = resolveCacheProviderConfig, validateAvdConfig = androidAvdConfigSettingError, readFlavors = readProductFlavors, variantProblem = (variant) => productFlavorRefusal({
131
132
  flavors: readFlavors(resolveAndroidLayout(settings, settingsContext.projectPath, settingsContext.repoRoot ?? settingsContext.projectPath)),
132
133
  variant
133
134
  }), detectExpo = () => detectIsExpo(settingsContext.projectPath), listSystemImages = listInstalledSystemImages, listDeviceProfiles = listAvdDeviceProfilesAsync, parkedLimit = parkedMaxSetting, supportsFold = systemImageSupportsFold, ownedAvd = slotOwnedAvd, preflight, buildMachines = (selected) => buildPlacementCandidates(selected).machines }) {
@@ -150,6 +151,11 @@ async function resolveAndroidRunPlan({ settings, settingsContext, env, slot, sig
150
151
  detectExpo
151
152
  });
152
153
  if (!plannedBuild.ok) return plannedBuild;
154
+ const recordedRefusal = lookupRecordedBuild(recordedBuild, root, {
155
+ platform: "android",
156
+ configuration: plannedBuild.plan.build.variant
157
+ }).refusal;
158
+ if (recordedRefusal) return fail(recordedRefusal.code, recordedRefusal.message, recordedRefusal.remedy);
153
159
  const dataPartitionSizeError = androidDataPartitionSizeGbSettingError(settings);
154
160
  if (dataPartitionSizeError) return fail("STIM_BAD_ARG", dataPartitionSizeError, "Set android.dataPartitionSizeGb to a whole number of GiB from 6 through 16384.");
155
161
  const avdConfigError = validateAvdConfig(settings, root);
@@ -1,5 +1,5 @@
1
- import { D as ownership_claim_exports, T as process_identity_exports, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { a as macosRuntimeClaim, i as macosProcess, r as macosLogFile, s as updateMacosRecord } from "./state-DSOUqO-o.mjs";
1
+ import { D as ownership_claim_exports, T as process_identity_exports, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { a as macosRuntimeClaim, i as macosProcess, r as macosLogFile, s as updateMacosRecord } from "./state-DsrFh3yv.mjs";
3
3
  import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
4
4
  import { LOG_ROTATE_BYTES } from "@stim-cli/core";
5
5
  import { readMacosRecord } from "@stim-cli/core/state";
@@ -1,5 +1,5 @@
1
- import { O as __commonJSMin, k as __require, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { X as resolveProjectSettings } from "./settings-B5IBDfTx.mjs";
1
+ import { O as __commonJSMin, k as __require, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { X as resolveProjectSettings } from "./settings-Ag4pbs0z.mjs";
3
3
  import { c as registerMetroStore, f as resolveMetroSharedCache, n as supervisorError, r as appendCacheStore, s as metroStoreRoot } from "./errors-DHm_U5gv.mjs";
4
4
  import { createRequire } from "node:module";
5
5
  import { isAbsolute, join, relative, sep } from "node:path";
@@ -1,9 +1,9 @@
1
- import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { n as METRO_COMMAND_PORT } from "./settings-B5IBDfTx.mjs";
3
- import { T as MODE_COMMAND } from "./project-Dqqj3IkW.mjs";
4
- import { f as signalProcessTree } from "./metro-B5PVz0Wv.mjs";
1
+ import { t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { n as METRO_COMMAND_PORT } from "./settings-Ag4pbs0z.mjs";
3
+ import { T as MODE_COMMAND } from "./project-BCtQz48d.mjs";
4
+ import { f as signalProcessTree } from "./metro-TIQ1Wft-.mjs";
5
5
  import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
6
- import { g as projectNodeLine, p as recordFromLine, v as withProjectNode, y as superviseChildServer } from "./server-expo-CjQwxvIi.mjs";
6
+ import { g as projectNodeLine, p as recordFromLine, v as withProjectNode, y as superviseChildServer } from "./server-expo-ZS9_WaNG.mjs";
7
7
  import { join } from "node:path";
8
8
  import { LOG_ROTATE_BYTES } from "@stim-cli/core";
9
9
  //#region src/supervisor/server-command.ts
@@ -0,0 +1,2 @@
1
+ import { m as startExpoServer } from "./server-expo-ZS9_WaNG.mjs";
2
+ export { startExpoServer };
@@ -1,7 +1,7 @@
1
- import { l as cancellableSleep, t as getExecutor } from "./exec-CGuDzt40.mjs";
1
+ import { l as cancellableSleep, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
2
  import { n as stripAnsi, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
- import { X as resolveProjectSettings } from "./settings-B5IBDfTx.mjs";
4
- import { C as resolvePackageJson } from "./project-Dqqj3IkW.mjs";
3
+ import { X as resolveProjectSettings } from "./settings-Ag4pbs0z.mjs";
4
+ import { C as resolvePackageJson } from "./project-BCtQz48d.mjs";
5
5
  import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
6
6
  import { a as expoMetroStoreEnv, c as registerMetroStore, f as resolveMetroSharedCache, i as expoMetroConfigPath, n as supervisorError, o as metroStoreConfirmedRoot, s as metroStoreRoot } from "./errors-DHm_U5gv.mjs";
7
7
  import { accessSync, constants, existsSync, readFileSync } from "node:fs";