stim 1.25.0 → 1.27.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 (182) hide show
  1. package/README.md +1 -1
  2. package/dist/{acquire-artifact-zA4S7RHE.mjs → acquire-artifact-BKN2Yuhg.mjs} +2 -2
  3. package/dist/{act-BbHS3oV8.mjs → act-ROviTF_t.mjs} +415 -118
  4. package/dist/{activity-BpjwrQXU.mjs → activity-Cd-ysFes.mjs} +6 -7
  5. package/dist/{agent-device-usage-output-Bnkerfod.mjs → agent-device-usage-output-C5nCKWp9.mjs} +5 -5
  6. package/dist/{android-CNZgRC-4.mjs → android--HBgpvpW.mjs} +5 -5
  7. package/dist/{android-BGwuK3Mc.mjs → android-Cd6w7_qw.mjs} +134 -57
  8. package/dist/{android-saBeB4lr.mjs → android-Deb9X3_Y.mjs} +37 -15
  9. package/dist/{android-Cjcj8MCw.mjs → android-DriNoAVy.mjs} +99 -47
  10. package/dist/{android-cas-BVqh2Zep.mjs → android-cas-D5e6ecUg.mjs} +4 -4
  11. package/dist/android-cas-compiler.mjs +1 -1
  12. package/dist/{android-project-CTYaETc0.d.mts → android-project-DUGMbq28.d.mts} +55 -1
  13. package/dist/api.d.mts +20 -7
  14. package/dist/api.mjs +42 -32
  15. package/dist/apk-signed-tail-BHQHx3Rm.mjs +142 -0
  16. package/dist/{artifact-Co8zixVx.mjs → artifact-0AGJYB9O.mjs} +28 -28
  17. package/dist/{artifact-DN8JNwqS.mjs → artifact-faemIZv5.mjs} +40 -30
  18. package/dist/{artifact-platform-CMRc0M_r.mjs → artifact-platform-BO2Uvk_A.mjs} +1 -1
  19. package/dist/{attempt-DW-mQqM7.mjs → attempt-ClyJlZPT.mjs} +4 -2
  20. package/dist/auto-placement-z-H5pJza.mjs +350 -0
  21. package/dist/{browser-web-CCgZsHmI.mjs → browser-web-slD8AvLp.mjs} +16 -17
  22. package/dist/{build-cache-CKCzxzxA.mjs → build-cache-gBJ-WKzA.mjs} +141 -37
  23. package/dist/{build-CAiw8Ezm.mjs → build-hS0QyFlQ.mjs} +38 -31
  24. package/dist/{build-plan-zCuHGlA8.mjs → build-plan-CBqYbzYM.mjs} +7 -6
  25. package/dist/{cache-manifest-BPXRONJz.mjs → cache-manifest-DEjqGGat.mjs} +1 -1
  26. package/dist/cache-manifest.mjs +1 -1
  27. package/dist/{budget-HyShrIpL.mjs → ccache-BWTze1Ls.mjs} +634 -1514
  28. package/dist/{cdp-BG3FJCCx.mjs → cdp-C3svvXiE.mjs} +1 -1
  29. package/dist/{chrome-BvV8ssI3.mjs → chrome-DyDWurWG.mjs} +1 -1
  30. package/dist/{cli-C4w607Pz.mjs → cli-ftXDLto1.mjs} +24 -23
  31. package/dist/cli.mjs +1 -1
  32. package/dist/{client-BQsmyp_-.mjs → client-xsdxrhWA.mjs} +77 -116
  33. package/dist/collector-run.d.mts +10 -9
  34. package/dist/collector-run.mjs +42 -27
  35. package/dist/{command-output-BBvS1H6v.mjs → command-output-Dj-WT4BP.mjs} +1 -1
  36. package/dist/{config-BZhXY15H.mjs → config-Cn94Jc0g.mjs} +343 -18
  37. package/dist/{launch-DscF1QfM.mjs → dependencies-BGokZ-Ng.mjs} +330 -279
  38. package/dist/{dependency-state-BwNCYG5Q.mjs → dependency-state-C3OtgG94.mjs} +14 -7
  39. package/dist/{detached-entry-KmieOKgN.mjs → detached-entry-BPlSaCwC.mjs} +1 -1
  40. package/dist/{dev-client-CHoXXZeg.mjs → dev-client-BMca82xo.mjs} +2 -2
  41. package/dist/{device-F5-4z9ef.mjs → device-BJm0irrq.mjs} +16 -16
  42. package/dist/{device-capacity-ZYaRALv5.mjs → device-capacity-6LP7QsaA.mjs} +103 -25
  43. package/dist/device-host-worker.mjs +19 -21
  44. package/dist/{device-ios-DkHBrmvH.mjs → device-ios-534c14fz.mjs} +288 -28
  45. package/dist/{device-lease-run-ogEeJ62K.mjs → device-lease-run-DwsGfjUN.mjs} +5 -5
  46. package/dist/{device-pool-BIg8MU8l.mjs → device-pool-BnQqvs6o.mjs} +3 -3
  47. package/dist/{device-B9FqTBYW.mjs → device-tM41-TUq.mjs} +25 -24
  48. package/dist/{doctor-A_Nr_fDe.mjs → doctor-Dbx1ZpD2.mjs} +1 -1
  49. package/dist/{doctor-k3P3PizH.mjs → doctor-DyqE9n1J.mjs} +28 -16
  50. package/dist/{doctor-Bm8TVpGn.mjs → doctor-F-3VUUyN.mjs} +128 -35
  51. package/dist/{doctor-fingerprint-zlujA1Gs.mjs → doctor-fingerprint-o7ZI9YLn.mjs} +9 -3
  52. package/dist/doctor-fingerprint.mjs +1 -1
  53. package/dist/{doctor-watchman-BovI1y3-.mjs → doctor-watchman-CxDbyrrt.mjs} +5 -5
  54. package/dist/{eas-build-CyDKNTBP.mjs → eas-build-CjNSWmjo.mjs} +4 -4
  55. package/dist/eas-fallback-9fqb46kW.mjs +87 -0
  56. package/dist/{eas-session-ledger-BMCA1gdO.mjs → eas-session-ledger-DrP4OuuM.mjs} +6 -6
  57. package/dist/{error-diagnostics-B1Mj_-7h.mjs → error-diagnostics-snej9k4j.mjs} +51 -25
  58. package/dist/{exec-VFRpu1iA.mjs → exec-aULwtNly.mjs} +57 -6
  59. package/dist/{gc-eaz403W6.mjs → gc-BRwAY3qT.mjs} +2 -2
  60. package/dist/{gc-B9jcnmIk.mjs → gc-CGZ1Yg88.mjs} +218 -72
  61. package/dist/{guide-DR0K0xW9.mjs → guide-_rfEh_zM.mjs} +839 -222
  62. package/dist/{hosted-android-Bvb2-ZxD.mjs → hosted-android-BMKzUNnY.mjs} +4 -4
  63. package/dist/{hosted-client-rsRqysJc.mjs → hosted-client-D7Pk_Oo1.mjs} +13 -9
  64. package/dist/{hosted-logs-CWKGYWNX.mjs → hosted-logs-B1gqQuva.mjs} +18 -12
  65. package/dist/hosted-logs-sync-Dg3qrZmV.mjs +195 -0
  66. package/dist/{hosted-macos-d0pv9Tth.mjs → hosted-macos-B9w4H8hc.mjs} +6 -6
  67. package/dist/{hosted-native-BxTizGU2.mjs → hosted-native-CdgaiuyP.mjs} +17 -17
  68. package/dist/{idle-shutdown-BIyfl0Zj.mjs → idle-shutdown-Cbvo5KEh.mjs} +21 -9
  69. package/dist/{ios-BRVM8b0P.mjs → ios-B5HlVMhQ.mjs} +138 -55
  70. package/dist/{ios-Dvt97HgQ.mjs → ios-Bk4mWbtS.mjs} +8 -8
  71. package/dist/{ios-ENC4sRPA.mjs → ios-CsRVik64.mjs} +7 -1
  72. package/dist/{ios-BQzvJlzw.mjs → ios-E26qSpkb.mjs} +94 -11
  73. package/dist/{ios-device-CKSvk0bu.mjs → ios-device-C_QkIf1Z.mjs} +3 -3
  74. package/dist/{ios-device-B6HK951C.mjs → ios-device-CiBA-er9.mjs} +1 -1
  75. package/dist/{ios-project-DCUDo06I.mjs → ios-project-D8Jcy_br.mjs} +22 -9
  76. package/dist/{ios-signing-4c_qXvQm.mjs → ios-signing-BJzvDPfU.mjs} +2 -2
  77. package/dist/{ios-state-CT9nV5SP.mjs → ios-state-BZ03NFgF.mjs} +1 -1
  78. package/dist/{js-swap-Z9HbC4cj.mjs → js-swap-Dg2a945i.mjs} +8 -7
  79. package/dist/{launch-D0lPvFFu.mjs → launch-CRyBeNsA.mjs} +53 -44
  80. package/dist/lightened-BCsdAGj_.mjs +171 -0
  81. package/dist/{logs-BsIRre8x.mjs → logs-CC_-ZzEE.mjs} +10 -174
  82. package/dist/{logs-Crs9y34Z.mjs → logs-aJQb-RDg.mjs} +112 -38
  83. package/dist/{macos-CcUlJPMu.mjs → macos-BGmTpnv9.mjs} +1 -1
  84. package/dist/{macos-D477nfzH.mjs → macos-DlCBhMw5.mjs} +73 -39
  85. package/dist/macos-run.mjs +1 -1
  86. package/dist/maintenance-run.mjs +30 -13
  87. package/dist/{metro-1pJgCX4U.mjs → metro-CvyD-xwe.mjs} +4 -4
  88. package/dist/{metro-gateway-Bp9gJQAN.mjs → metro-gateway-BnHdqMO_.mjs} +3 -4
  89. package/dist/{named-ports-BVbn8SvC.mjs → named-ports-BCyMWA6b.mjs} +3 -3
  90. package/dist/{native-android-BvMizJn1.mjs → native-android-DlpxCyOP.mjs} +17 -18
  91. package/dist/{native-gradle-artifact-inputs-BJscK4vN.mjs → native-gradle-artifact-inputs-C13qT7R_.mjs} +5 -5
  92. package/dist/{native-runtime-B9w_Qyz3.mjs → native-runtime-DqaIBO5w.mjs} +9 -9
  93. package/dist/{native-source-D-4Dh4JU.mjs → native-source-D1AzWiuP.mjs} +1 -1
  94. package/dist/{native-xcode-inputs-Cv4l-obn.mjs → native-xcode-inputs-B1W8SrxB.mjs} +3 -3
  95. package/dist/{native-xcode-ios-DGrg90hE.mjs → native-xcode-ios-QPP0Rm68.mjs} +17 -18
  96. package/dist/{ndjson-CgE_o3Dl.mjs → ndjson-Dy2W4vRa.mjs} +2 -2
  97. package/dist/offload-worker.d.mts +3 -1
  98. package/dist/offload-worker.mjs +34 -25
  99. package/dist/{operation-exec-CUZifp6Z.mjs → operation-exec-Dp4FuIGR.mjs} +1 -1
  100. package/dist/{ownership-jxxz-19m.mjs → ownership-Bx-0cku-.mjs} +3 -3
  101. package/dist/{page-CzEA_-5_.mjs → page-CQJlcj3x.mjs} +2 -2
  102. package/dist/{phone-reverses-CYb7RRAx.mjs → phone-reverses-C9yAaKEv.mjs} +18 -4
  103. package/dist/{placement-log-DjOXJRIH.mjs → placement-log-BXUbiZM6.mjs} +3 -3
  104. package/dist/{plan-placement-BqKgKHCi.mjs → plan-placement-UxnQjv5Z.mjs} +36 -10
  105. package/dist/{ports-DtS1Amb0.mjs → ports-uUrghqWN.mjs} +3 -3
  106. package/dist/prebuild-BDpToDgR.mjs +1246 -0
  107. package/dist/{project-BiC68mIp.mjs → project-DYj-HVx6.mjs} +17 -18
  108. package/dist/{pull-request-CbNlkFok.mjs → pull-request-BzLmzAIQ.mjs} +2 -2
  109. package/dist/pull-requests.mjs +1 -1
  110. package/dist/{react-native-android-DRYqoJc4.mjs → react-native-android-DDBccgJw.mjs} +56 -36
  111. package/dist/{react-native-build-CwZB-agu.mjs → react-native-build-DaK2IFyP.mjs} +9 -9
  112. package/dist/{react-native-doctor-BCrytK7h.mjs → react-native-doctor-B-Mw6DcR.mjs} +50 -9
  113. package/dist/{react-native-ios-Cr1buNFo.mjs → react-native-ios-DjYwUF9U.mjs} +45 -25
  114. package/dist/{recordings-BaoQ0t-J.mjs → recordings-C20iUZfp.mjs} +1 -1
  115. package/dist/{registration-CN6nlhcD.mjs → registration-BwCe64PH.mjs} +1 -1
  116. package/dist/{reload-Beftw2X3.mjs → reload-DJBeF_rC.mjs} +1 -1
  117. package/dist/{reload-FbSgMF8x.mjs → reload-fUdkH2_p.mjs} +16 -16
  118. package/dist/{remote-BuZj6AyU.mjs → remote-y6n99WMW.mjs} +22 -9
  119. package/dist/{result-CR2vk2cj.mjs → result-CTqBw2Te.mjs} +32 -21
  120. package/dist/{run-BtzE09Dl.mjs → run-DaCeNKRm.mjs} +3 -3
  121. package/dist/{selection-D5cxEl3t.mjs → selection-Bs8phwhN.mjs} +183 -62
  122. package/dist/{server-bare-CH9X0RLn.mjs → server-bare-BOh-iZEj.mjs} +2 -2
  123. package/dist/{server-command-CaBbDNU2.mjs → server-command-8CuA51Cv.mjs} +6 -6
  124. package/dist/{server-expo-Ck8EIidM.mjs → server-expo-ABQs2XFA.mjs} +4 -4
  125. package/dist/server-expo-Ba_Y21vB.mjs +2 -0
  126. package/dist/{settings-B5tCoq9N.mjs → settings-BDVI8Ivc.mjs} +331 -62
  127. package/dist/{settings-DzH9mGQZ.mjs → settings-CMHhQNwI.mjs} +24 -3
  128. package/dist/settings-payload-cm60Zhib.mjs +257 -0
  129. package/dist/settings-write-BdNRLlBn.mjs +185 -0
  130. package/dist/settings.schema.json +84 -39
  131. package/dist/{simslim-BjxszUAb.mjs → simslim-DCQwzoPy.mjs} +4 -3
  132. package/dist/{slot-launch-QeuJMlnJ.mjs → slot-launch-0l7RqSpr.mjs} +6 -6
  133. package/dist/{stage-D8xlRU2D.mjs → stage-F4cAfJGi.mjs} +2 -2
  134. package/dist/{start-C1JLjkNw.mjs → start-DcqnF9p8.mjs} +1 -1
  135. package/dist/{start-YMpNwLhh.mjs → start-DrPwER_2.mjs} +27 -23
  136. package/dist/{state-DMRNP7-4.mjs → state-BX1y5syV.mjs} +4 -5
  137. package/dist/{state-DPaM3u5K.mjs → state-CZxLyetD.mjs} +2 -3
  138. package/dist/{stats-CP7STzZw.mjs → stats-GxuCbles.mjs} +5 -5
  139. package/dist/{stats-report-n2U5plhk.mjs → stats-report-B86Cv7Uc.mjs} +1 -1
  140. package/dist/{status-Fect2w9R.mjs → status-7ULDEJ1e.mjs} +1 -1
  141. package/dist/{status-CRLiJ-O_.mjs → status-BfnK9pUd.mjs} +25 -26
  142. package/dist/{status-cNw6i0_t.mjs → status-Bj7ZYvvc.mjs} +1 -1
  143. package/dist/{status-watch-Bc2J4TZn.mjs → status-watch-BfabQn03.mjs} +5 -5
  144. package/dist/status-worker.mjs +1 -1
  145. package/dist/{stim-desktop-DS0mzR8U.mjs → stim-desktop-CbWo21kb.mjs} +2 -2
  146. package/dist/{stop-COP6PQqw.mjs → stop-CH79S3IZ.mjs} +5 -6
  147. package/dist/{stop-Db9Kh-UA.mjs → stop-D-EAr25B.mjs} +25 -22
  148. package/dist/{stop-Br7LKxBE.mjs → stop-x1Yu3He4.mjs} +2 -2
  149. package/dist/supervisor-run.d.mts +1 -0
  150. package/dist/supervisor-run.mjs +17 -18
  151. package/dist/{support-qKcbgmI5.mjs → support-Be0UeVZU.mjs} +10 -10
  152. package/dist/{support-Cxj9CmII.mjs → support-CNg_YsOk.mjs} +6 -6
  153. package/dist/{swiftpm-artifact-inputs-iY9fsmOc.mjs → swiftpm-artifact-inputs-uPqYvGBv.mjs} +4 -4
  154. package/dist/{swiftpm-macos-Bp_sn9P4.mjs → swiftpm-macos-Ch4YjY_A.mjs} +11 -12
  155. package/dist/toolchain-CbCG6C5Z.mjs +2413 -0
  156. package/dist/toolchain-JYAOquPg.mjs +2 -0
  157. package/dist/{trigger-CBMe2YLH.mjs → trigger-DMou-X7j.mjs} +3 -3
  158. package/dist/trigger-qp2ji5wE.mjs +2 -0
  159. package/dist/{warm-progress-BV3ZPmcY.mjs → warm-progress-C0RsbngN.mjs} +731 -728
  160. package/dist/{web-B4Yjyt1G.mjs → web-Cq_AQ4DK.mjs} +9 -10
  161. package/dist/web-Je6abcpz.mjs +2 -0
  162. package/dist/web-run.mjs +9 -9
  163. package/dist/windows-report.mjs +1 -1
  164. package/dist/{workspace-state-CPSp3mav.mjs → workspace-state-BjqdjnJR.mjs} +46 -8
  165. package/dist/{workspaces-C9w4aeXF.mjs → workspaces-DFbj07jp.mjs} +1801 -76
  166. package/dist/{worktree-CclFIe1Z.mjs → worktree-COAJ3-OD.mjs} +934 -511
  167. package/dist/{worktree-Ct9Gk3KL.mjs → worktree-JGUd_53L.mjs} +1 -1
  168. package/package.json +8 -8
  169. package/dist/ccache-h1FKhZeg.mjs +0 -143
  170. package/dist/created-devices-D2Aca-xu.mjs +0 -52
  171. package/dist/eas-fallback-gaZi-dJL.mjs +0 -381
  172. package/dist/hosted-ios-RtVcJH3u.mjs +0 -15
  173. package/dist/native-run-D5OJsGwA.mjs +0 -276
  174. package/dist/paths-DQtTgsBf.mjs +0 -42
  175. package/dist/prebuild-JUaqOLpc.mjs +0 -501
  176. package/dist/server-expo-C16Zf2k7.mjs +0 -2
  177. package/dist/settings-write-n0zwfohx.mjs +0 -360
  178. package/dist/toolchain-DB1aeqxO.mjs +0 -2
  179. package/dist/toolchain-VzLJzZ7O.mjs +0 -908
  180. package/dist/trigger-BLsHgAGR.mjs +0 -2
  181. package/dist/web-DS4UDWvf.mjs +0 -2
  182. package/dist/xcode-CiIIDnuD.mjs +0 -910
@@ -1,8 +1,8 @@
1
- import { t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
- import { r as childEnvironment } from "./operation-exec-CUZifp6Z.mjs";
3
- import { o as androidHome } from "./android-Cjcj8MCw.mjs";
4
- import { n as buildCacheKey } from "./build-cache-CKCzxzxA.mjs";
5
- import { _ as nativeGradleLocalSourceDigest, h as gradleOffloadInputs } from "./client-BQsmyp_-.mjs";
1
+ import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
+ import { r as childEnvironment } from "./operation-exec-Dp4FuIGR.mjs";
3
+ import { o as androidHome } from "./android-DriNoAVy.mjs";
4
+ import { n as buildCacheKey } from "./build-cache-gBJ-WKzA.mjs";
5
+ import { _ as nativeGradleLocalSourceDigest, h as gradleOffloadInputs } from "./client-xsdxrhWA.mjs";
6
6
  import { n as fingerprintNativeInputs } from "./native-inputs-TRTTTRxt.mjs";
7
7
  import { createHash } from "node:crypto";
8
8
  import { homedir } from "node:os";
@@ -1,10 +1,9 @@
1
- import { r as ensureWorkspaceStorageAsync } from "./paths-DQtTgsBf.mjs";
2
- import { l as phaseLine } from "./command-output-BBvS1H6v.mjs";
3
- import { r as readWorkspaceState$1 } from "./workspace-state-CPSp3mav.mjs";
4
- import { M as metroPortSetting } from "./settings-B5tCoq9N.mjs";
5
- import { d as resolveProjectMetro } from "./metro-1pJgCX4U.mjs";
6
- import { Yt as LAUNCH_BUNDLING, Zt as LAUNCH_UNVERIFIED } from "./budget-HyShrIpL.mjs";
7
- import { c as startDevServer } from "./start-YMpNwLhh.mjs";
1
+ import { r as readWorkspaceState$1, v as ensureWorkspaceStorageAsync } from "./workspace-state-BjqdjnJR.mjs";
2
+ import { l as phaseLine } from "./command-output-Dj-WT4BP.mjs";
3
+ import { N as metroPortSetting } from "./settings-BDVI8Ivc.mjs";
4
+ import { d as resolveProjectMetro } from "./metro-CvyD-xwe.mjs";
5
+ import { It as LAUNCH_BUNDLING, Rt as LAUNCH_UNVERIFIED } from "./ccache-BWTze1Ls.mjs";
6
+ import { c as startDevServer } from "./start-DrPwER_2.mjs";
8
7
  import { readIdleStop } from "@stim-cli/core/state";
9
8
  import chalk from "chalk";
10
9
  //#region src/commands/native-runtime.ts
@@ -59,11 +58,12 @@ async function ensureWorkspaceStorageSafely(root, { note = (_line) => {} } = {})
59
58
  throw err;
60
59
  }
61
60
  }
62
- function launchOutcomeRecord({ launchState, release, bundleId, configuration, metroPort, unattributed = false }) {
61
+ function launchOutcomeRecord({ launchState, release, process = false, bundleId, configuration, metroPort, unattributed = false }) {
63
62
  const unverified = launchState === LAUNCH_UNVERIFIED;
64
63
  const bundling = launchState === LAUNCH_BUNDLING;
65
64
  let msg;
66
- if (release) msg = unverified ? `${bundleId} could not be verified as running after its ${configuration} launch` : `${bundleId} is running its embedded ${configuration} bundle`;
65
+ if (process) msg = unverified ? `${bundleId} could not be verified as running` : `${bundleId} is running its native process`;
66
+ else if (release) msg = unverified ? `${bundleId} could not be verified as running after its ${configuration} launch` : `${bundleId} is running its embedded ${configuration} bundle`;
67
67
  else if (unverified && unattributed) msg = `a bundle delivered on this workspace's Metro port ${metroPort} could not be attributed to ${bundleId} on this device: another slot of the same platform shares that Metro`;
68
68
  else if (unverified) msg = `no bundle request from ${bundleId} reached this workspace's Metro on port ${metroPort}`;
69
69
  else if (bundling) msg = `${bundleId} requested a bundle from this workspace's Metro on port ${metroPort}; it was still being built when the launch check ended`;
@@ -1,4 +1,4 @@
1
- import { s as gitAsync } from "./operation-exec-CUZifp6Z.mjs";
1
+ import { s as gitAsync } from "./operation-exec-Dp4FuIGR.mjs";
2
2
  import { n as fingerprintNativeInputs, r as manifestDigest } from "./native-inputs-TRTTTRxt.mjs";
3
3
  import { createHash } from "node:crypto";
4
4
  import { createReadStream } from "node:fs";
@@ -1,6 +1,6 @@
1
- import { d as workspaceDir, u as workspaceDerivedData } from "./paths-DQtTgsBf.mjs";
2
- import { a as killOnAbort, l as gitQuietAsync, r as childEnvironment } from "./operation-exec-CUZifp6Z.mjs";
3
- import { h as pbxString, m as pbxReferences } from "./project-BiC68mIp.mjs";
1
+ import { E as workspaceDir, T as workspaceDerivedData } from "./workspace-state-BjqdjnJR.mjs";
2
+ import { a as killOnAbort, l as gitQuietAsync, r as childEnvironment } from "./operation-exec-Dp4FuIGR.mjs";
3
+ import { h as pbxString, m as pbxReferences } from "./project-DYj-HVx6.mjs";
4
4
  import { n as fingerprintNativeInputs, t as NativeInputError } from "./native-inputs-TRTTTRxt.mjs";
5
5
  import { createHash } from "node:crypto";
6
6
  import { existsSync, readFileSync, realpathSync } from "node:fs";
@@ -1,22 +1,21 @@
1
- import { t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
- import { o as sharedCompilationCache } from "./paths-DQtTgsBf.mjs";
3
- import { K as resolveCacheProviderConfig, Pt as repoRootAsync, W as remoteIosSetting, tt as settingShapeErrors } from "./settings-B5tCoq9N.mjs";
4
- import { g as selectNativeXcodeProject, h as pbxString, p as NativeXcodeError } from "./project-BiC68mIp.mjs";
5
- import { r as register } from "./cache-manifest-BPXRONJz.mjs";
6
- import { Rn as processContext, Z as statsProjectKey } from "./budget-HyShrIpL.mjs";
7
- import { d as runCancellationSignal } from "./native-run-D5OJsGwA.mjs";
8
- import { l as filesystemBuildCapability, n as buildCacheKey } from "./build-cache-CKCzxzxA.mjs";
1
+ import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
+ import { x as sharedCompilationCache } from "./workspace-state-BjqdjnJR.mjs";
3
+ import { G as remoteIosSetting, J as resolveCacheProviderConfig, Lt as repoRootAsync, rt as settingShapeErrors } from "./settings-BDVI8Ivc.mjs";
4
+ import { g as selectNativeXcodeProject, h as pbxString, p as NativeXcodeError } from "./project-DYj-HVx6.mjs";
5
+ import { Tn as processContext } from "./ccache-BWTze1Ls.mjs";
6
+ import { r as register } from "./cache-manifest-DEjqGGat.mjs";
7
+ import { ot as statsProjectKey } from "./workspaces-DFbj07jp.mjs";
8
+ import { D as runCaptured, F as compilationCacheSettings, L as parseSwiftVersion, N as buildXcode, O as runPodInstall, R as parseXcodeMajor, T as readPodState, V as readBundleId, j as HEARTBEAT_INTERVAL_MS, ot as runCancellationSignal, s as iosToolchainAsync, w as podsAreStale } from "./toolchain-CbCG6C5Z.mjs";
9
+ import { d as filesystemBuildCapability, n as buildCacheKey } from "./build-cache-gBJ-WKzA.mjs";
9
10
  import { l as artifactCachePolicy, p as resolveOptimizations } from "./errors-DHm_U5gv.mjs";
10
- import { a as buildXcode, l as parseSwiftVersion, p as readBundleId, r as HEARTBEAT_INTERVAL_MS, s as compilationCacheSettings, u as parseXcodeMajor } from "./xcode-CiIIDnuD.mjs";
11
- import { a as nativeTransferRefusal } from "./client-BQsmyp_-.mjs";
12
- import { _ as runCaptured, a as iosToolchainAsync, h as readPodState, m as podsAreStale, v as runPodInstall } from "./toolchain-VzLJzZ7O.mjs";
13
- import { a as deviceModelRefusal, h as resolveDeviceType, m as resolveConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-qKcbgmI5.mjs";
14
- import { r as gateProfileForDevice } from "./ios-signing-4c_qXvQm.mjs";
15
- import { s as explainBuildMiss, u as skippedMissReason } from "./prebuild-JUaqOLpc.mjs";
16
- import { n as planFlagRefusal, t as planCachedBuild } from "./build-plan-zCuHGlA8.mjs";
17
- import { t as IosRecipeRefusal } from "./ios-project-DCUDo06I.mjs";
18
- import { i as DEFAULT_DEPS, r as iosProcessRuntime } from "./launch-DscF1QfM.mjs";
19
- import { a as nativeXcodeSources, i as nativeXcodePackages, n as nativeXcodeInputSnapshot, t as nativeXcodeHasPackages } from "./native-xcode-inputs-Cv4l-obn.mjs";
11
+ import { a as nativeTransferRefusal } from "./client-xsdxrhWA.mjs";
12
+ import { a as deviceModelRefusal, h as resolveDeviceType, m as resolveConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-Be0UeVZU.mjs";
13
+ import { r as gateProfileForDevice } from "./ios-signing-BJzvDPfU.mjs";
14
+ import { s as explainBuildMiss, u as skippedMissReason } from "./prebuild-BDpToDgR.mjs";
15
+ import { n as planFlagRefusal, t as planCachedBuild } from "./build-plan-CBqYbzYM.mjs";
16
+ import { t as IosRecipeRefusal } from "./ios-project-D8Jcy_br.mjs";
17
+ import { c as iosProcessRuntime, t as DEFAULT_DEPS } from "./dependencies-BGokZ-Ng.mjs";
18
+ import { a as nativeXcodeSources, i as nativeXcodePackages, n as nativeXcodeInputSnapshot, t as nativeXcodeHasPackages } from "./native-xcode-inputs-B1W8SrxB.mjs";
20
19
  import { existsSync } from "node:fs";
21
20
  import { join } from "node:path";
22
21
  //#region src/integrations/native-xcode-ios.ts
@@ -1,5 +1,5 @@
1
1
  import { ensurePrivateDir, rotateLog } from "@stim-cli/core";
2
- import { LEVELS as LEVELS$1, SOURCES as SOURCES$1, levelRank, parseNdjsonLine, parseNdjsonText, readNdjsonGenerations as readNdjsonGenerations$1, runId } from "@stim-cli/core/state";
2
+ import { LEVELS as LEVELS$1, SOURCES as SOURCES$1, createNdjsonTail, levelRank, parseNdjsonLine, parseNdjsonText, readNdjsonGenerations as readNdjsonGenerations$1, runId } from "@stim-cli/core/state";
3
3
  import { dirname } from "path";
4
4
  import { closeSync, openSync, writeSync } from "fs";
5
5
  //#region src/ndjson.ts
@@ -115,4 +115,4 @@ function stamp(record) {
115
115
  };
116
116
  }
117
117
  //#endregion
118
- export { parseNdjsonLine as a, levelRank as i, SOURCES$1 as n, parseNdjsonText as o, createNdjsonWriter as r, readNdjsonGenerations$1 as s, LEVELS$1 as t };
118
+ export { levelRank as a, readNdjsonGenerations$1 as c, createNdjsonWriter as i, SOURCES$1 as n, parseNdjsonLine as o, createNdjsonTail as r, parseNdjsonText as s, LEVELS$1 as t };
@@ -1,4 +1,4 @@
1
- import { c as IosToolchain, g as CompilationCacheActivity, h as CcacheActivity, i as AndroidBuildOptions, l as WorkerToolchain, p as Optimizations, r as SwiftpmArtifactToolchain, t as NativeGradleArtifactReceipt } from "./android-project-CTYaETc0.mjs";
1
+ import { c as IosToolchain, g as CompilationCacheActivity, h as CcacheActivity, i as AndroidBuildOptions, l as WorkerToolchain, p as Optimizations, r as SwiftpmArtifactToolchain, t as NativeGradleArtifactReceipt } from "./android-project-DUGMbq28.mjs";
2
2
  import { StimContext } from "@stim-cli/core";
3
3
  import { BuildFingerprintSource, BuildReactNativeArtifactQuery, BuildStartParams, BuildSwiftpmArtifactQuery } from "@stim-cli/core/protocol";
4
4
  //#region src/offload/react-native-artifact.d.ts
@@ -94,6 +94,8 @@ interface WorkerJob {
94
94
  cacheArtifact?: boolean;
95
95
  stimBuild?: string;
96
96
  compat?: number;
97
+ /** The JDK major the client builds on; the build runs on an installed JDK of it when the default differs. */
98
+ jdk?: string;
97
99
  native?: BuildStartParams["native"];
98
100
  optimizations: Optimizations["ios"] | null;
99
101
  /** How long the client's Gradle daemon stays warm after an Android build; 0 or absent stops it when the build ends. */
@@ -1,29 +1,28 @@
1
- import { t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
- import { d as workspaceDir, m as workspaceLogsDir$1 } from "./paths-DQtTgsBf.mjs";
3
- import { k as writeConfigSetting } from "./config-BZhXY15H.mjs";
1
+ import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
+ import { E as workspaceDir, k as workspaceLogsDir$1 } from "./workspace-state-BjqdjnJR.mjs";
3
+ import { k as writeConfigSetting } from "./config-Cn94Jc0g.mjs";
4
4
  import { n as stripAnsi } from "./process-output-Fpl8PYi8.mjs";
5
- import { o as git, s as gitAsync } from "./operation-exec-CUZifp6Z.mjs";
6
- import { d as androidLayoutSetting, y as iosProjectDirSetting } from "./settings-B5tCoq9N.mjs";
7
- import { f as projectRegistry, g as selectNativeXcodeProject } from "./project-BiC68mIp.mjs";
8
- import { o as parseNdjsonText } from "./ndjson-CgE_o3Dl.mjs";
9
- import { Rn as processContext } from "./budget-HyShrIpL.mjs";
10
- import { d as fingerprintProject, i as compareSourceLists, v as refingerprintAfterMutation } from "./build-cache-CKCzxzxA.mjs";
11
- import { _ as unmetNodePin, g as projectNodeLine, h as pathNodeVersion, v as withProjectNode } from "./server-expo-Ck8EIidM.mjs";
12
- import { n as CCACHE_UNAVAILABLE, o as resolveCcache } from "./ccache-h1FKhZeg.mjs";
13
- import { C as COMPILATION_CACHE_CORRUPT, b as validateGradleManifest, f as reactNativeArtifactReceipt, g as gradleStateDirectories, h as gradleOffloadInputs, m as reactNativeBuildQuery, p as reactNativeArtifactToolchain, v as nativeGradleOutputs, w as clearCorruptCompilationCache, x as verifyGradleTransfer } from "./client-BQsmyp_-.mjs";
14
- import { f as workerToolchain, h as readPodState, i as availableIphone, m as podsAreStale, v as runPodInstall } from "./toolchain-VzLJzZ7O.mjs";
5
+ import { o as git, s as gitAsync } from "./operation-exec-Dp4FuIGR.mjs";
6
+ import { b as iosProjectDirSetting, d as androidLayoutSetting } from "./settings-BDVI8Ivc.mjs";
7
+ import { f as projectRegistry, g as selectNativeXcodeProject } from "./project-DYj-HVx6.mjs";
8
+ import { s as parseNdjsonText } from "./ndjson-Dy2W4vRa.mjs";
9
+ import { Tn as processContext, n as CCACHE_UNAVAILABLE, s as resolveCcache } from "./ccache-BWTze1Ls.mjs";
10
+ import { O as runPodInstall, T as readPodState, b as useJdkMajor, i as availableIphone, w as podsAreStale, x as workerToolchain } from "./toolchain-CbCG6C5Z.mjs";
11
+ import { S as refingerprintAfterMutation, i as compareSourceLists, m as fingerprintProject } from "./build-cache-gBJ-WKzA.mjs";
12
+ import { _ as unmetNodePin, g as projectNodeLine, h as pathNodeVersion, v as withProjectNode } from "./server-expo-ABQs2XFA.mjs";
13
+ import { C as COMPILATION_CACHE_CORRUPT, b as validateGradleManifest, f as reactNativeArtifactReceipt, g as gradleStateDirectories, h as gradleOffloadInputs, m as reactNativeBuildQuery, p as reactNativeArtifactToolchain, v as nativeGradleOutputs, w as clearCorruptCompilationCache, x as verifyGradleTransfer } from "./client-xsdxrhWA.mjs";
15
14
  import { n as fingerprintNativeInputs, r as manifestDigest } from "./native-inputs-TRTTTRxt.mjs";
16
- import { a as sourceManifest, o as verifyNativeTransfer } from "./native-source-D-4Dh4JU.mjs";
17
- import { n as buildAndroid, o as gradlewPath, r as buildIos, u as assembleTaskFor } from "./react-native-build-CwZB-agu.mjs";
18
- import { f as podAction } from "./support-qKcbgmI5.mjs";
19
- import { a as runPrebuild, r as recordPrebuild, t as planPrebuild } from "./prebuild-JUaqOLpc.mjs";
20
- import { g as dumpApkManifest, p as apkPackage } from "./support-Cxj9CmII.mjs";
21
- import { n as buildAndroidOperation, t as buildIosOperation } from "./build-CAiw8Ezm.mjs";
22
- import { i as stageBundle, n as resolveBundleExtras } from "./stage-D8xlRU2D.mjs";
23
- import { t as logLines } from "./run-BtzE09Dl.mjs";
24
- import { r as nativeXcodeMetadataDirectories } from "./native-xcode-inputs-Cv4l-obn.mjs";
25
- import { n as swiftpmArtifactInputs, r as swiftpmArtifactSnapshot, t as readSwiftpmArtifactToolchain } from "./swiftpm-artifact-inputs-iY9fsmOc.mjs";
26
- import { a as nativeGradleWorkerArtifactIdentity, i as nativeGradleArtifactSnapshotFromReceipt, o as nativeGradleWorkerScope } from "./native-gradle-artifact-inputs-BJscK4vN.mjs";
15
+ import { a as sourceManifest, o as verifyNativeTransfer } from "./native-source-D1AzWiuP.mjs";
16
+ import { n as buildAndroid, o as gradlewPath, r as buildIos, u as assembleTaskFor } from "./react-native-build-DaK2IFyP.mjs";
17
+ import { f as podAction } from "./support-Be0UeVZU.mjs";
18
+ import { a as runPrebuild, r as recordPrebuild, t as planPrebuild } from "./prebuild-BDpToDgR.mjs";
19
+ import { g as dumpApkManifest, p as apkPackage } from "./support-CNg_YsOk.mjs";
20
+ import { n as buildAndroidOperation, t as buildIosOperation } from "./build-hS0QyFlQ.mjs";
21
+ import { i as stageBundle, n as resolveBundleExtras } from "./stage-F4cAfJGi.mjs";
22
+ import { t as logLines } from "./run-DaCeNKRm.mjs";
23
+ import { r as nativeXcodeMetadataDirectories } from "./native-xcode-inputs-B1W8SrxB.mjs";
24
+ import { n as swiftpmArtifactInputs, r as swiftpmArtifactSnapshot, t as readSwiftpmArtifactToolchain } from "./swiftpm-artifact-inputs-uPqYvGBv.mjs";
25
+ import { a as nativeGradleWorkerArtifactIdentity, i as nativeGradleArtifactSnapshotFromReceipt, o as nativeGradleWorkerScope } from "./native-gradle-artifact-inputs-C13qT7R_.mjs";
27
26
  import { createHash } from "node:crypto";
28
27
  import { chmodSync, constants, copyFileSync, cpSync, createReadStream, createWriteStream, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, readlinkSync, realpathSync, renameSync, rmSync, statSync, symlinkSync, writeFileSync } from "node:fs";
29
28
  import { isDeepStrictEqual } from "node:util";
@@ -1342,9 +1341,19 @@ async function main() {
1342
1341
  if (mode === "build") {
1343
1342
  const chunks = [];
1344
1343
  for await (const chunk of process.stdin) chunks.push(chunk);
1344
+ const job = JSON.parse(Buffer.concat(chunks).toString("utf8"));
1345
+ if (job.platform === "android" && job.jdk) {
1346
+ const unavailable = useJdkMajor(job.jdk);
1347
+ if (unavailable) return emit({
1348
+ type: "result",
1349
+ ok: false,
1350
+ code: "build-refused",
1351
+ message: unavailable
1352
+ });
1353
+ }
1345
1354
  return emit({
1346
1355
  type: "result",
1347
- ...await build(JSON.parse(Buffer.concat(chunks).toString("utf8")))
1356
+ ...await build(job)
1348
1357
  });
1349
1358
  }
1350
1359
  process.stderr.write("usage: offload-worker offer | offer-native-xcode | offer-native-gradle | native-gradle-artifact | build < job.json\n");
@@ -1,4 +1,4 @@
1
- import { b as operationState, c as throwIfCancelled, l as WorkspaceProcessCleanupError, t as getExecutor } from "./exec-VFRpu1iA.mjs";
1
+ import { b as operationState, c as throwIfCancelled, l as WorkspaceProcessCleanupError, t as getExecutor } from "./exec-aULwtNly.mjs";
2
2
  import { sep } from "node:path";
3
3
  //#region src/workspace/git.ts
4
4
  const GIT_TIMEOUT_MS = 1e4;
@@ -1,6 +1,6 @@
1
- import { S as process_identity_exports } from "./exec-VFRpu1iA.mjs";
2
- import { c as withWorkspaceStateLock, d as writeWorkspaceState, r as readWorkspaceState } from "./workspace-state-CPSp3mav.mjs";
3
- import { c as pidExists } from "./metro-1pJgCX4U.mjs";
1
+ import { S as process_identity_exports } from "./exec-aULwtNly.mjs";
2
+ import { c as withWorkspaceStateLock, d as writeWorkspaceState, r as readWorkspaceState } from "./workspace-state-BjqdjnJR.mjs";
3
+ import { c as pidExists } from "./metro-CvyD-xwe.mjs";
4
4
  import { realpathSync } from "node:fs";
5
5
  //#region src/collector/state.ts
6
6
  function collectorRoot(root) {
@@ -1,5 +1,5 @@
1
- import { S as process_identity_exports, c as throwIfCancelled } from "./exec-VFRpu1iA.mjs";
2
- import { t as connectOwnedBrowser } from "./cdp-BG3FJCCx.mjs";
1
+ import { S as process_identity_exports, c as throwIfCancelled } from "./exec-aULwtNly.mjs";
2
+ import { t as connectOwnedBrowser } from "./cdp-C3svvXiE.mjs";
3
3
  //#region src/web/page.ts
4
4
  /** The record of a verified live browser: its supervisor and Chrome are the processes the record names. */
5
5
  function liveWebRecord(record) {
@@ -1,7 +1,21 @@
1
- import { U as parseDeviceSlotKey, V as deviceSlotKey } from "./config-BZhXY15H.mjs";
2
- import { r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-CPSp3mav.mjs";
3
- import { $ as removeMetroReverses } from "./android-Cjcj8MCw.mjs";
1
+ import { r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-BjqdjnJR.mjs";
2
+ import { U as parseDeviceSlotKey, V as deviceSlotKey } from "./config-Cn94Jc0g.mjs";
3
+ import { $ as removeMetroReverses } from "./android-DriNoAVy.mjs";
4
+ import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-CdgaiuyP.mjs";
4
5
  import { isJsonObject } from "@stim-cli/core/state";
6
+ //#region src/device-host/hosted-ios.ts
7
+ async function prepareHostedIos(machine, selectors, recorded, mode) {
8
+ return await prepareHostedNative(machine, selectors, recorded, "ios", false, mode);
9
+ }
10
+ async function placeHostedIos(target, options) {
11
+ return await placeHostedNative(target, {
12
+ ...options,
13
+ platform: "ios",
14
+ reserved: (placement) => options.reserved(placement)
15
+ });
16
+ }
17
+ const stopHostedIos = stopHostedNative;
18
+ //#endregion
5
19
  //#region src/devices/phone-reverses.ts
6
20
  const KEY = "phoneReverses";
7
21
  function readRecords(state) {
@@ -54,4 +68,4 @@ async function removePhoneReverses(root, { slot, operation } = {}) {
54
68
  });
55
69
  }
56
70
  //#endregion
57
- export { removePhoneReverses as n, recordPhoneReverse as t };
71
+ export { stopHostedIos as a, prepareHostedIos as i, removePhoneReverses as n, placeHostedIos as r, recordPhoneReverse as t };
@@ -1,4 +1,4 @@
1
- import { n as buildPlacementSettings } from "./selection-D5cxEl3t.mjs";
1
+ import { r as buildPlacementSettings } from "./selection-Bs8phwhN.mjs";
2
2
  //#region src/placement-log.ts
3
3
  /** `machine` is `local` when the run stays on this machine. */
4
4
  function placementRecord(input) {
@@ -20,13 +20,13 @@ function skippedCandidates(skipped) {
20
20
  msg: reason
21
21
  }));
22
22
  }
23
- function devicePlacementRecord({ platform, fromFlag, easFallback = false, placed }) {
23
+ function devicePlacementRecord({ platform, selected = "auto", fromFlag, easFallback = false, placed }) {
24
24
  return placementRecord({
25
25
  kind: "device",
26
26
  platform,
27
27
  settings: [{
28
28
  key: `${platform}.remote`,
29
- value: "auto",
29
+ value: selected,
30
30
  from: fromFlag ? "flag" : "setting"
31
31
  }, ...easFallback ? [{
32
32
  key: "remote.easFallback",
@@ -1,15 +1,22 @@
1
- import { f as hostingMachines } from "./selection-D5cxEl3t.mjs";
2
- import { r as readHostedNative } from "./ios-state-CT9nV5SP.mjs";
3
- import { i as probeHost, n as automaticDevicePlacement } from "./eas-fallback-gaZi-dJL.mjs";
1
+ import { _ as loadConfig$1 } from "./config-Cn94Jc0g.mjs";
2
+ import { Tn as processContext } from "./ccache-BWTze1Ls.mjs";
3
+ import { _ as hostingMachines } from "./selection-Bs8phwhN.mjs";
4
+ import { r as readHostedNative } from "./ios-state-BZ03NFgF.mjs";
5
+ import { n as buildPreferenceRefusal } from "./settings-payload-cm60Zhib.mjs";
6
+ import { r as probeHost, t as automaticDevicePlacement } from "./auto-placement-z-H5pJza.mjs";
4
7
  import { automaticMachineEnabled } from "@stim-cli/core/state";
5
8
  //#region src/device-host/plan-placement.ts
9
+ const DOCTOR_REMEDY = "Run `stim doctor` to check the hosts and settings placement uses.";
10
+ function planChoice(choice) {
11
+ return choice && ("runtime" in choice || "systemImage" in choice) ? choice : null;
12
+ }
6
13
  /**
7
14
  * Where `--plan` assumes the next run puts its simulator or emulator, with no session, reservation or state write.
8
15
  * A named Mac, or the Mac a recorded session already holds, answers with the device its `device-host.offer` would
9
16
  * give; `auto` repeats the placement decision a run makes now and, when that stays on this machine, notes any Mac
10
17
  * whose device would key differently. The result predicts the cache key only; a run reads its own device.
11
18
  */
12
- async function planHostedDevice({ root, slot, platform, machine, selectors, sameKey, eas, deps = {}, operation }) {
19
+ async function planHostedDevice({ root, slot, platform, machine, placement = "auto", selectors, sameKey, eas, deps = {}, operation }) {
13
20
  const { automatic = automaticDevicePlacement, probe = probeHost, machines = () => hostingMachines(void 0, operation?.signal) } = deps;
14
21
  const named = async (name) => {
15
22
  const result = await probe(name, platform, selectors, void 0, operation?.signal);
@@ -17,7 +24,8 @@ async function planHostedDevice({ root, slot, platform, machine, selectors, same
17
24
  kind: "unknown",
18
25
  reason: `${name} did not give a ${platform} device (${result.probe.failure})`
19
26
  };
20
- const { choice, declined } = result.probe.offer;
27
+ const { declined } = result.probe.offer;
28
+ const choice = planChoice(result.probe.offer.choice);
21
29
  if (!choice) return {
22
30
  kind: "unknown",
23
31
  reason: `${name} has no ${platform} device for this selection${declined ? ` (${declined})` : ""}`
@@ -32,12 +40,21 @@ async function planHostedDevice({ root, slot, platform, machine, selectors, same
32
40
  try {
33
41
  const recorded = readHostedNative(root, platform, slot)[slot];
34
42
  if (recorded) return await named(recorded.machine);
43
+ const invalid = buildPreferenceRefusal((operation ?? processContext(root)).env, loadConfig$1()?.remote?.build);
44
+ if (invalid) return {
45
+ kind: "refused",
46
+ code: invalid.code,
47
+ message: invalid.message,
48
+ remedy: invalid.remedy ?? DOCTOR_REMEDY
49
+ };
35
50
  const placed = await automatic({
36
51
  root,
37
52
  slot,
38
53
  platform,
54
+ placement,
39
55
  selectors,
40
56
  noWait: false,
57
+ waitMs: 0,
41
58
  signal: operation?.signal,
42
59
  ...eas ? { eas } : {}
43
60
  }, {
@@ -46,27 +63,36 @@ async function planHostedDevice({ root, slot, platform, machine, selectors, same
46
63
  });
47
64
  if (placed.placement.decision === "eas") return {
48
65
  kind: "unknown",
49
- reason: `auto would run on an EAS Simulator now (${placed.placement.reason}), which --plan cannot read without a session`
66
+ reason: `${placement} would run on an EAS Simulator now (${placed.placement.reason}), which --plan cannot read without a session`
50
67
  };
51
68
  if (placed.target) return {
52
69
  kind: "hosted",
53
70
  choice: placed.target.choice,
54
- placement: `on ${placed.target.host.machine}, as auto would now`
71
+ placement: `on ${placed.target.host.machine}, as ${placement} would now`
55
72
  };
56
73
  const names = (await machines() ?? []).filter((name) => automaticMachineEnabled("device", name));
57
74
  operation?.signal.throwIfAborted();
58
75
  const offers = await Promise.all(names.map((name) => probe(name, platform, selectors, void 0, operation?.signal)));
59
- const differs = (await Promise.all(offers.map(async ({ probe: each }) => "offer" in each && each.offer.choice && await sameKey(each.offer.choice) === false ? [each.machine] : []))).flat();
76
+ const differs = (await Promise.all(offers.map(async ({ probe: each }) => {
77
+ const choice = "offer" in each ? planChoice(each.offer.choice) : null;
78
+ return choice && await sameKey(choice) === false ? [each.machine] : [];
79
+ }))).flat();
60
80
  if (differs.length) return {
61
81
  kind: "local",
62
- placement: `this machine; auto may use ${differs.join(", ")}, which builds for another architecture, so its key differs`
82
+ placement: `this machine; ${placement} may use ${differs.join(", ")}, which builds for another architecture, so its key differs`
63
83
  };
64
84
  return {
65
85
  kind: "local",
66
- placement: names.length ? `this machine; auto may use ${names.join(", ")}` : "this machine"
86
+ placement: names.length ? `this machine; ${placement} may use ${names.join(", ")}` : "this machine"
67
87
  };
68
88
  } catch (error) {
69
89
  operation?.signal.throwIfAborted();
90
+ if (error instanceof Error && "code" in error && error.code === "STIM_HOSTING_REFUSED") return {
91
+ kind: "refused",
92
+ code: error.code,
93
+ message: error.message,
94
+ remedy: "remedy" in error && typeof error.remedy === "string" ? error.remedy : DOCTOR_REMEDY
95
+ };
70
96
  return {
71
97
  kind: "unknown",
72
98
  reason: error.message
@@ -1,6 +1,6 @@
1
- import { p as getProject } from "./config-BZhXY15H.mjs";
2
- import { n as findCommandWorkspace } from "./project-BiC68mIp.mjs";
3
- import { n as getNamedPort, t as clearNamedPorts } from "./named-ports-BVbn8SvC.mjs";
1
+ import { p as getProject } from "./config-Cn94Jc0g.mjs";
2
+ import { n as findCommandWorkspace } from "./project-DYj-HVx6.mjs";
3
+ import { n as getNamedPort, t as clearNamedPorts } from "./named-ports-BCyMWA6b.mjs";
4
4
  //#region src/commands/ports.ts
5
5
  async function inProject(action) {
6
6
  try {