stim 1.33.0 → 1.35.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 (125) hide show
  1. package/dist/{acquire-artifact-DTh_LxrE.mjs → acquire-artifact-0E_iw7Rf.mjs} +1 -1
  2. package/dist/{act-Cur4YKtK.mjs → act-CyxFP8Vj.mjs} +9 -10
  3. package/dist/{activity-C8kBq9w0.mjs → activity-BQpJpAjA.mjs} +2 -2
  4. package/dist/{agent-device-usage-output-BTRaK_up.mjs → agent-device-usage-output-BoOC3ZF9.mjs} +3 -3
  5. package/dist/{android-D5mCdVl2.mjs → android-CjcJE7uA.mjs} +5 -5
  6. package/dist/{android-BL-QqHjc.mjs → android-YRb1UzSy.mjs} +27 -29
  7. package/dist/{android-project-BDlPnfmL.d.mts → android-project-DhO6el8N.d.mts} +1 -1
  8. package/dist/api.d.mts +1 -1
  9. package/dist/api.mjs +21 -21
  10. package/dist/{artifact-BufzdGbT.mjs → artifact-2NIRz6SC.mjs} +19 -15
  11. package/dist/{artifact-BMjubIP2.mjs → artifact-BG4h_WTC.mjs} +11 -11
  12. package/dist/{auto-placement-D7P98glJ.mjs → auto-placement-CBdWa87P.mjs} +4 -5
  13. package/dist/{browser-web-C74et-Nv.mjs → browser-web-CNlRugJv.mjs} +5 -5
  14. package/dist/{build-DFBGWOTc.mjs → build-CNE3Wo5-.mjs} +15 -16
  15. package/dist/build-artifact-cache-D7B6seMj.mjs +174 -0
  16. package/dist/build-artifact-cache.d.mts +25 -0
  17. package/dist/build-artifact-cache.mjs +2 -0
  18. package/dist/{build-cache-Cqj4FGnX.mjs → build-cache-_fkewiwH.mjs} +6 -1
  19. package/dist/{build-plan-T3Hi24ax.mjs → build-plan-BSgR9yKo.mjs} +5 -5
  20. package/dist/{cli-B2YSjc9s.mjs → cli-DK24VzHi.mjs} +17 -17
  21. package/dist/cli.mjs +1 -1
  22. package/dist/{client-0_Mnfz0a.mjs → client-Dy0eJJtz.mjs} +49 -11
  23. package/dist/{command-output-DWI9tGPU.mjs → command-output-CGxrQ3Bd.mjs} +1 -1
  24. package/dist/{dependencies-CgvBZbXD.mjs → dependencies-IVl2Ga2D.mjs} +27 -30
  25. package/dist/{dev-client-ChsHwgrn.mjs → dev-client-DDApoVvd.mjs} +2 -2
  26. package/dist/{device-android-B8TQP5AX.mjs → device-android-C-biM49_.mjs} +3 -3
  27. package/dist/{ccache-BXtzEL6M.mjs → device-capacity-C0PiTyRb.mjs} +1004 -63
  28. package/dist/device-host-worker.mjs +6 -7
  29. package/dist/{device-B0htCt2u.mjs → device-mOFYiHiw.mjs} +8 -8
  30. package/dist/{device-DOehZpyx.mjs → device-p_cp8IzW.mjs} +6 -6
  31. package/dist/{device-pool-DP4sCeCC.mjs → device-pool-nsMvt2X2.mjs} +2 -2
  32. package/dist/{device-provision-CnNOIxCF.mjs → device-provision-BYYJuRKZ.mjs} +7 -7
  33. package/dist/{doctor-C6Xn96RS.mjs → doctor-BBAb8NLe.mjs} +1 -1
  34. package/dist/{doctor-9GrW5YSP.mjs → doctor-BptE4PaK.mjs} +10 -11
  35. package/dist/{doctor-nRLBoajo.mjs → doctor-RosbBfTV.mjs} +11 -12
  36. package/dist/doctor-fingerprint.mjs +1 -1
  37. package/dist/{doctor-watchman-CDhpC3Oh.mjs → doctor-watchman-CKOnCINh.mjs} +2 -2
  38. package/dist/{eas-build-CpJ4h9tG.mjs → eas-build-BxJdzQnF.mjs} +2 -2
  39. package/dist/{eas-fallback-B3z5nL1g.mjs → eas-fallback-DU2WDF8r.mjs} +2 -2
  40. package/dist/{eas-session-ledger-Bspy-VJQ.mjs → eas-session-ledger-DCUfh6m7.mjs} +1 -1
  41. package/dist/{error-diagnostics-DoLGklYX.mjs → error-diagnostics-D6wlK-yX.mjs} +3 -3
  42. package/dist/{gc-DolXpMSB.mjs → gc-BUkonUfz.mjs} +10 -10
  43. package/dist/{gc-BWoOp9q7.mjs → gc-CvMEytXz.mjs} +2 -2
  44. package/dist/{guide-CmZB0GtP.mjs → guide-BWozWG7D.mjs} +25 -15
  45. package/dist/{hosted-android-ByG-ICuh.mjs → hosted-android-y6K3DKQT.mjs} +2 -2
  46. package/dist/{hosted-client-D19Lv0tg.mjs → hosted-client-Bb89P6an.mjs} +2 -2
  47. package/dist/{hosted-logs-D7anR6Dk.mjs → hosted-logs-DYPsnWMF.mjs} +2 -2
  48. package/dist/{hosted-logs-sync-D182b1eJ.mjs → hosted-logs-sync-DfUJ2GpF.mjs} +4 -4
  49. package/dist/{hosted-macos-D0DDQxvl.mjs → hosted-macos-DsEzYVY_.mjs} +4 -4
  50. package/dist/{hosted-native-BzXIy97W.mjs → hosted-native-C9xQYYFb.mjs} +4 -4
  51. package/dist/{ios-AdhPKXO3.mjs → ios-BCKxjpRp.mjs} +8 -8
  52. package/dist/{ios-dbXzjTxx.mjs → ios-FhMkDfNC.mjs} +19 -21
  53. package/dist/{ios-device-DXbHZfFe.mjs → ios-device-DMOnaH5n.mjs} +1 -1
  54. package/dist/{ios-project-BzfLigfh.mjs → ios-project-PXBDoaii.mjs} +5 -5
  55. package/dist/ios-signing-CCFNjjWU.mjs +202 -0
  56. package/dist/{js-swap-EDVOJmqx.mjs → js-swap-07ikLRJJ.mjs} +3 -3
  57. package/dist/{launch-CKHpthsw.mjs → launch-CTq5gBim.mjs} +13 -13
  58. package/dist/{lightened-Cv4ToJRX.mjs → lightened-DikgC3-S.mjs} +2 -2
  59. package/dist/{logs-IagR9dWI.mjs → logs-DwI3Rkpf.mjs} +5 -5
  60. package/dist/{logs-DCQ3_tGS.mjs → logs-YDMfEohb.mjs} +3 -3
  61. package/dist/{macos-Ch7vuM-G.mjs → macos-BoNM-l6f.mjs} +14 -14
  62. package/dist/{macos-pc0aVVbN.mjs → macos-C_e9f5-5.mjs} +1 -1
  63. package/dist/maintenance-run.mjs +3 -3
  64. package/dist/{native-android-B3CEDq4R.mjs → native-android-Mv4YTrVN.mjs} +11 -11
  65. package/dist/{native-gradle-artifact-inputs-BLnO2hHR.mjs → native-gradle-artifact-inputs-C_TU6wPq.mjs} +2 -2
  66. package/dist/{native-runtime-e1OU8gEN.mjs → native-runtime-oDqT4UES.mjs} +3 -3
  67. package/dist/{native-xcode-inputs-DL3ETb8s.mjs → native-xcode-inputs-DsozghTX.mjs} +1 -1
  68. package/dist/{native-xcode-ios-D4e8k2Jy.mjs → native-xcode-ios-UXnH9NRY.mjs} +13 -13
  69. package/dist/offload-worker.d.mts +6 -1
  70. package/dist/offload-worker.mjs +40 -15
  71. package/dist/{phone-reverses-rvyxW1Fl.mjs → phone-reverses-B9WyCBKQ.mjs} +1 -1
  72. package/dist/{placement-log-nnGnu8mo.mjs → placement-log-D0DZLcJk.mjs} +1 -1
  73. package/dist/{plan-placement-D3JD-T-K.mjs → plan-placement-DqmLrWoX.mjs} +4 -4
  74. package/dist/{ports-CZJJfJ8Q.mjs → ports-C1_1Qgdy.mjs} +1 -1
  75. package/dist/{prebuild-Bhs7TTcz.mjs → prebuild-BptrXmh_.mjs} +6 -6
  76. package/dist/{project-DWEXiBA9.mjs → project-Dqqj3IkW.mjs} +11 -11
  77. package/dist/{react-native-android-C6Y270GS.mjs → react-native-android-Bsm_o4A8.mjs} +18 -18
  78. package/dist/{react-native-build-DaPfzf_e.mjs → react-native-build-BTUcE926.mjs} +4 -4
  79. package/dist/{react-native-doctor-DGMPxkPS.mjs → react-native-doctor-CfsCTKZt.mjs} +4 -4
  80. package/dist/{react-native-ios-dX48_92n.mjs → react-native-ios-_cK2pjZn.mjs} +25 -19
  81. package/dist/{reload-BGwblBJ9.mjs → reload-CXgce4Yo.mjs} +1 -1
  82. package/dist/{reload-DsOByDfy.mjs → reload-DsTMtMDU.mjs} +6 -6
  83. package/dist/{remote-D0uJZ76R.mjs → remote-BsmYHUxH.mjs} +6 -6
  84. package/dist/{result-DuimMZKJ.mjs → result-DK6nTO-M.mjs} +9 -10
  85. package/dist/{server-command-BC0EgMfY.mjs → server-command-Cu2w-UjB.mjs} +2 -2
  86. package/dist/{server-expo-15RjL0ir.mjs → server-expo-CjQwxvIi.mjs} +1 -1
  87. package/dist/server-expo-DbSypdNl.mjs +2 -0
  88. package/dist/{settings-CuP55ieT.mjs → settings-DcmVICCn.mjs} +2 -2
  89. package/dist/{settings-payload-BIGGQ3or.mjs → settings-payload-BoiFMiFq.mjs} +1 -1
  90. package/dist/{settings-write-D85j8mej.mjs → settings-write-B3LzEVwf.mjs} +2 -2
  91. package/dist/{slot-launch-D4oREwhx.mjs → slot-launch-DsQmPdlg.mjs} +2 -2
  92. package/dist/{stage-DKC6tDXu.mjs → stage-Dqk0qvaI.mjs} +1 -1
  93. package/dist/{start-BsEV4S-s.mjs → start-DIFiT2P5.mjs} +5 -5
  94. package/dist/{start-DfPSLc__.mjs → start-GkRBR1e3.mjs} +1 -1
  95. package/dist/{stats-ByEUblPr.mjs → stats-Dz08IopP.mjs} +3 -3
  96. package/dist/{status-C6hLlDqW.mjs → status-DhKv_e8a.mjs} +11 -12
  97. package/dist/{status-FP1MH9qn.mjs → status-Dost__Vn.mjs} +1 -1
  98. package/dist/{status-watch-D8s823CZ.mjs → status-watch-UecLnPQD.mjs} +1 -1
  99. package/dist/status-worker.mjs +1 -1
  100. package/dist/{stop-CpTy6bod.mjs → stop-CcZISot5.mjs} +2 -2
  101. package/dist/{stop-5LKfVv-0.mjs → stop-QFOqgICJ.mjs} +2 -2
  102. package/dist/{stop-BVI2-L7s.mjs → stop-vRe6TQk5.mjs} +9 -9
  103. package/dist/supervisor-run.mjs +7 -8
  104. package/dist/{support-CqyWfZZI.mjs → support-CNqJDBrH.mjs} +3 -3
  105. package/dist/support-DW575Dnx.mjs +2050 -0
  106. package/dist/{swiftpm-artifact-inputs-uq5oV7xR.mjs → swiftpm-artifact-inputs-DQTJTczX.mjs} +1 -1
  107. package/dist/{swiftpm-macos-BuhqYB3n.mjs → swiftpm-macos-BKczZ0k9.mjs} +4 -4
  108. package/dist/{toolchain-D_jotUG7.mjs → toolchain-BDlugtoh.mjs} +1 -1
  109. package/dist/{toolchain-s5ZmG42Z.mjs → toolchain-DRQyCvlp.mjs} +406 -8
  110. package/dist/web-D1m1LKEz.mjs +2 -0
  111. package/dist/{web-DwYCTFdh.mjs → web-TDWjHUT3.mjs} +3 -3
  112. package/dist/web-run.mjs +1 -1
  113. package/dist/{workspaces-B3ahAHZc.mjs → workspaces-CY3KSdC0.mjs} +2 -2
  114. package/dist/{worktree-CrjsPIs2.mjs → worktree-D6myrQ2H.mjs} +1 -1
  115. package/dist/{worktree-BhsML6GV.mjs → worktree-fKKe8j5M.mjs} +10 -10
  116. package/package.json +12 -7
  117. package/dist/device-capacity-BAkETfIl.mjs +0 -867
  118. package/dist/device-ios-DFaYFdar.mjs +0 -716
  119. package/dist/device-lease-run-DpiCnRbZ.mjs +0 -282
  120. package/dist/idle-shutdown-6i8CHoNq.mjs +0 -142
  121. package/dist/ios-signing-D-tSX1iF.mjs +0 -489
  122. package/dist/selection-xS50Mt0V.mjs +0 -791
  123. package/dist/server-expo-gYIypb0-.mjs +0 -2
  124. package/dist/support-D8OH0z98.mjs +0 -287
  125. package/dist/web-cCfM8kwV.mjs +0 -2
@@ -4,25 +4,25 @@ import { n as stripAnsi } from "./process-output-Fpl8PYi8.mjs";
4
4
  import { A as writeConfigSetting } from "./config-BW0fAtoK.mjs";
5
5
  import { o as git, s as gitAsync } from "./operation-exec-DKlBcKAL.mjs";
6
6
  import { b as iosProjectDirSetting, d as androidLayoutSetting } from "./settings-B5IBDfTx.mjs";
7
- import { f as projectRegistry, g as selectNativeXcodeProject } from "./project-DWEXiBA9.mjs";
7
+ import { f as projectRegistry, g as selectNativeXcodeProject } from "./project-Dqqj3IkW.mjs";
8
8
  import { s as parseNdjsonText$1 } from "./ndjson-CrjIsGzw.mjs";
9
- import { Tn as processContext, n as CCACHE_UNAVAILABLE, s as resolveCcache } from "./ccache-BXtzEL6M.mjs";
10
- import { E as readPodState, S as workerToolchain, T as podsAreStale, i as availableIphone, k as runPodInstall, x as useJdkMajor } from "./toolchain-s5ZmG42Z.mjs";
11
- import { C as refingerprintAfterMutation, a as compareSourceLists, h as fingerprintProject, i as changedOnlyInside } from "./build-cache-Cqj4FGnX.mjs";
12
- import { _ as unmetNodePin, g as projectNodeLine, h as pathNodeVersion, v as withProjectNode } from "./server-expo-15RjL0ir.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-0_Mnfz0a.mjs";
9
+ import { C as CCACHE_UNAVAILABLE, O as resolveCcache, Un as processContext } from "./device-capacity-C0PiTyRb.mjs";
10
+ import { E as readPodState, S as workerToolchain, T as podsAreStale, i as availableIphone, k as runPodInstall, x as useJdkMajor } from "./toolchain-DRQyCvlp.mjs";
11
+ import { a as compareSourceLists, g as fingerprintProject, i as changedOnlyInside, w as refingerprintAfterMutation } from "./build-cache-_fkewiwH.mjs";
12
+ import { _ as unmetNodePin, g as projectNodeLine, h as pathNodeVersion, v as withProjectNode } from "./server-expo-CjQwxvIi.mjs";
13
+ import { S as verifyGradleTransfer, T as clearCorruptCompilationCache, _ as gradleStateDirectories, f as reactNativeArtifactReceipt, g as gradleOffloadInputs, h as reusedReactNativeArtifact, m as reactNativeBuildQuery, p as reactNativeArtifactToolchain, w as COMPILATION_CACHE_CORRUPT, x as validateGradleManifest, y as nativeGradleOutputs } from "./client-Dy0eJJtz.mjs";
14
+ import { f as podAction } from "./support-DW575Dnx.mjs";
14
15
  import { n as fingerprintNativeInputs, r as manifestDigest } from "./native-inputs-TRTTTRxt.mjs";
15
16
  import { a as sourceManifest, o as verifyNativeTransfer } from "./native-source-ChAGj7R1.mjs";
16
- import { n as buildAndroid, o as gradlewPath, r as buildIos, u as assembleTaskFor } from "./react-native-build-DaPfzf_e.mjs";
17
- import { f as podAction } from "./support-D8OH0z98.mjs";
18
- import { r as nativeXcodeMetadataDirectories } from "./native-xcode-inputs-DL3ETb8s.mjs";
19
- import { a as runPrebuild, r as recordPrebuild, t as planPrebuild } from "./prebuild-Bhs7TTcz.mjs";
20
- import { g as dumpApkManifest, p as apkPackage } from "./support-CqyWfZZI.mjs";
21
- import { n as buildAndroidOperation, t as buildIosOperation } from "./build-DFBGWOTc.mjs";
22
- import { i as stageBundle, n as resolveBundleExtras } from "./stage-DKC6tDXu.mjs";
17
+ import { n as buildAndroid, o as gradlewPath, r as buildIos, u as assembleTaskFor } from "./react-native-build-BTUcE926.mjs";
18
+ import { r as nativeXcodeMetadataDirectories } from "./native-xcode-inputs-DsozghTX.mjs";
19
+ import { a as runPrebuild, r as recordPrebuild, t as planPrebuild } from "./prebuild-BptrXmh_.mjs";
20
+ import { g as dumpApkManifest, p as apkPackage } from "./support-CNqJDBrH.mjs";
21
+ import { n as buildAndroidOperation, t as buildIosOperation } from "./build-CNE3Wo5-.mjs";
22
+ import { i as stageBundle, n as resolveBundleExtras } from "./stage-Dqk0qvaI.mjs";
23
23
  import { t as logLines } from "./run-N-BbRxnC.mjs";
24
- import { n as swiftpmArtifactInputs, r as swiftpmArtifactSnapshot, t as readSwiftpmArtifactToolchain } from "./swiftpm-artifact-inputs-uq5oV7xR.mjs";
25
- import { a as nativeGradleWorkerArtifactIdentity, i as nativeGradleArtifactSnapshotFromReceipt, o as nativeGradleWorkerScope } from "./native-gradle-artifact-inputs-BLnO2hHR.mjs";
24
+ import { n as swiftpmArtifactInputs, r as swiftpmArtifactSnapshot, t as readSwiftpmArtifactToolchain } from "./swiftpm-artifact-inputs-DQTJTczX.mjs";
25
+ import { a as nativeGradleWorkerArtifactIdentity, i as nativeGradleArtifactSnapshotFromReceipt, o as nativeGradleWorkerScope } from "./native-gradle-artifact-inputs-C_TU6wPq.mjs";
26
26
  import { createHash } from "node:crypto";
27
27
  import { chmodSync, constants, copyFileSync, cpSync, createReadStream, createWriteStream, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, readlinkSync, realpathSync, renameSync, rmSync, statSync, symlinkSync, writeFileSync } from "node:fs";
28
28
  import { isDeepStrictEqual } from "node:util";
@@ -779,6 +779,10 @@ async function build(job) {
779
779
  const pods = podAction(podState, podsAreStale(podState.lockText, podState.manifestText, podState.dir));
780
780
  if (pods.install) {
781
781
  note("pods", `${pods.reason ?? "Pods are stale"} -> pod install`);
782
+ rmSync(join(iosProject.dir, "Pods", "Local Podspecs"), {
783
+ recursive: true,
784
+ force: true
785
+ });
782
786
  const result = await time("podsMs", () => runPodInstall(realRoot, log, {
783
787
  directory: iosProject.dir,
784
788
  onHeartbeat: (line) => note("pods", line)
@@ -815,6 +819,15 @@ async function build(job) {
815
819
  const tools = job.cacheArtifact ? await reactNativeArtifactToolchain(platform, realRoot, iosProject.dir) : null;
816
820
  const query = tools ? reactNativeBuildQuery(job, fingerprint, job.project, tools) : null;
817
821
  const receipt = query ? reactNativeArtifactReceipt(query, tools) : null;
822
+ const reused = await reuseRetained(job, query, mutations, time);
823
+ if (reused) return {
824
+ ok: true,
825
+ artifact: reused,
826
+ fingerprint,
827
+ reused: true,
828
+ compilationCache: {},
829
+ timings
830
+ };
818
831
  compiled = platform === "android" ? await compileAndroid(job, realRoot, log, time, androidLayout) : await compileIos(job, realRoot, log, time);
819
832
  if (!compiled.ok) return failed(compiled.code, compiled.message);
820
833
  const builtFingerprint = fingerprint;
@@ -871,6 +884,18 @@ async function build(job) {
871
884
  });
872
885
  }
873
886
  }
887
+ /** The app stim-server retained under the fingerprint after `mutations`, in place of compiling; null builds. */
888
+ async function reuseRetained(job, query, mutations, time) {
889
+ if (!query) return null;
890
+ try {
891
+ const reused = await time("packageMs", () => reusedReactNativeArtifact(job, query, join(job.area, "out", job.job), AbortSignal.timeout(6e5)));
892
+ if (reused) note("cache", `hit ${query.fingerprint.slice(0, 12)} (post-${mutations.join(", ")} key)`);
893
+ return reused;
894
+ } catch (error) {
895
+ note("cache", `could not reuse the retained app: ${error instanceof Error ? error.message : String(error)}`);
896
+ return null;
897
+ }
898
+ }
874
899
  function differingParameters(here, there, path) {
875
900
  if (JSON.stringify(here) === JSON.stringify(there)) return [];
876
901
  if (!isJsonObject(here) || !isJsonObject(there)) return [path];
@@ -1,7 +1,7 @@
1
1
  import { r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-BdZ-QgmB.mjs";
2
2
  import { dt as deviceSlotKey, pt as parseDeviceSlotKey } from "./config-BW0fAtoK.mjs";
3
3
  import { tt as removeMetroReverses } from "./android-Iq0M2t2d.mjs";
4
- import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-BzXIy97W.mjs";
4
+ import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-C9xQYYFb.mjs";
5
5
  import { isJsonObject } from "@stim-cli/core/state";
6
6
  //#region src/device-host/hosted-ios.ts
7
7
  async function prepareHostedIos(machine, selectors, recorded, mode) {
@@ -1,4 +1,4 @@
1
- import { r as buildPlacementSettings } from "./selection-xS50Mt0V.mjs";
1
+ import { k as buildPlacementSettings } from "./support-DW575Dnx.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) {
@@ -1,9 +1,9 @@
1
1
  import { v as loadConfig$1 } from "./config-BW0fAtoK.mjs";
2
- import { Tn as processContext } from "./ccache-BXtzEL6M.mjs";
3
- import { _ as hostingMachines } from "./selection-xS50Mt0V.mjs";
2
+ import { Un as processContext } from "./device-capacity-C0PiTyRb.mjs";
3
+ import { nt as hostingMachines } from "./support-DW575Dnx.mjs";
4
4
  import { r as readHostedNative } from "./ios-state-CWsBysyN.mjs";
5
- import { n as buildPreferenceRefusal } from "./settings-payload-BIGGQ3or.mjs";
6
- import { r as probeHost, t as automaticDevicePlacement } from "./auto-placement-D7P98glJ.mjs";
5
+ import { n as buildPreferenceRefusal } from "./settings-payload-BoiFMiFq.mjs";
6
+ import { r as probeHost, t as automaticDevicePlacement } from "./auto-placement-CBdWa87P.mjs";
7
7
  import { automaticMachineEnabled } from "@stim-cli/core/state";
8
8
  //#region src/device-host/plan-placement.ts
9
9
  const DOCTOR_REMEDY = "Run `stim doctor` to check the hosts and settings placement uses.";
@@ -1,5 +1,5 @@
1
1
  import { m as getProject } from "./config-BW0fAtoK.mjs";
2
- import { n as findCommandWorkspace } from "./project-DWEXiBA9.mjs";
2
+ import { n as findCommandWorkspace } from "./project-Dqqj3IkW.mjs";
3
3
  import { n as getNamedPort, t as clearNamedPorts } from "./named-ports-CA0nB9Yw.mjs";
4
4
  //#region src/commands/ports.ts
5
5
  async function inProject(action) {
@@ -1,15 +1,15 @@
1
1
  import { E as debugLog, b as spawnDeclared, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
2
  import { M as withDirLock$1, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, y as sharedBuildCache } from "./workspace-state-BdZ-QgmB.mjs";
3
3
  import { n as stripAnsi, r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
4
- import { m as shortHash } from "./command-output-DWI9tGPU.mjs";
4
+ import { m as shortHash } from "./command-output-CGxrQ3Bd.mjs";
5
5
  import { o as git, s as gitAsync } from "./operation-exec-DKlBcKAL.mjs";
6
6
  import { Ct as gitCommonDirOnDisk } from "./settings-B5IBDfTx.mjs";
7
- import { v as detectIsExpo } from "./project-DWEXiBA9.mjs";
8
- import { Vn as remoteCliInvocation } from "./ccache-BXtzEL6M.mjs";
7
+ import { v as detectIsExpo } from "./project-Dqqj3IkW.mjs";
8
+ import { ar as remoteCliInvocation } from "./device-capacity-C0PiTyRb.mjs";
9
9
  import { r as register } from "./cache-manifest-8JX9S1QJ.mjs";
10
- import { nt as STIM_VERSION } from "./workspaces-B3ahAHZc.mjs";
11
- import { O as storedSources, d as expoEnvFiles, h as fingerprintProject, m as fingerprintOptions, s as diffFingerprintSources, y as packageIn } from "./build-cache-Cqj4FGnX.mjs";
12
- import { i as expoBinRefusal, o as expoSdkMajor, r as expoBinPath, s as expoTelemetryEnv } from "./server-expo-15RjL0ir.mjs";
10
+ import { nt as STIM_VERSION } from "./workspaces-CY3KSdC0.mjs";
11
+ import { b as packageIn, d as expoEnvFiles, g as fingerprintProject, h as fingerprintOptions, k as storedSources, s as diffFingerprintSources } from "./build-cache-_fkewiwH.mjs";
12
+ import { i as expoBinRefusal, o as expoSdkMajor, r as expoBinPath, s as expoTelemetryEnv } from "./server-expo-CjQwxvIi.mjs";
13
13
  import { t as readDoctorFingerprint } from "./doctor-fingerprint-DqWvIhMb.mjs";
14
14
  import { createRequire } from "node:module";
15
15
  import { createHash } from "node:crypto";
@@ -311,8 +311,8 @@ const nativeAndroidIntegration = {
311
311
  application: true,
312
312
  platforms: () => ["android"],
313
313
  validate: (operation) => operation === "android" ? null : void 0,
314
- android: async () => (await import("./native-android-B3CEDq4R.mjs")).nativeAndroidProject(root),
315
- doctor: async () => (await import("./native-android-B3CEDq4R.mjs")).nativeAndroidDoctor(root)
314
+ android: async () => (await import("./native-android-Mv4YTrVN.mjs")).nativeAndroidProject(root),
315
+ doctor: async () => (await import("./native-android-Mv4YTrVN.mjs")).nativeAndroidDoctor(root)
316
316
  };
317
317
  }
318
318
  };
@@ -740,8 +740,8 @@ const nativeXcodeProjectIntegration = {
740
740
  application: problem === null,
741
741
  platforms: () => problem ? [] : ["ios"],
742
742
  validate: (operation) => operation === "ios" ? problem : void 0,
743
- ios: async () => (await import("./native-xcode-ios-D4e8k2Jy.mjs")).nativeXcodeIosProject(root),
744
- doctor: async () => (await import("./native-xcode-ios-D4e8k2Jy.mjs")).nativeXcodeDoctor(root)
743
+ ios: async () => (await import("./native-xcode-ios-UXnH9NRY.mjs")).nativeXcodeIosProject(root),
744
+ doctor: async () => (await import("./native-xcode-ios-UXnH9NRY.mjs")).nativeXcodeDoctor(root)
745
745
  };
746
746
  }
747
747
  };
@@ -946,7 +946,7 @@ function createProjectRegistry(integrations) {
946
946
  //#region src/integrations/projects.ts
947
947
  const expo = {
948
948
  mode: MODE_EXPO,
949
- loadDevServer: async () => (await import("./server-expo-gYIypb0-.mjs")).startExpoServer,
949
+ loadDevServer: async () => (await import("./server-expo-DbSypdNl.mjs")).startExpoServer,
950
950
  platforms(root) {
951
951
  const appJson = readAppJson(root);
952
952
  const config = appJson?.expo ?? appJson;
@@ -996,9 +996,9 @@ const projectRegistry = createProjectRegistry([
996
996
  ownedRoots: problem === null ? [join(root, "ios"), join(root, "android")] : [],
997
997
  platforms: (resolved) => nativeProjectIntegration(root).platforms(root, resolved),
998
998
  validate: (operation) => operation === "ios" || operation === "android" || operation === "dev-server" ? problem : void 0,
999
- ios: async (settings) => (await import("./react-native-ios-dX48_92n.mjs")).reactNativeIosProject(root, settings),
1000
- android: async (resolved) => (await import("./react-native-android-C6Y270GS.mjs")).reactNativeAndroidProject(root, resolved),
1001
- doctor: async () => (await import("./react-native-doctor-DGMPxkPS.mjs")).reactNativeProjectDoctor(root)
999
+ ios: async (settings) => (await import("./react-native-ios-_cK2pjZn.mjs")).reactNativeIosProject(root, settings),
1000
+ android: async (resolved) => (await import("./react-native-android-Bsm_o4A8.mjs")).reactNativeAndroidProject(root, resolved),
1001
+ doctor: async () => (await import("./react-native-doctor-CfsCTKZt.mjs")).reactNativeProjectDoctor(root)
1002
1002
  };
1003
1003
  }
1004
1004
  },
@@ -1012,9 +1012,9 @@ const projectRegistry = createProjectRegistry([
1012
1012
  application: true,
1013
1013
  platforms: ({ settings }) => settingValueAt(settings, "macos.product") && settingValueAt(settings, "macos.infoPlist") ? ["macos"] : [],
1014
1014
  validate: (operation) => operation === "macos" ? null : void 0,
1015
- macos: async () => (await import("./swiftpm-macos-BuhqYB3n.mjs")).swiftpmMacosProject(root),
1015
+ macos: async () => (await import("./swiftpm-macos-BKczZ0k9.mjs")).swiftpmMacosProject(root),
1016
1016
  doctor: async () => {
1017
- const { macosToolchain, macosToolchainAsync } = await import("./toolchain-D_jotUG7.mjs");
1017
+ const { macosToolchain, macosToolchainAsync } = await import("./toolchain-BDlugtoh.mjs");
1018
1018
  return {
1019
1019
  inspect: () => [],
1020
1020
  offloadTargets: ({ options: { host = process.platform, platform, operation } }) => host === "darwin" && platform === void 0 ? async () => [{
@@ -1034,7 +1034,7 @@ const projectRegistry = createProjectRegistry([
1034
1034
  application: false,
1035
1035
  platforms: ({ settings }) => webSettings(settings).url !== null ? ["web"] : [],
1036
1036
  validate: (operation) => operation === "web" ? null : void 0,
1037
- web: async () => (await import("./browser-web-C74et-Nv.mjs")).browserWebProject(root)
1037
+ web: async () => (await import("./browser-web-CNlRugJv.mjs")).browserWebProject(root)
1038
1038
  };
1039
1039
  }
1040
1040
  },
@@ -1,31 +1,31 @@
1
1
  import { C as operationState, b as spawnDeclared, d as throwIfCancelled, r as reportSignal, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
2
  import { r as readWorkspaceState } from "./workspace-state-BdZ-QgmB.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-DWI9tGPU.mjs";
4
+ import { i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-CGxrQ3Bd.mjs";
5
5
  import { _t as validateDeviceSlot, ft as deviceSlotPlatforms, m as getProject } from "./config-BW0fAtoK.mjs";
6
6
  import { a as killOnAbort, t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
7
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-DWEXiBA9.mjs";
8
+ import { v as detectIsExpo } from "./project-Dqqj3IkW.mjs";
9
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 { An as checkEasAuth, Bn as bundleInvocation, Nn as loadProjectProvider, Rn as resolveRemote, Tn as processContext, s as resolveCcache } from "./ccache-BXtzEL6M.mjs";
11
- import { lt as statsProjectKey } from "./workspaces-B3ahAHZc.mjs";
12
- import { K as tailLines, M as HEARTBEAT_INTERVAL_MS, W as startBuildHeartbeat, r as androidToolchainAsync, t as androidRequirements } from "./toolchain-s5ZmG42Z.mjs";
13
- import { A as untrackedMissLine, C as refingerprintAfterMutation, D as storedAssetManifest, F as readAssetManifest, M as assetDiffReason, N as captureAssetManifest, P as compareAssetManifests, T as storeBuild, f as filesystemBuildCapability, g as gitignoredFingerprintInputs, h as fingerprintProject, j as untrackedNativeFiles, n as buildCacheKey, o as configInputsChanged, p as fingerprintDiffRecord, r as changedDuringBuildLine, v as inputsChangedDuringBuild, w as resolveBuild } from "./build-cache-Cqj4FGnX.mjs";
14
- import { s as expoTelemetryEnv, t as cleanLine } from "./server-expo-15RjL0ir.mjs";
15
- import { c as readProductFlavors, h as androidPathRoomRefusal, n as buildAndroid, s as productFlavorRefusal } from "./react-native-build-DaPfzf_e.mjs";
16
- import { h as detectAppIds, m as detectAndroidPackage } from "./start-BsEV4S-s.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
17
  import { t as readDoctorFingerprint } from "./doctor-fingerprint-DqWvIhMb.mjs";
18
18
  import { n as decideSystemImage, t as androidImageInstallPolicy } from "./android-image-DFk26aY6.mjs";
19
- import { i as planEasDevelopmentBuild } from "./eas-build-CpJ4h9tG.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-Bhs7TTcz.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-CqyWfZZI.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";
22
22
  import { t as AndroidRecipeRefusal } from "./android-project-BCAAmMwz.mjs";
23
- import { u as resolveAndroidRunPlan } from "./result-DuimMZKJ.mjs";
24
- import { n as androidProcessRuntime, t as androidMetroRuntime } from "./launch-CKHpthsw.mjs";
25
- import { t as checkEasFallback } from "./eas-fallback-B3z5nL1g.mjs";
26
- import { n as planFlagRefusal, r as planPayload, t as planCachedBuild } from "./build-plan-T3Hi24ax.mjs";
27
- import { n as detectEntryFile, r as refreshUpdatesManifestFile, t as UPDATES_MANIFEST_NAME } from "./js-swap-EDVOJmqx.mjs";
28
- import { t as planHostedDevice } from "./plan-placement-D3JD-T-K.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";
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";
@@ -1,13 +1,13 @@
1
1
  import { b as spawnDeclared, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
2
  import { x as sharedCompilationCache } from "./workspace-state-BdZ-QgmB.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-DWI9tGPU.mjs";
4
+ import { l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
5
5
  import { a as killOnAbort } from "./operation-exec-DKlBcKAL.mjs";
6
- import { C as resolvePackageJson } from "./project-DWEXiBA9.mjs";
6
+ import { C as resolvePackageJson } from "./project-Dqqj3IkW.mjs";
7
7
  import { o as androidHome } from "./android-Iq0M2t2d.mjs";
8
- import { n as CCACHE_UNAVAILABLE, o as readCcacheActivity } from "./ccache-BXtzEL6M.mjs";
8
+ import { C as CCACHE_UNAVAILABLE, D as readCcacheActivity } from "./device-capacity-C0PiTyRb.mjs";
9
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-s5ZmG42Z.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";
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
1
  import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { l as phaseLine } from "./command-output-DWI9tGPU.mjs";
2
+ import { l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
3
3
  import { Y as resolveIosProjectDir, q as resolveAndroidLayout } from "./settings-B5IBDfTx.mjs";
4
- import { v as detectIsExpo } from "./project-DWEXiBA9.mjs";
5
- import { Y as bundlerPin, a as buildsOnlyOnWorker, c as iosToolchainAsync, n as androidToolchain, r as androidToolchainAsync, t as androidRequirements } from "./toolchain-s5ZmG42Z.mjs";
6
- import { a as mainCheckoutProjectRoot, c as repairCxxLauncherState, i as detectLinkedLibraryGitMetadata, n as checkMainCheckout, o as reactNativeDoctorFindings, r as detectFingerprintParity } from "./doctor-nRLBoajo.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";
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,21 +1,22 @@
1
1
  import { r as reportSignal } from "./exec-CGuDzt40.mjs";
2
- import { i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-DWI9tGPU.mjs";
2
+ import { i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-CGxrQ3Bd.mjs";
3
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 { Tn as processContext } from "./ccache-BXtzEL6M.mjs";
5
- import { lt as statsProjectKey } from "./workspaces-B3ahAHZc.mjs";
6
- import { Y as bundlerPin, a as buildsOnlyOnWorker, c as iosToolchainAsync, st as runCancellationSignal } from "./toolchain-s5ZmG42Z.mjs";
7
- import { A as untrackedMissLine, C as refingerprintAfterMutation, _ as ignoredFingerprintPaths, f as filesystemBuildCapability, g as gitignoredFingerprintInputs, k as trackedFingerprintPaths, n as buildCacheKey, o as configInputsChanged, p as fingerprintDiffRecord, r as changedDuringBuildLine, v as inputsChangedDuringBuild } from "./build-cache-Cqj4FGnX.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";
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-D8OH0z98.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
10
  import { t as readDoctorFingerprint } from "./doctor-fingerprint-DqWvIhMb.mjs";
11
- import { i as planEasDevelopmentBuild, n as easDeviceBuildRemedy } from "./eas-build-CpJ4h9tG.mjs";
12
- import { c as fingerprintErrorMissReason, d as memoizedFingerprint, i as recordPrebuildAsync, o as staleNativeDirRefusal, s as explainBuildMiss } from "./prebuild-Bhs7TTcz.mjs";
13
- import { r as planPayload, t as planCachedBuild } from "./build-plan-T3Hi24ax.mjs";
14
- import { t as IosRecipeRefusal } from "./ios-project-BzfLigfh.mjs";
15
- import { a as hostedIosSelectors } from "./remote-D0uJZ76R.mjs";
16
- import { a as writeIpTxt, c as iosProcessRuntime, r as copyAppAside, s as iosMetroRuntime, t as DEFAULT_DEPS } from "./dependencies-CgvBZbXD.mjs";
17
- import { t as planHostedDevice } from "./plan-placement-D3JD-T-K.mjs";
18
- import { rmSync } from "node:fs";
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";
18
+ import { existsSync, rmSync } from "node:fs";
19
+ import { join } from "node:path";
19
20
  import chalk from "chalk";
20
21
  //#region src/integrations/react-native-ios-plan.ts
21
22
  function refuse(refusal, lines = []) {
@@ -353,6 +354,10 @@ function reactNativeIosArtifact({ operation, root, logFile, configuration, build
353
354
  const installableCachedApp = async (cachedPath) => {
354
355
  if (device) return prepareDeviceApp(cachedPath, device, { fresh: false });
355
356
  if (!release) return cachedPath;
357
+ if (buildsOnlyOnWorker(await d.iosToolchain(root, null))) {
358
+ note(chalk.yellow(phaseLine("swap", `a cached ${configuration} app carries its builder's JS, and only a Mac with Xcode can replace it -- building fresh instead`)));
359
+ return null;
360
+ }
356
361
  phase("swap", `regenerating this workspace's JS for the cached ${configuration} app`);
357
362
  const swap = await d.swapJsBundle({
358
363
  context: operation,
@@ -608,10 +613,10 @@ function reactNativeIosArtifact({ operation, root, logFile, configuration, build
608
613
  },
609
614
  offload: {
610
615
  context: () => {
611
- const runtime = physical || release ? null : target.offloadRuntime();
616
+ const runtime = physical ? null : target.offloadRuntime();
612
617
  return {
613
618
  runtime,
614
- unsupported: target.offloadRefusal ?? (release ? `${configuration} builds build here` : !cachePolicy.write ? "the build cache is off" : !runtime ? udid ? `the runtime of simulator ${udid} is unknown` : "no simulator runtime is available for worker selection" : null)
619
+ unsupported: target.offloadRefusal ?? (!cachePolicy.write ? "the build cache is off" : !runtime ? udid ? `the runtime of simulator ${udid} is unknown` : "no simulator runtime is available for worker selection" : null)
615
620
  };
616
621
  },
617
622
  target: async (runtime) => ({
@@ -625,7 +630,8 @@ function reactNativeIosArtifact({ operation, root, logFile, configuration, build
625
630
  }),
626
631
  request: (runtime) => ({
627
632
  platform: "ios",
628
- cacheArtifact: cachePolicy.write && cachePolicy.remote,
633
+ cacheArtifact: cachePolicy.write && cachePolicy.remote && !release,
634
+ reuseArtifact: cachePolicy.read && cachePolicy.remote,
629
635
  runtime,
630
636
  configuration,
631
637
  scheme: buildScheme ?? null,
@@ -635,10 +641,10 @@ function reactNativeIosArtifact({ operation, root, logFile, configuration, build
635
641
  }),
636
642
  fingerprintInputs: async () => ({
637
643
  sources: storeSources,
638
- ignored: await gitignoredFingerprintInputs(root, storeSources, {
644
+ ignored: [...await gitignoredFingerprintInputs(root, storeSources, {
639
645
  platform: PLATFORM,
640
646
  iosProjectPath: iosProject.relative
641
- }, { env: operation?.env }),
647
+ }, { env: operation?.env }), ...release && isExpo ? expoProductionEnvFiles(operation?.env).map((name) => join(root, name)).filter((path) => existsSync(path)) : []],
642
648
  ignoredPaths: ignoredFingerprintPaths(root, {
643
649
  platform: PLATFORM,
644
650
  iosProjectPath: iosProject.relative
@@ -1,2 +1,2 @@
1
- import { n as reloadCommand, r as runReload, t as registerReload } from "./reload-DsOByDfy.mjs";
1
+ import { n as reloadCommand, r as runReload, t as registerReload } from "./reload-DsTMtMDU.mjs";
2
2
  export { reloadCommand as default, registerReload, runReload };
@@ -1,18 +1,18 @@
1
1
  import { d as throwIfCancelled, l as cancellableSleep, s as loadScaledBudgetMs, u as cancelledError } from "./exec-CGuDzt40.mjs";
2
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-DWI9tGPU.mjs";
3
+ import { f as refuseNoProject, l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
4
4
  import { ft as deviceSlotPlatforms, m as getProject, pt as parseDeviceSlotKey } from "./config-BW0fAtoK.mjs";
5
5
  import { Vt as repoRootAsync } from "./settings-B5IBDfTx.mjs";
6
- import { I as readWorkspaceLaunches, P as readRemoteSession, r as findCommandWorkspaceAsync } from "./project-DWEXiBA9.mjs";
6
+ import { I as readWorkspaceLaunches, P as readRemoteSession, r as findCommandWorkspaceAsync } from "./project-Dqqj3IkW.mjs";
7
7
  import { it as resolveOwnedAvdSerialAsync } from "./android-Iq0M2t2d.mjs";
8
8
  import { a as listeningPidsAsync, d as resolveProjectMetro, h as isMetroRunning, u as processCwds } from "./metro-B5PVz0Wv.mjs";
9
- import { fn as iosAppProcess, sn as ensureMetroReverse, tn as androidAppProcess } from "./ccache-BXtzEL6M.mjs";
9
+ import { Nn as iosAppProcess, On as ensureMetroReverse, Sn as androidAppProcess } from "./device-capacity-C0PiTyRb.mjs";
10
10
  import { d as webFactsAsync, o as readWebRecord, r as cdpEndpoint } from "./state-CtmYTRWm.mjs";
11
11
  import { D as resolveOwnedIosSim, f as listAllIosSimsAsync } from "./ios-BdZdNsAj.mjs";
12
- import { m as probeHostedSession } from "./hosted-client-D19Lv0tg.mjs";
12
+ import { m as probeHostedSession } from "./hosted-client-Bb89P6an.mjs";
13
13
  import { r as readHostedNative } from "./ios-state-CWsBysyN.mjs";
14
- import { r as reopenHostedAndroidMetro } from "./hosted-android-ByG-ICuh.mjs";
15
- import { n as nativeRunCommand } from "./slot-launch-D4oREwhx.mjs";
14
+ import { r as reopenHostedAndroidMetro } from "./hosted-android-y6K3DKQT.mjs";
15
+ import { n as nativeRunCommand } from "./slot-launch-DsQmPdlg.mjs";
16
16
  import { n as sendToOwnedPage, t as liveWebRecord } from "./page-Dj8IqvGM.mjs";
17
17
  import { hostedAndroidDeviceName, hostedNativeRecords } from "@stim-cli/core/state";
18
18
  import chalk from "chalk";
@@ -1,12 +1,12 @@
1
1
  import { f as WorkspaceProcessCleanupError } from "./exec-CGuDzt40.mjs";
2
- import { l as phaseLine } from "./command-output-DWI9tGPU.mjs";
2
+ import { l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
3
3
  import { ft as deviceSlotPlatforms } from "./config-BW0fAtoK.mjs";
4
4
  import { B as publicUrlSetting, G as remoteIosSetting, L as parseIosRemote, W as remoteEasFallbackSetting, ot as tunnelModeSetting } from "./settings-B5IBDfTx.mjs";
5
- import "./ccache-BXtzEL6M.mjs";
6
- import { st as runCancellationSignal } from "./toolchain-s5ZmG42Z.mjs";
7
- import { b as resolveSimulatorAppFlag } from "./support-D8OH0z98.mjs";
8
- import { n as devicePlacementRecord } from "./placement-log-nnGnu8mo.mjs";
9
- import { n as devicePlacementLine } from "./auto-placement-D7P98glJ.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";
10
10
  import chalk from "chalk";
11
11
  //#region src/commands/ios/remote.ts
12
12
  function deviceRemoteConflict(remote, physical) {
@@ -1,21 +1,20 @@
1
1
  import { w as workspaceAgentDeviceDir } from "./workspace-state-BdZ-QgmB.mjs";
2
- import { i as formatDuration, l as phaseLine } from "./command-output-DWI9tGPU.mjs";
2
+ import { i as formatDuration, l as phaseLine } from "./command-output-CGxrQ3Bd.mjs";
3
3
  import { ft as deviceSlotPlatforms, m as getProject } from "./config-BW0fAtoK.mjs";
4
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-DWEXiBA9.mjs";
5
+ import { v as detectIsExpo } from "./project-Dqqj3IkW.mjs";
6
6
  import { a as workspaceLinkLine } from "./stim-desktop-_WTria-r.mjs";
7
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 { Mn as isEasAuthFailureText, On as UPLOAD_TIMEOUT_MS, jn as easAuthNote, kn as cacheLevel, n as CCACHE_UNAVAILABLE, r as ccacheActivityLine } from "./ccache-BXtzEL6M.mjs";
9
- import { X as recordFinishedBuild } from "./workspaces-B3ahAHZc.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";
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-0_Mnfz0a.mjs";
12
- import { c as readProductFlavors, s as productFlavorRefusal } from "./react-native-build-DaPfzf_e.mjs";
13
- import { l as parseDeviceWait } from "./device-lease-run-DpiCnRbZ.mjs";
14
- import { t as DEFAULT_DEVICE_SLOT_WAIT_MS } from "./device-capacity-BAkETfIl.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";
15
14
  import { t as androidImageInstallPolicy } from "./android-image-DFk26aY6.mjs";
16
15
  import { n as resolveAndroidCas, r as resolveAndroidCompilerCache } from "./android-cas-Dhcjkys1.mjs";
17
- import { r as isPhysicalDeviceRequest } from "./native-runtime-e1OU8gEN.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-CqyWfZZI.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";
19
18
  import { buildDiagnostics } from "@stim-cli/core/state";
20
19
  import chalk from "chalk";
21
20
  //#region src/commands/android/plan.ts
@@ -1,9 +1,9 @@
1
1
  import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
2
  import { n as METRO_COMMAND_PORT } from "./settings-B5IBDfTx.mjs";
3
- import { T as MODE_COMMAND } from "./project-DWEXiBA9.mjs";
3
+ import { T as MODE_COMMAND } from "./project-Dqqj3IkW.mjs";
4
4
  import { f as signalProcessTree } from "./metro-B5PVz0Wv.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-15RjL0ir.mjs";
6
+ import { g as projectNodeLine, p as recordFromLine, v as withProjectNode, y as superviseChildServer } from "./server-expo-CjQwxvIi.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,7 @@
1
1
  import { l as cancellableSleep, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
2
  import { n as stripAnsi, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
3
  import { X as resolveProjectSettings } from "./settings-B5IBDfTx.mjs";
4
- import { C as resolvePackageJson } from "./project-DWEXiBA9.mjs";
4
+ import { C as resolvePackageJson } from "./project-Dqqj3IkW.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";
@@ -0,0 +1,2 @@
1
+ import { m as startExpoServer } from "./server-expo-CjQwxvIi.mjs";
2
+ export { startExpoServer };
@@ -1,5 +1,5 @@
1
- import { c as readSettingsPayload, l as settingEntry, o as layerFile, s as readSettingsContext, t as SettingsRefusal } from "./settings-payload-BIGGQ3or.mjs";
2
- import { i as unsetReplacedSetting, n as readScope, r as requireSetting, t as mutateSetting } from "./settings-write-D85j8mej.mjs";
1
+ import { c as readSettingsPayload, l as settingEntry, o as layerFile, s as readSettingsContext, t as SettingsRefusal } from "./settings-payload-BoiFMiFq.mjs";
2
+ import { i as unsetReplacedSetting, n as readScope, r as requireSetting, t as mutateSetting } from "./settings-write-B3LzEVwf.mjs";
3
3
  import { REPLACED_SETTINGS, SETTING_SCOPES } from "@stim-cli/core/state";
4
4
  import chalk from "chalk";
5
5
  //#region src/commands/settings.ts
@@ -1,7 +1,7 @@
1
1
  import { f as getConfigPath$1, g as getRepoSettings, h as getProjectSettings, v as loadConfig$1 } from "./config-BW0fAtoK.mjs";
2
2
  import { a as killOnAbort, i as gitPath } from "./operation-exec-DKlBcKAL.mjs";
3
3
  import { K as removedMachineSettings, V as readCommittedSettings, st as unknownSettingKeys } from "./settings-B5IBDfTx.mjs";
4
- import { r as findCommandWorkspaceAsync } from "./project-DWEXiBA9.mjs";
4
+ import { r as findCommandWorkspaceAsync } from "./project-Dqqj3IkW.mjs";
5
5
  import { i as stimDesktopInstalledAsync, n as settingDefault, r as stimDesktopInstalled } from "./stim-desktop-_WTria-r.mjs";
6
6
  import { join } from "node:path";
7
7
  import { SETTINGS, SETTING_SCOPES, coerceSettingText, isJsonObject, replacementAdvice, settingDefinition, settingValueError } from "@stim-cli/core/state";
@@ -1,9 +1,9 @@
1
1
  import { p as withWorkspaceProcessLock } from "./exec-CGuDzt40.mjs";
2
2
  import { f as getConfigPath$1, j as writeConfigSettingAsync, k as withConfigLockAsync$1 } from "./config-BW0fAtoK.mjs";
3
- import { t as NO_PROJECT_REFUSAL } from "./project-DWEXiBA9.mjs";
3
+ import { t as NO_PROJECT_REFUSAL } from "./project-Dqqj3IkW.mjs";
4
4
  import { i as stimDesktopInstalledAsync } from "./stim-desktop-_WTria-r.mjs";
5
5
  import { n as recordingLayers, t as deleteTurnedOffRecordings } from "./recordings-AKZfsW2W.mjs";
6
- import { d as unknownEntries, l as settingEntry, o as layerFile, r as committedDirectory, s as readSettingsContext, t as SettingsRefusal, u as settingExample } from "./settings-payload-BIGGQ3or.mjs";
6
+ import { d as unknownEntries, l as settingEntry, o as layerFile, r as committedDirectory, s as readSettingsContext, t as SettingsRefusal, u as settingExample } from "./settings-payload-BoiFMiFq.mjs";
7
7
  import { existsSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
8
8
  import { join } from "node:path";
9
9
  import { configDir } from "@stim-cli/core";
@@ -1,8 +1,8 @@
1
1
  import { r as readWorkspaceState$1 } from "./workspace-state-BdZ-QgmB.mjs";
2
2
  import { ht as projectDeviceSlots, m as getProject, pt as parseDeviceSlotKey } from "./config-BW0fAtoK.mjs";
3
3
  import { A as getAvdNameForSerialAsync, P as listAdbDevicesAsync } from "./android-Iq0M2t2d.mjs";
4
- import { on as deviceShellArg } from "./ccache-BXtzEL6M.mjs";
5
- import { y as fileLeaseIo } from "./activity-C8kBq9w0.mjs";
4
+ import { Dn as deviceShellArg } from "./device-capacity-C0PiTyRb.mjs";
5
+ import { y as fileLeaseIo } from "./activity-BQpJpAjA.mjs";
6
6
  import { f as listAllIosSimsAsync } from "./ios-BdZdNsAj.mjs";
7
7
  import { hostedNativeRecords } from "@stim-cli/core/state";
8
8
  //#region src/engine/slot-launch.ts
@@ -1,5 +1,5 @@
1
1
  import { d as throwIfCancelled, t as getExecutor, w as withDrainingCancellation } from "./exec-CGuDzt40.mjs";
2
- import { st as runCancellationSignal } from "./toolchain-s5ZmG42Z.mjs";
2
+ import { _t as runCancellationSignal } from "./toolchain-DRQyCvlp.mjs";
3
3
  import { existsSync, lstatSync, promises, readdirSync, realpathSync, statSync } from "node:fs";
4
4
  import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
5
5
  import { validMacosResourceDestination } from "@stim-cli/core";