stim 1.21.0 → 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 (184) hide show
  1. package/README.md +60 -7
  2. package/dist/{acquire-artifact-CD4lbiWE.mjs → acquire-artifact-Co2k4f7O.mjs} +21 -3
  3. package/dist/{act-DHAw2A2S.mjs → act-DsuqEkiM.mjs} +298 -164
  4. package/dist/{activity-BzVfHSrY.mjs → activity-CMLmzp7o.mjs} +33 -12
  5. package/dist/{agent-device-usage-output-zh1vhbLp.mjs → agent-device-usage-output-DUFaTMdd.mjs} +7 -7
  6. package/dist/{android-BLgbNqox.mjs → android-ByRMUoiJ.mjs} +66 -52
  7. package/dist/{android-DUYkNF4u.mjs → android-C7sVmyI9.mjs} +160 -59
  8. package/dist/{android-CV_GCELZ.mjs → android-DGkNqa_c.mjs} +5 -5
  9. package/dist/{android-BEJ8Jpl7.mjs → android-DR5lZ2Az.mjs} +2 -2
  10. package/dist/android-cas-compiler.mjs +1 -1
  11. package/dist/{android-cas-Ct5b1xCK.mjs → android-cas-ngferVq2.mjs} +3 -3
  12. package/dist/{client-B7QVOlCr.d.mts → android-project-DVWyCbWU.d.mts} +145 -7
  13. package/dist/api.d.mts +132 -118
  14. package/dist/api.mjs +239 -42
  15. package/dist/{artifact-B8T3S5gi.mjs → artifact-8EY8SAPw.mjs} +40 -35
  16. package/dist/{artifact-DAuZ-FNU.mjs → artifact-DJPy518Y.mjs} +69 -40
  17. package/dist/artifact-platform-CXcmX_j3.mjs +27 -0
  18. package/dist/{browser-web-QQzVjz3O.mjs → browser-web-Bcv99PBM.mjs} +187 -59
  19. package/dist/{budget-Bs6SxxzO.mjs → budget-Cvwn54qV.mjs} +830 -699
  20. package/dist/{build-CoPzQRNw.mjs → build-CabC3G23.mjs} +34 -27
  21. package/dist/{build-cache-DmyR9Zzc.mjs → build-cache-Dv7RN200.mjs} +4 -4
  22. package/dist/{build-plan-CaFskB7_.mjs → build-plan-DUC8Ka9y.mjs} +74 -14
  23. package/dist/{cache-manifest-DkkqguoK.mjs → cache-manifest-DSeQjt-Q.mjs} +1 -1
  24. package/dist/cache-manifest.mjs +1 -1
  25. package/dist/{ccache-BJRZ9pG3.mjs → ccache-Btwc36-I.mjs} +6 -6
  26. package/dist/{cdp-CWmIUMbw.mjs → cdp-3fwICjzi.mjs} +1 -1
  27. package/dist/{chrome-B6tfCta1.mjs → chrome-Bbw689-6.mjs} +1 -1
  28. package/dist/{cli-0DYf8QhQ.mjs → cli-CHZa9Lvk.mjs} +20 -20
  29. package/dist/cli.mjs +1 -1
  30. package/dist/{client-UXD70ZbM.mjs → client-OyRoEuSr.mjs} +218 -47
  31. package/dist/collector-run.d.mts +1 -1
  32. package/dist/collector-run.mjs +6 -6
  33. package/dist/{command-output-B1UrjZHL.mjs → command-output-gwpm28fu.mjs} +1 -1
  34. package/dist/{config-CYcBF478.mjs → config-DlrsduwG.mjs} +17 -11
  35. package/dist/{created-devices-CqeBlrEn.mjs → created-devices-x9rN6bhs.mjs} +13 -3
  36. package/dist/{dependency-state-BbKQW83h.mjs → dependency-state-1I9KZT1Y.mjs} +2 -2
  37. package/dist/{detached-entry-DFRyG1_o.mjs → detached-entry-BwNEtIrP.mjs} +1 -1
  38. package/dist/{dev-client-UOeESKm6.mjs → dev-client-BSDR5h3F.mjs} +2 -2
  39. package/dist/{device-ExJq8Ei7.mjs → device-B-L3Fbxy.mjs} +71 -14
  40. package/dist/{device-DCxH7_By.mjs → device-DklWZLqb.mjs} +16 -16
  41. package/dist/{device-capacity-CMlqEcvw.mjs → device-capacity-DK5_EwRS.mjs} +9 -10
  42. package/dist/device-host-worker.mjs +25 -32
  43. package/dist/{device-ios-DRUeKaFV.mjs → device-ios-DoB6KFCO.mjs} +39 -16
  44. package/dist/{device-lease-run-C8raGFoP.mjs → device-lease-run-xJPQ_QQG.mjs} +5 -5
  45. package/dist/{device-pool-DMRpVX9a.mjs → device-pool-BMkdsefq.mjs} +3 -3
  46. package/dist/{doctor-DTvaDOda.mjs → doctor-Bo7BXLux.mjs} +24 -37
  47. package/dist/{doctor-Dhqebm0q.mjs → doctor-D5_EzwfA.mjs} +19 -16
  48. package/dist/doctor-fingerprint-DZLoYFVb.mjs +16 -0
  49. package/dist/doctor-fingerprint.mjs +1 -1
  50. package/dist/{doctor-BLHCYxzi.mjs → doctor-thjWAV0z.mjs} +1 -1
  51. package/dist/{doctor-watchman-Cv1F10Kj.mjs → doctor-watchman-N2wDotwQ.mjs} +5 -5
  52. package/dist/{eas-build-BomfRnFT.mjs → eas-build-CwknaQYj.mjs} +4 -4
  53. package/dist/{eas-fallback-DJwZpy0c.mjs → eas-fallback-CSgAulr5.mjs} +27 -18
  54. package/dist/{eas-session-ledger-op6A54yi.mjs → eas-session-ledger-DlY_serQ.mjs} +8 -7
  55. package/dist/{error-diagnostics-Bf0rZvG9.mjs → error-diagnostics-DBWO2rxE.mjs} +10 -10
  56. package/dist/{exec-_UbtCQcG.mjs → exec-DEoAhcze.mjs} +155 -47
  57. package/dist/{exec-H20xSg2T.d.mts → exec-DnYc4HGH.d.mts} +17 -4
  58. package/dist/{gc-_-dCXdyL.mjs → gc-CXxN-4SE.mjs} +587 -313
  59. package/dist/gc-DnNDQyaP.mjs +3 -0
  60. package/dist/{guide-Yqwt2bd6.mjs → guide-Br0LEfKy.mjs} +239 -43
  61. package/dist/{hosted-android-Bw-honsd.mjs → hosted-android-B-9f-jkd.mjs} +6 -6
  62. package/dist/{hosted-client-DB_gBPfY.mjs → hosted-client-DZAPrcro.mjs} +4 -4
  63. package/dist/{hosted-ios-CUvOf4Vr.mjs → hosted-ios-CsCS21hn.mjs} +1 -1
  64. package/dist/{hosted-logs-DL_P5AdN.mjs → hosted-logs-FIRx9X2f.mjs} +5 -5
  65. package/dist/{hosted-macos-QI141yKk.mjs → hosted-macos-_awYSpfv.mjs} +21 -12
  66. package/dist/{hosted-native-Ksyjgzq-.mjs → hosted-native-BdzE668-.mjs} +27 -14
  67. package/dist/{idle-BVeRGroT.d.mts → idle-C4cZ757K.d.mts} +3 -3
  68. package/dist/{idle-shutdown-DaKmZi0z.mjs → idle-shutdown-DDg3SdvY.mjs} +7 -7
  69. package/dist/ios-CDvlmUs7.d.mts +24 -0
  70. package/dist/{ios-CQ68hG9s.mjs → ios-Ds1clbIt.mjs} +8 -8
  71. package/dist/{ios-device-CwFMehUS.mjs → ios-device--h_-8ENa.mjs} +3 -3
  72. package/dist/{ios-device-CXGP1bsD.mjs → ios-device-BXZ0c7Kb.mjs} +1 -1
  73. package/dist/{ios-CpByZy12.mjs → ios-hcBpnEGk.mjs} +81 -34
  74. package/dist/{ios-ubFsBzwq.mjs → ios-pm4nL6By.mjs} +59 -50
  75. package/dist/{ios-project-WuwwBdvW.mjs → ios-project-CZhKODF3.mjs} +5 -5
  76. package/dist/{ios-signing-DTTIChGs.mjs → ios-signing-BtAffm0A.mjs} +2 -2
  77. package/dist/{ios-state-DvFX-K_l.mjs → ios-state-Dtw5K2aI.mjs} +1 -1
  78. package/dist/{ios-qNJt4dFm.mjs → ios-xtlRHaeB.mjs} +1 -1
  79. package/dist/{js-swap-Cc1dttps.mjs → js-swap-Bwhh4S7V.mjs} +7 -29
  80. package/dist/{launch-Zq2mOSDy.mjs → launch-BjxemNpK.mjs} +40 -39
  81. package/dist/{launch-CD1yVc7U.mjs → launch-CCzXlc8r.mjs} +16 -16
  82. package/dist/{logs-BS00Anxf.mjs → logs-BfwwadsZ.mjs} +151 -24
  83. package/dist/{logs-CMm05HxN.mjs → logs-jTS_lHSo.mjs} +10 -17
  84. package/dist/{macos-B65--pPd.mjs → macos-DVlSSyUg.mjs} +1 -1
  85. package/dist/{macos-C-0qJ6zq.mjs → macos-NfV2D7dO.mjs} +143 -46
  86. package/dist/macos-run.mjs +1 -1
  87. package/dist/maintenance-run.mjs +8 -8
  88. package/dist/{metro-DEXpIhHC.mjs → metro-DiXtA3Ty.mjs} +59 -37
  89. package/dist/{metro-gateway-BMJNlj3E.mjs → metro-gateway-CKZqKqx7.mjs} +120 -22
  90. package/dist/{named-ports-BWTzt6mu.mjs → named-ports-DkEzOfzO.mjs} +40 -33
  91. package/dist/{native-android-JACyjTZs.mjs → native-android-CqgnOgsT.mjs} +43 -242
  92. package/dist/native-gradle-artifact-inputs-DHFnmrVf.mjs +270 -0
  93. package/dist/{native-gradle-inputs-Bep9JcSF.mjs → native-gradle-inputs-Dnh84Zbd.mjs} +3 -129
  94. package/dist/{native-run-DY_RLx3C.mjs → native-run-NwUuxbkg.mjs} +4 -5
  95. package/dist/{native-runtime-Dg1Q7tfF.mjs → native-runtime-B7KIafpM.mjs} +8 -7
  96. package/dist/native-source-Y0yLhFyQ.mjs +133 -0
  97. package/dist/{native-xcode-inputs-CB2iQeWq.mjs → native-xcode-inputs-D_VOfFL7.mjs} +2 -3
  98. package/dist/{native-xcode-ios-CXX39F7o.mjs → native-xcode-ios-BYDOHWLN.mjs} +27 -32
  99. package/dist/offload-worker.d.mts +65 -2
  100. package/dist/offload-worker.mjs +305 -73
  101. package/dist/operation-exec-BW0em61G.mjs +171 -0
  102. package/dist/{ownership-DEmM5vhh.mjs → ownership-C5fo5Edb.mjs} +3 -3
  103. package/dist/{page-CPaHeYqj.mjs → page-DBL2PiUU.mjs} +8 -4
  104. package/dist/{placement-log-BqGbTa61.mjs → placement-log-BnGgJRRZ.mjs} +1 -1
  105. package/dist/{plan-placement-Bwj-IjY1.mjs → plan-placement-DIsMtN-d.mjs} +12 -8
  106. package/dist/{ports-D-MmCTdv.mjs → ports-Cy1RkmuQ.mjs} +3 -3
  107. package/dist/{prebuild-uD_ipCxF.mjs → prebuild-D4JoEAEs.mjs} +49 -14
  108. package/dist/{project-BZNjmW_8.mjs → project-wM_XFTvE.mjs} +16 -16
  109. package/dist/{pull-request-Lfetn8Kr.mjs → pull-request-W1IuLXDt.mjs} +102 -20
  110. package/dist/{pull-request-zjCSAryH.d.mts → pull-request-eODyIqZF.d.mts} +6 -2
  111. package/dist/pull-requests.d.mts +2 -2
  112. package/dist/pull-requests.mjs +2 -2
  113. package/dist/{react-native-android-DuzH0cn3.mjs → react-native-android-6OZ7MSM7.mjs} +71 -48
  114. package/dist/{react-native-build-rhk4smwQ.mjs → react-native-build-Dvd8hC21.mjs} +8 -8
  115. package/dist/{react-native-doctor-CQpuIMso.mjs → react-native-doctor-DsoSF1Y9.mjs} +7 -7
  116. package/dist/{react-native-ios-Bhq1rJeV.mjs → react-native-ios-4u1Rn-GR.mjs} +40 -26
  117. package/dist/{recordings-DYteQSu4.mjs → recordings-CQmfzAh7.mjs} +1 -1
  118. package/dist/registration-BcRgF6Ox.mjs +51 -0
  119. package/dist/{reload-CmTRFJaX.mjs → reload-BzkYabB-.mjs} +16 -15
  120. package/dist/{reload-DzjSl5P_.mjs → reload-D7AVlb8N.mjs} +1 -1
  121. package/dist/{remote-ByYkXdGD.mjs → remote-DjGDmlTZ.mjs} +18 -15
  122. package/dist/{result-DNiS-tTP.mjs → result-D2Ykz_iD.mjs} +24 -23
  123. package/dist/{run-D23HmJMs.mjs → run-DidHghD1.mjs} +3 -2
  124. package/dist/{selection-CSl9i5qU.mjs → selection-DSMbWEX2.mjs} +6 -5
  125. package/dist/{server-bare-CxTrvDg8.mjs → server-bare-CafzuyFB.mjs} +2 -2
  126. package/dist/{server-command-CtzloH3v.mjs → server-command-C6QjeupS.mjs} +5 -5
  127. package/dist/{server-expo-DT_F_uVI.mjs → server-expo-CrjB29pq.mjs} +7 -5
  128. package/dist/server-expo-D58c9L0M.mjs +2 -0
  129. package/dist/{settings-CsJDEXgK.mjs → settings-C7O8A6ZI.mjs} +223 -243
  130. package/dist/{settings-T1gtc3bf.mjs → settings-DpR-1Wnn.mjs} +1 -1
  131. package/dist/{settings-write-HyVZ8eQ8.mjs → settings-write-CzD60rOD.mjs} +7 -6
  132. package/dist/settings.schema.json +13 -0
  133. package/dist/{simslim-Cgk17SXV.mjs → simslim-BNckWpXi.mjs} +2 -2
  134. package/dist/{slot-launch-DF8VfT64.mjs → slot-launch-CbfmNgM6.mjs} +6 -6
  135. package/dist/{stage-BIS0ydsV.mjs → stage-Bps5oius.mjs} +21 -4
  136. package/dist/{start-RChynRDp.mjs → start-Br-oxqMD.mjs} +1 -1
  137. package/dist/{start-7lpH7hmN.mjs → start-EojN4WFz.mjs} +622 -393
  138. package/dist/{state-C4ZtUisW.mjs → state--smjFSTL.mjs} +22 -7
  139. package/dist/{state-XMziexv2.mjs → state-08I3hw3_.mjs} +2 -2
  140. package/dist/{stats-53T7OTb9.mjs → stats-D3GerlFW.mjs} +5 -5
  141. package/dist/{stats-report-BFfMpWWF.mjs → stats-report-BzaPrRm6.mjs} +1 -1
  142. package/dist/{status-DqEUSSxs.mjs → status-BRROykC8.mjs} +2 -2
  143. package/dist/{status-CSi6tlRq.mjs → status-EvrK72L2.mjs} +1 -1
  144. package/dist/{status-BL7jVyAB.mjs → status-WBDajew2.mjs} +43 -29
  145. package/dist/{status-watch-GDCfqpTE.mjs → status-watch-Bg_u-pwR.mjs} +48 -16
  146. package/dist/status-worker.mjs +1 -1
  147. package/dist/{stim-desktop-C12we7lz.mjs → stim-desktop-D5OGpYZM.mjs} +2 -2
  148. package/dist/{stop-Bk_1qiV6.mjs → stop-DTZ9uTw3.mjs} +2 -2
  149. package/dist/{stop-D7h6jAXQ.mjs → stop-Dky10AEJ.mjs} +31 -22
  150. package/dist/{stop-CPzlM1L-.mjs → stop-Mv6W9FAk.mjs} +15 -16
  151. package/dist/supervisor-run.d.mts +3 -3
  152. package/dist/supervisor-run.mjs +28 -36
  153. package/dist/{support-Dlu37g6H.mjs → support-CNioewsd.mjs} +10 -10
  154. package/dist/{support-67vraa1Q.mjs → support-yUiOjnVY.mjs} +8 -8
  155. package/dist/swiftpm-artifact-inputs-DFcGsXDP.mjs +153 -0
  156. package/dist/swiftpm-macos-BIak-Rxv.mjs +532 -0
  157. package/dist/toolchain-BY8X8HXx.mjs +2 -0
  158. package/dist/{toolchain-Hp9sCpK4.mjs → toolchain-DpJMHq0n.mjs} +9 -6
  159. package/dist/{trigger-BAahxUPq.mjs → trigger-Cbyc41d_.mjs} +3 -3
  160. package/dist/trigger-yb_nFzPF.mjs +2 -0
  161. package/dist/{warm-progress-BHX5r0Ei.mjs → warm-progress-CA3TgT3-.mjs} +29 -16
  162. package/dist/web-CZ07gd77.mjs +2 -0
  163. package/dist/{web-CJmIj6AI.mjs → web-DKx6yoFA.mjs} +11 -10
  164. package/dist/web-run.mjs +11 -9
  165. package/dist/windows-report.mjs +1 -1
  166. package/dist/{workspace-state-Cjuigeeu.mjs → workspace-state-U08dEzhG.mjs} +3 -3
  167. package/dist/{workspaces-BccMFmGQ.mjs → workspaces-CpANmBlq.mjs} +594 -266
  168. package/dist/{worktree-DQ6Zi2Mv.mjs → worktree-CHecZ4Oq.mjs} +850 -551
  169. package/dist/worktree-ZqZVjD9K.mjs +2 -0
  170. package/dist/{xcode-Zlx3qjEs.mjs → xcode-BXn9-xYx.mjs} +5 -5
  171. package/package.json +7 -7
  172. package/shim/android-audio/Main.java +24 -0
  173. package/shim/android-audio/README.md +17 -0
  174. package/shim/android-audio.jar +0 -0
  175. package/dist/gc-C-WwL0yi.mjs +0 -3
  176. package/dist/git-C3iTsJaZ.mjs +0 -73
  177. package/dist/server-expo-C-90EhcG.mjs +0 -2
  178. package/dist/settings-DkdmlelE.d.mts +0 -15
  179. package/dist/swiftpm-macos-p8WZbxKU.mjs +0 -130
  180. package/dist/toolchain-DhKwp9iI.mjs +0 -2
  181. package/dist/trigger-Bf3uDcpv.mjs +0 -2
  182. package/dist/web-DknQETPs.mjs +0 -2
  183. package/dist/workspace-process-lock-1_1OoVW5.mjs +0 -57
  184. package/dist/worktree-CK2MpJW5.mjs +0 -2
@@ -1,19 +1,22 @@
1
- import { U as deviceSlotPlatforms } from "./config-CYcBF478.mjs";
2
- import { l as phaseLine } from "./command-output-B1UrjZHL.mjs";
3
- import { F as parseIosRemote, H as remoteEasFallbackSetting, R as publicUrlSetting, U as remoteIosSetting, rt as tunnelModeSetting } from "./settings-CsJDEXgK.mjs";
4
- import "./budget-Bs6SxxzO.mjs";
5
- import { b as resolveSimulatorAppFlag } from "./support-Dlu37g6H.mjs";
6
- import { n as devicePlacementRecord } from "./placement-log-BqGbTa61.mjs";
7
- import { r as devicePlacementLine } from "./eas-fallback-DJwZpy0c.mjs";
1
+ import { H as deviceSlotPlatforms } from "./config-DlrsduwG.mjs";
2
+ import { l as phaseLine } from "./command-output-gwpm28fu.mjs";
3
+ import { F as parseIosRemote, H as remoteEasFallbackSetting, R as publicUrlSetting, U as remoteIosSetting, rt as tunnelModeSetting } from "./settings-C7O8A6ZI.mjs";
4
+ import "./budget-Cvwn54qV.mjs";
5
+ import { b as resolveSimulatorAppFlag } from "./support-CNioewsd.mjs";
6
+ import { n as devicePlacementRecord } from "./placement-log-BnGgJRRZ.mjs";
7
+ import { r as devicePlacementLine } from "./eas-fallback-CSgAulr5.mjs";
8
8
  import chalk from "chalk";
9
9
  //#region src/commands/ios/remote.ts
10
- function resolveIosRemote({ opts, settings, physical, recorded }) {
11
- const target = opts.remote !== void 0 ? parseIosRemote(opts.remote) : remoteIosSetting(settings);
12
- if (physical && target?.kind === "machine") return { failure: {
10
+ function deviceRemoteConflict(remote, physical) {
11
+ if (!physical || remote === void 0 || !parseIosRemote(remote)) return null;
12
+ return {
13
13
  code: "STIM_BAD_ARG",
14
- message: "--device builds for a phone connected to this machine, and --remote installs on a remote one.",
15
- remedy: "Pass only one of --device and --remote; unset ios.remote for a local phone."
16
- } };
14
+ message: `--device runs on a phone connected to this machine, and --remote ${remote} chooses where a simulator runs.`,
15
+ remedy: "Pass only one of --device and --remote, or --remote local with --device."
16
+ };
17
+ }
18
+ function resolveIosRemote({ opts, settings, physical, recorded }) {
19
+ const target = opts.remote !== void 0 ? parseIosRemote(opts.remote) : physical ? null : remoteIosSetting(settings);
17
20
  const machine = target?.kind === "machine" ? target.machine : null;
18
21
  if (recorded && recorded.machine !== machine && machine !== "auto") return { failure: {
19
22
  code: "STIM_BAD_ARG",
@@ -67,7 +70,7 @@ async function selectIosPlacement(args) {
67
70
  const { root, slot, d, opts, deviceType, runtime, noWait, phase, log, release, appMode, metroCheck } = args;
68
71
  const viewer = resolveSimulatorAppFlag(opts.simulatorApp, args.physical, null);
69
72
  if ("refusal" in viewer) return { failure: viewer.refusal };
70
- const refusal = args.validateSelectors();
73
+ const refusal = await args.validateSelectors();
71
74
  if (refusal) return { failure: refusal };
72
75
  const easFallback = args.supportsRemote && remoteEasFallbackSetting(args.settings);
73
76
  try {
@@ -194,4 +197,4 @@ async function connectIosBackend(root, backend, deviceType, d, env, operation) {
194
197
  };
195
198
  }
196
199
  //#endregion
197
- export { iosPlacementBudget as a, hostedIosSelectors as i, connectIosTarget as n, selectIosPlacement as o, hostedIosMetroNote as r, connectIosBackend as t };
200
+ export { hostedIosSelectors as a, hostedIosMetroNote as i, connectIosTarget as n, iosPlacementBudget as o, deviceRemoteConflict as r, selectIosPlacement as s, connectIosBackend as t };
@@ -1,19 +1,19 @@
1
1
  import { l as workspaceAgentDeviceDir } from "./paths-DQtTgsBf.mjs";
2
- import { U as deviceSlotPlatforms, p as getProject } from "./config-CYcBF478.mjs";
3
- import { i as formatDuration, l as phaseLine } from "./command-output-B1UrjZHL.mjs";
4
- import { $ as settingOriginScope, F as parseIosRemote, G as resolveCacheProviderConfig, V as remoteAndroidSetting, W as resolveAndroidLayout, Z as settingFile, a as SETTING_SHAPE_REMEDY, d as androidLayoutSetting, et as settingShapeErrors, f as androidLayoutSettingError, it as unknownSettingKeys, nt as settingsLayers, p as cacheProviderSettingError, s as androidAvdConfigSettingError, u as androidDataPartitionSizeGbSettingError } from "./settings-CsJDEXgK.mjs";
5
- import { v as detectIsExpo } from "./project-BZNjmW_8.mjs";
6
- import { B as recordFinishedBuild, Hn as isEasAuthFailureText, Rn as UPLOAD_TIMEOUT_MS, Vn as easAuthNote, zn as cacheLevel } from "./budget-Bs6SxxzO.mjs";
7
- import { J as pickDefaultSystemImage, P as listInstalledSystemImages, R as ownedAvdDeviceProfile, W as ownedAvdSystemImage, X as profileNeedsFoldFeature, ht as parkedMaxSetting, j as listAvdDeviceProfiles, t as DEFAULT_AVD_DEVICE_PROFILE, tt as systemImageSupportsFold } from "./android-DUYkNF4u.mjs";
8
- import { a as workspaceLinkLine } from "./stim-desktop-C12we7lz.mjs";
2
+ import { H as deviceSlotPlatforms, p as getProject } from "./config-DlrsduwG.mjs";
3
+ import { i as formatDuration, l as phaseLine } from "./command-output-gwpm28fu.mjs";
4
+ import { $ as settingOriginScope, F as parseIosRemote, G as resolveCacheProviderConfig, V as remoteAndroidSetting, W as resolveAndroidLayout, Z as settingFile, a as SETTING_SHAPE_REMEDY, d as androidLayoutSetting, et as settingShapeErrors, f as androidLayoutSettingError, it as unknownSettingKeys, nt as settingsLayers, p as cacheProviderSettingError, s as androidAvdConfigSettingError, u as androidDataPartitionSizeGbSettingError } from "./settings-C7O8A6ZI.mjs";
5
+ import { v as detectIsExpo } from "./project-wM_XFTvE.mjs";
6
+ import { B as recordFinishedBuild, Hn as isEasAuthFailureText, Rn as UPLOAD_TIMEOUT_MS, Vn as easAuthNote, zn as cacheLevel } from "./budget-Cvwn54qV.mjs";
7
+ import { B as ownedAvdDeviceProfile, I as listInstalledSystemImages, K as ownedAvdSystemImage, N as listAvdDeviceProfilesAsync, Q as profileNeedsFoldFeature, X as pickDefaultSystemImage, _t as parkedMaxSetting, rt as systemImageSupportsFold, t as DEFAULT_AVD_DEVICE_PROFILE } from "./android-C7sVmyI9.mjs";
8
+ import { a as workspaceLinkLine } from "./stim-desktop-D5OGpYZM.mjs";
9
9
  import { d as optimizationBuildProfile, l as artifactCachePolicy, p as resolveOptimizations, u as compilerCacheFallbackMessage } from "./errors-ccaPc4ox.mjs";
10
- import { n as CCACHE_UNAVAILABLE, r as ccacheActivityLine } from "./ccache-BJRZ9pG3.mjs";
11
- import { c as readProductFlavors, s as productFlavorRefusal } from "./react-native-build-rhk4smwQ.mjs";
12
- import { l as parseDeviceWait } from "./device-lease-run-C8raGFoP.mjs";
13
- import { t as DEFAULT_DEVICE_SLOT_WAIT_MS } from "./device-capacity-CMlqEcvw.mjs";
14
- import { n as resolveAndroidCas, r as resolveAndroidCompilerCache } from "./android-cas-Ct5b1xCK.mjs";
15
- import { r as isPhysicalDeviceRequest } from "./native-runtime-Dg1Q7tfF.mjs";
16
- 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-67vraa1Q.mjs";
10
+ import { n as CCACHE_UNAVAILABLE, r as ccacheActivityLine } from "./ccache-Btwc36-I.mjs";
11
+ import { c as readProductFlavors, s as productFlavorRefusal } from "./react-native-build-Dvd8hC21.mjs";
12
+ import { l as parseDeviceWait } from "./device-lease-run-xJPQ_QQG.mjs";
13
+ import { t as DEFAULT_DEVICE_SLOT_WAIT_MS } from "./device-capacity-DK5_EwRS.mjs";
14
+ import { n as resolveAndroidCas, r as resolveAndroidCompilerCache } from "./android-cas-ngferVq2.mjs";
15
+ import { r as isPhysicalDeviceRequest } from "./native-runtime-B7KIafpM.mjs";
16
+ 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-yUiOjnVY.mjs";
17
17
  import { buildDiagnostics } from "@stim-cli/core/state";
18
18
  import chalk from "chalk";
19
19
  //#region src/commands/android/plan.ts
@@ -118,10 +118,10 @@ function resolveAndroidBuildPlan({ settings, settingsContext, env, easProfile, v
118
118
  }
119
119
  };
120
120
  }
121
- function resolveAndroidRunPlan({ settings, settingsContext, env, slot, easProfile, variant: variantFlag, systemImage: systemImageFlag, deviceProfile: deviceProfileFlag, device: deviceFlag, wait: waitFlag, waitConflict, remote: commandRemoteBackend, buildCache: requestedBuildCache }, { warn, runtimeKind, resolveCompilerCache = androidCompilerCache, resolveCacheProvider = resolveCacheProviderConfig, validateAvdConfig = androidAvdConfigSettingError, readFlavors = readProductFlavors, variantProblem = (variant) => productFlavorRefusal({
121
+ async function resolveAndroidRunPlan({ settings, settingsContext, env, slot, signal, easProfile, variant: variantFlag, systemImage: systemImageFlag, deviceProfile: deviceProfileFlag, device: deviceFlag, wait: waitFlag, waitConflict, remote: commandRemoteBackend, buildCache: requestedBuildCache }, { warn, runtimeKind, resolveCompilerCache = androidCompilerCache, resolveCacheProvider = resolveCacheProviderConfig, validateAvdConfig = androidAvdConfigSettingError, readFlavors = readProductFlavors, variantProblem = (variant) => productFlavorRefusal({
122
122
  flavors: readFlavors(resolveAndroidLayout(settings, settingsContext.projectPath, settingsContext.repoRoot ?? settingsContext.projectPath)),
123
123
  variant
124
- }), detectExpo = () => detectIsExpo(settingsContext.projectPath), listSystemImages = listInstalledSystemImages, listDeviceProfiles = listAvdDeviceProfiles, parkedLimit = parkedMaxSetting, supportsFold = systemImageSupportsFold, ownedAvd = slotOwnedAvd }) {
124
+ }), detectExpo = () => detectIsExpo(settingsContext.projectPath), listSystemImages = listInstalledSystemImages, listDeviceProfiles = listAvdDeviceProfilesAsync, parkedLimit = parkedMaxSetting, supportsFold = systemImageSupportsFold, ownedAvd = slotOwnedAvd }) {
125
125
  const root = settingsContext.projectPath;
126
126
  const [shapeError, ...moreShapeErrors] = [parkedLimit("android").error, ...settingShapeErrors(settings)].filter((error) => Boolean(error));
127
127
  if (shapeError) return fail("STIM_BAD_ARG", shapeError, SETTING_SHAPE_REMEDY, { lines: moreShapeErrors });
@@ -150,19 +150,19 @@ function resolveAndroidRunPlan({ settings, settingsContext, env, slot, easProfil
150
150
  const isExpo = detectExpo();
151
151
  const physical = isPhysicalDeviceRequest(deviceFlag);
152
152
  if (physical && deviceFlag === "") return fail("STIM_BAD_ARG", "--device was given an empty serial.", "Pass `--device` on its own to take the first connected device this workspace can lease, or `--device <serial>` to name one.");
153
- if (physical && commandRemoteBackend) return fail("STIM_BAD_ARG", "--device installs on a device connected to this machine, and --remote installs on a remote one.", "Pass only one of --device and --remote.");
153
+ if (physical && commandRemoteBackend !== null && parseIosRemote(commandRemoteBackend)) return fail("STIM_BAD_ARG", `--device installs on a device connected to this machine, and --remote ${commandRemoteBackend} chooses where an emulator runs.`, "Pass only one of --device and --remote, or --remote local with --device.");
154
154
  const noWait = waitFlag === false;
155
155
  if (waitConflict) return fail("STIM_BAD_ARG", "--wait and --no-wait ask for opposite things.", "Pass only one of `--wait <seconds>` and `--no-wait`.");
156
156
  const waitParsed = parseDeviceWait(noWait ? void 0 : waitFlag);
157
157
  if ("error" in waitParsed) return fail("STIM_BAD_ARG", waitParsed.error, "Pass a whole number of seconds, e.g. --wait 90. `--wait 0` refuses a busy lease or device slot at once.");
158
158
  const waitSeconds = waitParsed.seconds;
159
- const remoteTarget = commandRemoteBackend !== null ? parseIosRemote(commandRemoteBackend) : remoteAndroidSetting(settings);
160
- if (physical && remoteTarget?.kind === "machine") return fail("STIM_BAD_ARG", "--device installs on a phone connected to this machine, and --remote installs on a remote one.", "Pass only one of --device and --remote; unset android.remote for a local phone.");
159
+ const remoteTarget = commandRemoteBackend !== null ? parseIosRemote(commandRemoteBackend) : physical ? null : remoteAndroidSetting(settings);
161
160
  const machine = remoteTarget?.kind === "machine" ? remoteTarget.machine : null;
162
161
  const remoteBackend = !physical && remoteTarget?.kind === "backend" ? remoteTarget.backend : null;
163
162
  if (!machine) {
164
- const refusal = androidDeviceSelectorRefusal({
163
+ const refusal = await androidDeviceSelectorRefusal({
165
164
  settingsContext,
165
+ signal,
166
166
  slot,
167
167
  systemImageFlag,
168
168
  deviceProfileFlag,
@@ -210,7 +210,7 @@ function resolveAndroidRunPlan({ settings, settingsContext, env, slot, easProfil
210
210
  }
211
211
  };
212
212
  }
213
- function androidDeviceSelectorRefusal({ settingsContext, slot, systemImageFlag, deviceProfileFlag, systemImage, deviceProfile, physical, remoteBackend }, { listSystemImages = listInstalledSystemImages, listDeviceProfiles = listAvdDeviceProfiles, supportsFold = systemImageSupportsFold, ownedAvd = slotOwnedAvd } = {}) {
213
+ async function androidDeviceSelectorRefusal({ signal, settingsContext, slot, systemImageFlag, deviceProfileFlag, systemImage, deviceProfile, physical, remoteBackend }, { listSystemImages = listInstalledSystemImages, listDeviceProfiles = listAvdDeviceProfilesAsync, supportsFold = systemImageSupportsFold, ownedAvd = slotOwnedAvd } = {}) {
214
214
  const root = settingsContext.projectPath;
215
215
  const settingsLayersForOrigin = settingsLayers(settingsContext);
216
216
  const imageRefusal = systemImageRefusal({
@@ -223,13 +223,14 @@ function androidDeviceSelectorRefusal({ settingsContext, slot, systemImageFlag,
223
223
  listImages: listSystemImages
224
224
  });
225
225
  if (imageRefusal) return fail(imageRefusal.code, imageRefusal.message, imageRefusal.remedy);
226
- const profileRefusal = deviceProfileRefusal({
226
+ const profileRefusal = await deviceProfileRefusal({
227
227
  flag: deviceProfileFlag,
228
228
  resolved: deviceProfile,
229
229
  origin: settingOriginScope(settingsLayersForOrigin, "android.deviceProfile"),
230
230
  physical,
231
231
  remoteBackend,
232
- listProfiles: listDeviceProfiles
232
+ listProfiles: listDeviceProfiles,
233
+ signal
233
234
  });
234
235
  if (profileRefusal) return fail(profileRefusal.code, profileRefusal.message, profileRefusal.remedy);
235
236
  const avdFlagRefusal = remoteAvdFlagRefusal({
@@ -1,5 +1,5 @@
1
- import { f as ownership_claim_exports, p as process_identity_exports, t as getExecutor } from "./exec-_UbtCQcG.mjs";
2
- import { a as macosRuntimeClaim, i as macosProcess, r as macosLogFile, s as updateMacosRecord } from "./state-XMziexv2.mjs";
1
+ import { g as process_identity_exports, t as getExecutor, x as ownership_claim_exports } from "./exec-DEoAhcze.mjs";
2
+ import { a as macosRuntimeClaim, i as macosProcess, r as macosLogFile, s as updateMacosRecord } from "./state-08I3hw3_.mjs";
3
3
  import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
4
4
  import { LOG_ROTATE_BYTES } from "@stim-cli/core";
5
5
  import { readMacosRecord } from "@stim-cli/core/state";
@@ -93,6 +93,7 @@ async function runMacosSupervisor(root, launchId) {
93
93
  process.on("SIGTERM", stop);
94
94
  process.on("SIGINT", stop);
95
95
  log("info", `Started ${record.product} (pid ${app.pid}).`);
96
+ process.send?.("macos-registered", () => {});
96
97
  await ended;
97
98
  process.off("SIGTERM", stop);
98
99
  process.off("SIGINT", stop);
@@ -1,11 +1,11 @@
1
- import { m as reportSignal, u as operationState } from "./exec-_UbtCQcG.mjs";
1
+ import { _ as reportSignal, m as operationState } from "./exec-DEoAhcze.mjs";
2
2
  import { v as withDirLock$1 } from "./paths-DQtTgsBf.mjs";
3
- import { Q as findPeer$1, Z as endpoint, _ as loadConfig$1, ct as readHostPermissions, d as getConfigDir, et as outdatedServer, nt as reachMachine, ot as setupRemedy, rt as realIo, tt as parseMachine$1 } from "./config-CYcBF478.mjs";
3
+ import { $ as outdatedServer, X as endpoint, Z as findPeer$1, _ as loadConfig$1, at as setupRemedy, d as getConfigDir, et as parseMachine$1, nt as realIo, ot as tailscaleStatusAsync, st as readHostPermissions, tt as reachMachine } from "./config-DlrsduwG.mjs";
4
+ import { releaseClaim, tryAcquireClaim } from "@stim-cli/core/ownership-claim";
4
5
  import { mkdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
5
6
  import { hostname } from "node:os";
6
7
  import { ambientContext, ambientEnv, withDirLockAsync } from "@stim-cli/core";
7
8
  import { MACHINE_CREDENTIALS_VERSION, OFFLOAD_MODES, acceptsShape, automaticMachineEnabled, buildMachinesFile, buildMachinesLock, cannotHost, deviceHostMachinesClaims, deviceHostMachinesFile, deviceHostMachinesLock, isJsonObject, parseMachine, readBuildMachines, readDeviceHostMachines, settingDefinition } from "@stim-cli/core/state";
8
- import { releaseClaim, tryAcquireClaim } from "@stim-cli/core/ownership-claim";
9
9
  import { InvalidArgumentError } from "commander";
10
10
  //#region src/device-host/machines.ts
11
11
  function note$1(title, detail, fix = null) {
@@ -28,7 +28,7 @@ function configuredMachines() {
28
28
  * The `remote.machines` entries this machine asked for device-host access, in setting order, without the ones the
29
29
  * tailnet reports as running another OS than macOS, which can never host; null when the setting is invalid.
30
30
  */
31
- function hostingMachines(status = realIo.status) {
31
+ async function hostingMachines(status, signal) {
32
32
  const configured = configuredMachines();
33
33
  if (configured === null) return null;
34
34
  let candidates = configured;
@@ -39,7 +39,8 @@ function hostingMachines(status = realIo.status) {
39
39
  candidates = configured;
40
40
  }
41
41
  if (!candidates.length) return candidates;
42
- const current = status();
42
+ const current = await (status ? status() : tailscaleStatusAsync(signal));
43
+ signal?.throwIfAborted();
43
44
  return candidates.filter((machine) => !cannotHost(current, machine));
44
45
  }
45
46
  async function store(machines, operation) {
@@ -1,5 +1,5 @@
1
- import { t as getExecutor, v as __commonJSMin, y as __require } from "./exec-_UbtCQcG.mjs";
2
- import { q as resolveProjectSettings } from "./settings-CsJDEXgK.mjs";
1
+ import { C as __require, S as __commonJSMin, t as getExecutor } from "./exec-DEoAhcze.mjs";
2
+ import { q as resolveProjectSettings } from "./settings-C7O8A6ZI.mjs";
3
3
  import { c as registerMetroStore, f as resolveMetroSharedCache, n as supervisorError, r as appendCacheStore, s as metroStoreRoot } from "./errors-ccaPc4ox.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-_UbtCQcG.mjs";
2
- import { n as METRO_COMMAND_PORT } from "./settings-CsJDEXgK.mjs";
3
- import { T as MODE_COMMAND } from "./project-BZNjmW_8.mjs";
1
+ import { t as getExecutor } from "./exec-DEoAhcze.mjs";
2
+ import { n as METRO_COMMAND_PORT } from "./settings-C7O8A6ZI.mjs";
3
+ import { T as MODE_COMMAND } from "./project-wM_XFTvE.mjs";
4
4
  import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
5
- import { p as signalProcessTree } from "./metro-DEXpIhHC.mjs";
6
- import { f as recordFromLine, h as superviseChildServer, m as withProjectNode } from "./server-expo-DT_F_uVI.mjs";
5
+ import { f as signalProcessTree } from "./metro-DiXtA3Ty.mjs";
6
+ import { f as recordFromLine, h as superviseChildServer, m as withProjectNode } from "./server-expo-CrjB29pq.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
@@ -1,7 +1,8 @@
1
- import { t as getExecutor } from "./exec-_UbtCQcG.mjs";
1
+ import { t as getExecutor } from "./exec-DEoAhcze.mjs";
2
2
  import { n as stripAnsi, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
- import { Qt as cancellableSleep, q as resolveProjectSettings } from "./settings-CsJDEXgK.mjs";
4
- import { C as resolvePackageJson } from "./project-BZNjmW_8.mjs";
3
+ import { u as cancellableSleep } from "./operation-exec-BW0em61G.mjs";
4
+ import { q as resolveProjectSettings } from "./settings-C7O8A6ZI.mjs";
5
+ import { C as resolvePackageJson } from "./project-wM_XFTvE.mjs";
5
6
  import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
6
7
  import { a as expoMetroStoreEnv, c as registerMetroStore, f as resolveMetroSharedCache, i as expoMetroConfigPath, n as supervisorError, o as metroStoreConfirmedRoot, s as metroStoreRoot } from "./errors-ccaPc4ox.mjs";
7
8
  import { accessSync, constants, existsSync, readFileSync } from "node:fs";
@@ -74,10 +75,11 @@ function superviseChildServer({ mode, child, log, toRecord, signal, alive = null
74
75
  while (running() && Date.now() < deadline) await cancellableSleep(25, { ref: false });
75
76
  return !running();
76
77
  };
77
- if (!running() || !signal("SIGTERM")) return;
78
+ if (!running()) return;
79
+ signal("SIGTERM");
78
80
  if (!await gone()) {
79
81
  signal("SIGKILL");
80
- await gone();
82
+ if (!await gone()) throw new Error(`Could not confirm shutdown of dev-server pid ${child.pid ?? "unknown"}.`);
81
83
  }
82
84
  }
83
85
  };
@@ -0,0 +1,2 @@
1
+ import { p as startExpoServer } from "./server-expo-CrjB29pq.mjs";
2
+ export { startExpoServer };