stim 1.36.0 → 1.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/README.md +3 -1
  2. package/dist/{acquire-artifact-DGTHCd0Q.mjs → acquire-artifact-QKPDkesw.mjs} +2 -2
  3. package/dist/{act-CvN9xyV6.mjs → act-Bh3t-NuH.mjs} +28 -34
  4. package/dist/{activity-BpdDvA8Q.mjs → activity-CANftndU.mjs} +6 -6
  5. package/dist/{agent-device-usage-output-pbhaW7_k.mjs → agent-device-usage-output-CuROXefb.mjs} +5 -5
  6. package/dist/{android-SJx1V3R3.mjs → android-27_JgJ1T.mjs} +7 -7
  7. package/dist/{android-B0qTdwnt.mjs → android-Biwc4Dck.mjs} +5 -5
  8. package/dist/{android-5wkcMFDG.mjs → android-DGLG_VQ3.mjs} +2 -2
  9. package/dist/{android-e9WP10cE.mjs → android-Z6Eev9rL.mjs} +51 -42
  10. package/dist/{android-cas-BS9_55U5.mjs → android-cas-BDAwwL82.mjs} +4 -4
  11. package/dist/android-cas-compiler.mjs +1 -1
  12. package/dist/{android-image-BZ57YL6R.mjs → android-image-BcUD6bPi.mjs} +3 -3
  13. package/dist/api.d.mts +12 -5
  14. package/dist/api.mjs +34 -31
  15. package/dist/{apk-signed-tail-eZyXIrnc.mjs → apk-signed-tail-DHMkXs4s.mjs} +2 -2
  16. package/dist/{artifact-C3srrGVU.mjs → artifact-Dc1GsK7o.mjs} +29 -15
  17. package/dist/{artifact-platform-DqCWUieN.mjs → artifact-platform-BaGL1i1X.mjs} +1 -1
  18. package/dist/{artifact-ubNdxo_K.mjs → artifact-sGoFVK1q.mjs} +12 -12
  19. package/dist/{auto-placement-CKFpFCuq.mjs → auto-placement-RNh4kx2T.mjs} +7 -7
  20. package/dist/{browser-web-B63vLrj6.mjs → browser-web-7Oj57Roa.mjs} +15 -15
  21. package/dist/{build-B_Dx9SKJ.mjs → build-DkE5vjp1.mjs} +29 -28
  22. package/dist/{build-cache-BW8T4oD2.mjs → build-cache-CJ65Efv7.mjs} +10 -7
  23. package/dist/{build-plan-CeIooJqn.mjs → build-plan-DWajg5l_.mjs} +8 -7
  24. package/dist/{cache-manifest-CxWkZmUr.mjs → cache-manifest-BO0TIcPV.mjs} +1 -1
  25. package/dist/cache-manifest.mjs +1 -1
  26. package/dist/{cdp-C216kOAn.mjs → cdp-CgT47_9A.mjs} +1 -1
  27. package/dist/{chrome-C8sC5tdl.mjs → chrome-DL5znvmo.mjs} +1 -1
  28. package/dist/{cli-COdXswmc.mjs → cli-BSlwv9hI.mjs} +21 -21
  29. package/dist/cli.mjs +1 -1
  30. package/dist/{client-KSWIeQLA.mjs → client-qwmHFSga.mjs} +16 -12
  31. package/dist/collector-run.mjs +7 -7
  32. package/dist/{command-output-T3cDctRE.mjs → command-output-DsjhOzJ3.mjs} +1 -1
  33. package/dist/{config-BA3TgoIP.mjs → config-CNmN-ndb.mjs} +2 -2
  34. package/dist/{dependencies-LH-7k1Vr.mjs → dependencies-oku1ZLep.mjs} +144 -71
  35. package/dist/{dependency-state-Blfp3AkG.mjs → dependency-state-CBhPJAs_.mjs} +2 -2
  36. package/dist/{detached-entry-tfrgGVWb.mjs → detached-entry-VqFeEE9W.mjs} +1 -1
  37. package/dist/{dev-client-MO_DjTZr.mjs → dev-client-DL5UtVdx.mjs} +2 -2
  38. package/dist/{device-DNTWFFB1.mjs → device-CxMwX0VO.mjs} +17 -16
  39. package/dist/{device-android-BB9Lugr8.mjs → device-android-CSlBXuh_.mjs} +9 -9
  40. package/dist/{device-capacity-CpAVcKgq.mjs → device-capacity-D_IlxZRL.mjs} +84 -37
  41. package/dist/device-host-worker.mjs +28 -16
  42. package/dist/{device-pool-BJToGG-q.mjs → device-pool-BEaTdtss.mjs} +3 -3
  43. package/dist/{device-provision-CxQDCtrc.mjs → device-provision-C9NPdCne.mjs} +10 -10
  44. package/dist/{device-BZWt_aPJ.mjs → device-yfuJ-v4s.mjs} +11 -11
  45. package/dist/{doctor-C-46SkBe.mjs → doctor-BAA3zN5U.mjs} +1 -1
  46. package/dist/{doctor-DV639Iw_.mjs → doctor-BQ1Kl44s.mjs} +15 -21
  47. package/dist/{doctor-CYZ45LnX.mjs → doctor-QNzDE4aW.mjs} +24 -24
  48. package/dist/{doctor-fingerprint-DqWvIhMb.mjs → doctor-fingerprint-Bo4z8YNP.mjs} +1 -1
  49. package/dist/doctor-fingerprint.mjs +1 -1
  50. package/dist/{doctor-watchman-TZxYt_98.mjs → doctor-watchman-B8e3s9ko.mjs} +5 -5
  51. package/dist/{eas-build-Xf5Jd6LR.mjs → eas-build-4rg9WpEg.mjs} +4 -4
  52. package/dist/{eas-fallback-DNYPNinw.mjs → eas-fallback-UGo0SG7T.mjs} +6 -6
  53. package/dist/{eas-session-ledger-CXZ4aix0.mjs → eas-session-ledger-BDpSdFDM.mjs} +6 -6
  54. package/dist/{error-diagnostics-CvB5bpPU.mjs → error-diagnostics-CW9xl6ot.mjs} +10 -10
  55. package/dist/{exec-CGuDzt40.mjs → exec-L37dbiIb.mjs} +7 -1
  56. package/dist/{gc-DiUhrVFo.mjs → gc-3DHVCn-k.mjs} +52 -36
  57. package/dist/{gc-8Qm_K1iy.mjs → gc-BQ5dXnC7.mjs} +2 -2
  58. package/dist/{guide-CuvHRP53.mjs → guide-DqJCc4vW.mjs} +209 -78
  59. package/dist/{hosted-android-D__HGVIO.mjs → hosted-android-gwLspaz6.mjs} +4 -4
  60. package/dist/{hosted-client-DMOOu8vD.mjs → hosted-client-B_h_bTlz.mjs} +4 -4
  61. package/dist/{hosted-logs-CClIktQM.mjs → hosted-logs-BpQSRDRU.mjs} +17 -10
  62. package/dist/{hosted-logs-sync-B7XCeqVm.mjs → hosted-logs-sync-D3L1hDpM.mjs} +5 -5
  63. package/dist/{hosted-macos-D4sDJIbB.mjs → hosted-macos-GK4O1s7x.mjs} +6 -6
  64. package/dist/{hosted-native-BiiUG_Q6.mjs → hosted-native-B6ur_0OJ.mjs} +8 -8
  65. package/dist/{ios-Qam0bT9n.mjs → ios-2Qr4_Zu2.mjs} +1 -1
  66. package/dist/{ios-BZuhvLGr.mjs → ios-Bi0bQiZ_.mjs} +8 -8
  67. package/dist/{ios-BhfpRfNf.mjs → ios-DQEzde6f.mjs} +23 -10
  68. package/dist/{ios-BhpUWyN7.mjs → ios-M7nRVb33.mjs} +100 -37
  69. package/dist/{ios-device-vhYL1N--.mjs → ios-device-BLm1BZB4.mjs} +3 -3
  70. package/dist/{ios-device-DLdEDWJj.mjs → ios-device-ygijU78G.mjs} +1 -1
  71. package/dist/{ios-project-Cz0S1Sz-.mjs → ios-project-Bsm-eqwv.mjs} +7 -7
  72. package/dist/ios-runtime-DLiKoOkd.mjs +150 -0
  73. package/dist/{ios-signing-BcH88ecn.mjs → ios-signing-rWR_Mu5Z.mjs} +3 -3
  74. package/dist/{ios-state-Avwz2cbZ.mjs → ios-state-tzD0s7pt.mjs} +1 -1
  75. package/dist/{js-swap-Desu2iII.mjs → js-swap-Cuky0ZAQ.mjs} +60 -13
  76. package/dist/{launch-6ckG9UrC.mjs → launch-B-pkNlqg.mjs} +48 -28
  77. package/dist/{lightened-B6TnpHMX.mjs → lightened-KHWHmzGs.mjs} +5 -5
  78. package/dist/{logs-B-DMy1K0.mjs → logs-B0etn-BD.mjs} +7 -7
  79. package/dist/{logs-CO0CJRiC.mjs → logs-HomiqPhV.mjs} +6 -6
  80. package/dist/{macos-CduEmWAK.mjs → macos-C5liDnbP.mjs} +1 -1
  81. package/dist/macos-run.mjs +1 -1
  82. package/dist/{macos-B1aCXhem.mjs → macos-zMxSibx5.mjs} +22 -23
  83. package/dist/maintenance-run.mjs +6 -6
  84. package/dist/{metro-DM3yJL1M.mjs → metro-Cj6W4qOO.mjs} +4 -4
  85. package/dist/{metro-request-O8Q-JvBg.mjs → metro-request-BWCl3Zco.mjs} +2 -2
  86. package/dist/{prebuild-Di2IhUue.mjs → miss-reason-CeHvzeVm.mjs} +12 -272
  87. package/dist/{named-ports-BvB_CO9B.mjs → named-ports-DZ8DrkH1.mjs} +3 -3
  88. package/dist/{native-android-28NOG2-y.mjs → native-android-DtWLzg6g.mjs} +18 -18
  89. package/dist/{native-gradle-artifact-inputs-DxVEtS6_.mjs → native-gradle-artifact-inputs-D4w20_6d.mjs} +5 -5
  90. package/dist/{native-runtime-C3_NkUlW.mjs → native-runtime-BfvvAJLd.mjs} +6 -6
  91. package/dist/{native-source-ChAGj7R1.mjs → native-source-D2ZfiQ6U.mjs} +1 -1
  92. package/dist/{native-xcode-inputs-BWFTw5cJ.mjs → native-xcode-inputs-BHvnAq4o.mjs} +3 -3
  93. package/dist/{native-xcode-ios-B4Qoc7-U.mjs → native-xcode-ios-CYxrg_kK.mjs} +18 -19
  94. package/dist/offload-worker.mjs +23 -22
  95. package/dist/{operation-exec-DKlBcKAL.mjs → operation-exec-DNynwpqO.mjs} +1 -1
  96. package/dist/{ownership-C3y8wLSl.mjs → ownership-BLgOimfp.mjs} +3 -3
  97. package/dist/{page-Dj8IqvGM.mjs → page-CoN9al_x.mjs} +2 -2
  98. package/dist/{phone-reverses-BhSxbqom.mjs → phone-reverses-vRveZKSG.mjs} +4 -4
  99. package/dist/{placement-log-B8RCSzOm.mjs → placement-log-CM0DSELs.mjs} +1 -1
  100. package/dist/{plan-placement-BI4r55aP.mjs → plan-placement-CIrvKq8y.mjs} +6 -6
  101. package/dist/{ports-DhOSyWm9.mjs → ports-CKORWlC0.mjs} +3 -3
  102. package/dist/{project-Clk1JAWL.mjs → project-DIo71tGq.mjs} +16 -16
  103. package/dist/{pull-request-BpMTNkMB.mjs → pull-request-m8cMZ3aE.mjs} +2 -2
  104. package/dist/pull-requests.mjs +1 -1
  105. package/dist/{react-native-android-bdHBMrnf.mjs → react-native-android-B7VYSlKj.mjs} +41 -36
  106. package/dist/{react-native-build-CJega_NM.mjs → react-native-build-CFYTYmG4.mjs} +13 -10
  107. package/dist/{react-native-doctor-CY7BGITE.mjs → react-native-doctor-CnpVfE0k.mjs} +6 -6
  108. package/dist/{react-native-ios-Bo5EDVel.mjs → react-native-ios-ByeXo_NP.mjs} +18 -18
  109. package/dist/{recorded-build-BuGL_fnm.mjs → recorded-build-B4prJjSD.mjs} +20 -2
  110. package/dist/{recordings-6i2-x8LU.mjs → recordings-Byu5SzlI.mjs} +1 -1
  111. package/dist/{registration-DKjJGQ6p.mjs → registration-C-3PDR3X.mjs} +1 -1
  112. package/dist/{reload-BvDuvygc.mjs → reload-DANrKhQR.mjs} +1 -1
  113. package/dist/{reload-A_axEbeS.mjs → reload-DTd9g1EG.mjs} +16 -16
  114. package/dist/{remote-PD6CM0xp.mjs → remote-BWuq9qHV.mjs} +4 -4
  115. package/dist/{remote-WK_swZEw.mjs → remote-NOM82XE0.mjs} +10 -10
  116. package/dist/{result-BkDpN5Mz.mjs → result-C-ISEJ5F.mjs} +17 -17
  117. package/dist/{run-CTFi4Nq2.mjs → run-DQwx6djG.mjs} +2 -2
  118. package/dist/{server-bare-W0aPsRZE.mjs → server-bare-B_wRfchQ.mjs} +2 -2
  119. package/dist/{server-command-S00-ddjK.mjs → server-command-DgXYowQf.mjs} +6 -6
  120. package/dist/{server-expo-cc-cmfsl.mjs → server-expo-ByBM8DVv.mjs} +10 -8
  121. package/dist/server-expo-D7rwjAFp.mjs +2 -0
  122. package/dist/{settings-C_Xu4RNZ.mjs → settings-BthPoY3t.mjs} +2 -2
  123. package/dist/{settings-Bap-qjnp.mjs → settings-Cz8kQJzr.mjs} +49 -12
  124. package/dist/{settings-payload-D5jjhmrw.mjs → settings-payload-BOcxsZ6k.mjs} +5 -5
  125. package/dist/{settings-write-C5huI-iS.mjs → settings-write-BuMPL1rd.mjs} +6 -6
  126. package/dist/settings.schema.json +32 -2
  127. package/dist/{simslim-DlBvwgeF.mjs → simslim-BMgpTRWe.mjs} +2 -2
  128. package/dist/{slot-launch-qEQVTth7.mjs → slot-launch-BIm9w8kH.mjs} +6 -6
  129. package/dist/{stage-CxVI_MlP.mjs → stage-CX1Byp3n.mjs} +6 -5
  130. package/dist/{start-CVzivp35.mjs → start-BZWr85b2.mjs} +1 -1
  131. package/dist/{start-YpT_JpQQ.mjs → start-DI0ofPO-.mjs} +12 -12
  132. package/dist/{state-B4B5P4LU.mjs → state-45P8Kd6Z.mjs} +2 -2
  133. package/dist/{state-B9VFI6r0.mjs → state-C2vELPyr.mjs} +4 -4
  134. package/dist/{stats-COoePEri.mjs → stats-BDljWVWU.mjs} +5 -5
  135. package/dist/{stats-report-BVRCqwWA.mjs → stats-report-Ci6TAfFm.mjs} +1 -1
  136. package/dist/{status-CIvU5-TF.mjs → status-BG2S-a1d.mjs} +1 -1
  137. package/dist/{status-CQWmNl1f.mjs → status-C2PdxK6q.mjs} +1 -1
  138. package/dist/{status-CIg0k7Qb.mjs → status-DEZjHP4q.mjs} +32 -34
  139. package/dist/{status-watch--rfZynD_.mjs → status-watch-Cs18eFkQ.mjs} +5 -5
  140. package/dist/status-worker.mjs +1 -1
  141. package/dist/{stim-desktop-D0P_bzmd.mjs → stim-desktop-DWGAfaud.mjs} +2 -2
  142. package/dist/{stop-BiI4_VFG.mjs → stop-B2zDplJa.mjs} +2 -2
  143. package/dist/{stop-C3d5qG7C.mjs → stop-BPrTEOaz.mjs} +16 -16
  144. package/dist/{stop-BEBBruvD.mjs → stop-DrxHVVX9.mjs} +5 -5
  145. package/dist/supervisor-run.mjs +15 -15
  146. package/dist/{support-BJbXovoO.mjs → support-BeVRaMWT.mjs} +13 -14
  147. package/dist/{support-Vckdzrmk.mjs → support-DBKG3Yyb.mjs} +7 -7
  148. package/dist/{swiftpm-artifact-inputs-DbuF-Yrr.mjs → swiftpm-artifact-inputs-CfNAb6Vm.mjs} +4 -4
  149. package/dist/{swiftpm-macos-Bu8xeBfM.mjs → swiftpm-macos-xdHjJHIj.mjs} +11 -11
  150. package/dist/toolchain-CTsPS5tL.mjs +2 -0
  151. package/dist/{toolchain-DCnWAxQL.mjs → toolchain-CZvtCZ-m.mjs} +11 -8
  152. package/dist/trigger-Bp3lruF2.mjs +2 -0
  153. package/dist/{trigger-BtB4kbe0.mjs → trigger-G_gbfIVB.mjs} +2 -2
  154. package/dist/{warm-progress-DwsGBpph.mjs → warm-progress-D3a0KviW.mjs} +20 -16
  155. package/dist/{web-D2En0Wa5.mjs → web-BvAweypa.mjs} +9 -9
  156. package/dist/web-DDL3usMb.mjs +2 -0
  157. package/dist/web-run.mjs +8 -8
  158. package/dist/windows-report.mjs +1 -1
  159. package/dist/{workspace-state-BhwAJBgA.mjs → workspace-state-CHEN_xzy.mjs} +3 -3
  160. package/dist/{workspaces-Dh5N70qW.mjs → workspaces-BgAYIccE.mjs} +218 -54
  161. package/dist/{worktree-DLm4s2Ib.mjs → worktree-C0YZ6mnk.mjs} +1 -1
  162. package/dist/{worktree-Yw3EW77B.mjs → worktree-kGPE9Pcw.mjs} +339 -37
  163. package/package.json +7 -7
  164. package/dist/server-expo-BWJDa7Qb.mjs +0 -2
  165. package/dist/toolchain-CIRdNl-c.mjs +0 -2
  166. package/dist/trigger-D8B7QR0q.mjs +0 -2
  167. package/dist/web-Dpj70t4p.mjs +0 -2
@@ -1,6 +1,6 @@
1
- import { d as throwIfCancelled, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { a as killOnAbort, r as childEnvironment } from "./operation-exec-DKlBcKAL.mjs";
3
- import { at as profileGate, it as parseSigningIdentities, ot as signingGate, rt as parseProvisioningProfilePlist, tt as SIGNING_CODES } from "./toolchain-DCnWAxQL.mjs";
1
+ import { d as throwIfCancelled, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { a as killOnAbort, r as childEnvironment } from "./operation-exec-DNynwpqO.mjs";
3
+ import { Q as SIGNING_CODES, et as parseProvisioningProfilePlist, nt as profileGate, rt as signingGate, tt as parseSigningIdentities } from "./toolchain-CZvtCZ-m.mjs";
4
4
  import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
6
6
  import { join } from "node:path";
@@ -1,4 +1,4 @@
1
- import { l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-BhwAJBgA.mjs";
1
+ import { l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-CHEN_xzy.mjs";
2
2
  import { HOSTED_METRO_REQUESTS_KEY, hostedMetroRequests, hostedNativeRecords, isJsonObject, parseHostedNativePlacement, unreadableHostedNative } from "@stim-cli/core/state";
3
3
  //#region src/device-host/ios-state.ts
4
4
  function readHostedNative(root, platform, slot) {
@@ -1,13 +1,15 @@
1
- import { C as operationState, b as spawnDeclared, d as throwIfCancelled, t as getExecutor } from "./exec-CGuDzt40.mjs";
1
+ import { C as operationState, b as spawnDeclared, d as throwIfCancelled, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { E as workspaceDir } from "./workspace-state-CHEN_xzy.mjs";
2
3
  import { r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
- import { a as killOnAbort, t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
4
- import { an as makeTemporaryDirectory, on as removeTemporaryEntry } from "./settings-Bap-qjnp.mjs";
5
- import { ir as bundleInvocation } from "./device-capacity-CpAVcKgq.mjs";
6
- import { K as tailLines, M as HEARTBEAT_INTERVAL_MS, W as startBuildHeartbeat } from "./toolchain-DCnWAxQL.mjs";
7
- import { s as expoTelemetryEnv, t as cleanLine } from "./server-expo-cc-cmfsl.mjs";
8
- import { randomUUID } from "node:crypto";
4
+ import { a as killOnAbort, t as runOperationFile } from "./operation-exec-DNynwpqO.mjs";
5
+ import { an as makeTemporaryDirectory, on as removeTemporaryEntry } from "./settings-Cz8kQJzr.mjs";
6
+ import { sr as bundleInvocation } from "./device-capacity-D_IlxZRL.mjs";
7
+ import { U as tailLines, V as startBuildHeartbeat, k as HEARTBEAT_INTERVAL_MS } from "./toolchain-CZvtCZ-m.mjs";
8
+ import { s as expoTelemetryEnv, t as cleanLine } from "./server-expo-ByBM8DVv.mjs";
9
+ import { createHash, randomUUID } from "node:crypto";
9
10
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
10
11
  import { basename, join } from "node:path";
12
+ import { ensurePrivateDir } from "@stim-cli/core";
11
13
  //#region src/engine/js-swap.ts
12
14
  const JS_BUNDLE_NAME = "main.jsbundle";
13
15
  const LAST_LINES = 5;
@@ -49,6 +51,55 @@ function detectEntryFile(root) {
49
51
  }
50
52
  return pickEntryFile(entries);
51
53
  }
54
+ function bundlerInputsKey(root, env) {
55
+ const hash = createHash("sha256");
56
+ for (const name of Object.keys(env).toSorted()) if (name.startsWith("EXPO_PUBLIC_") || name === "EXPO_NO_DOTENV" || name === "NODE_ENV") hash.update(`env\0${name}\0${env[name] ?? ""}\0`);
57
+ let entries = [];
58
+ try {
59
+ entries = readdirSync(root).filter((name) => name.startsWith(".env")).toSorted();
60
+ } catch {}
61
+ for (const name of entries) try {
62
+ hash.update(`file\0${name}\0`).update(readFileSync(join(root, name))).update("\0");
63
+ } catch {}
64
+ return hash.digest("hex");
65
+ }
66
+ /**
67
+ * The TMPDIR for a swap's bundler child: a workspace-private directory that holds Metro's transform cache
68
+ * (`$TMPDIR/metro-cache`). Metro's cache key omits the `EXPO_PUBLIC_*` values babel-preset-expo inlines,
69
+ * and `expo export:embed` ignores `--reset-cache` when `CI` is set (expo/expo#49630), so the directory is
70
+ * emptied whenever those values, the project's `.env*` files, or the `EXPO_NO_DOTENV` and `NODE_ENV` that
71
+ * select which of those files Expo loads differ from the previous swap's.
72
+ */
73
+ function swapBundlerTmpdir(root, env) {
74
+ const dir = join(workspaceDir(root), "js-swap-tmp");
75
+ const stamp = join(dir, "inputs");
76
+ const key = bundlerInputsKey(root, env);
77
+ let previous = null;
78
+ try {
79
+ previous = readFileSync(stamp, "utf-8");
80
+ } catch {}
81
+ if (previous !== key) {
82
+ rmSync(dir, {
83
+ recursive: true,
84
+ force: true
85
+ });
86
+ ensurePrivateDir(dir);
87
+ writeFileSync(stamp, key);
88
+ }
89
+ return dir;
90
+ }
91
+ /** Node's `os.tmpdir()` reads `TMPDIR` on POSIX and `TEMP`, then `TMP`, on Windows. */
92
+ function swapBundlerEnv(root, env) {
93
+ const tmp = swapBundlerTmpdir(root, env);
94
+ return {
95
+ ...env,
96
+ ...expoTelemetryEnv(env),
97
+ FORCE_COLOR: "0",
98
+ TMPDIR: tmp,
99
+ TEMP: tmp,
100
+ TMP: tmp
101
+ };
102
+ }
52
103
  function bundleCommand({ isExpo, entryFile, bundleOutput, assetsDest, assetCatalogDest = null }) {
53
104
  const catalogArgs = assetCatalogDest ? ["--asset-catalog-dest", assetCatalogDest] : [];
54
105
  if (isExpo) return {
@@ -311,11 +362,7 @@ async function swapJsBundle({ context, root, iosDir, isExpo, cachedAppPath, logW
311
362
  "pipe",
312
363
  "pipe"
313
364
  ],
314
- env: {
315
- ...context?.env ?? process.env,
316
- ...expoTelemetryEnv(context?.env ?? process.env),
317
- FORCE_COLOR: "0"
318
- }
365
+ env: swapBundlerEnv(root, context?.env ?? process.env)
319
366
  }));
320
367
  killOnAbort(context ? operationState(context).runSignal ?? context.signal : void 0)(child);
321
368
  } catch (err) {
@@ -436,4 +483,4 @@ function describe(err) {
436
483
  return String(err?.message || err);
437
484
  }
438
485
  //#endregion
439
- export { swapJsBundle as i, detectEntryFile as n, refreshUpdatesManifestFile as r, UPDATES_MANIFEST_NAME as t };
486
+ export { swapJsBundle as a, swapBundlerEnv as i, detectEntryFile as n, refreshUpdatesManifestFile as r, UPDATES_MANIFEST_NAME as t };
@@ -1,24 +1,24 @@
1
- import { w as withDrainingCancellation } from "./exec-CGuDzt40.mjs";
2
- import { k as workspaceLogsDir } from "./workspace-state-BhwAJBgA.mjs";
3
- import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-T3cDctRE.mjs";
4
- import { A as withConfigLockAsync, O as upsertProject, T as setDevice, dt as deviceSlotFileKey, ft as deviceSlotKey, it as formatBytes, pt as deviceSlotPlatforms, v as loadConfig, w as saveConfig } from "./config-BA3TgoIP.mjs";
5
- import { L as workspaceDevServerMode } from "./project-Clk1JAWL.mjs";
6
- import { o as workspaceLinks } from "./stim-desktop-D0P_bzmd.mjs";
7
- import { ct as trimAndroidCaches, i as androidDataFreeBytes, rt as resetAdoptedAvd, u as androidToolCwd } from "./android-SJx1V3R3.mjs";
8
- import { c as pidExists, f as signalProcessTree } from "./metro-DM3yJL1M.mjs";
9
- import { Cn as androidDevClientUrl, Ln as restartedAppNote, Sn as androidAppProcess, an as LAUNCH_UNVERIFIED, cn as VERIFY_TIMEOUT_MS, fn as unattributedLaunchLines, in as LAUNCH_FATAL, jn as installConflictKind, pn as unverifiedLaunchLines, rn as LAUNCH_BUNDLING, sn as RELEASE_VERIFY_WAIT_MS, vn as ADB_INSTALL_TIMEOUT_MS } from "./device-capacity-CpAVcKgq.mjs";
10
- import { pt as teardownOwnedAvd } from "./workspaces-Dh5N70qW.mjs";
11
- import { C as providerUploadOutcome } from "./build-cache-BW8T4oD2.mjs";
12
- import { G as lostLine, K as lostRefusal, z as DEBUG_VERIFY_STEP_MS } from "./support-BJbXovoO.mjs";
13
- import { t as recordPhoneReverse } from "./phone-reverses-BhSxbqom.mjs";
14
- import { n as verifyCollectorOwnership, r as readCollectors } from "./ownership-C3y8wLSl.mjs";
15
- import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-qEQVTth7.mjs";
1
+ import { w as withDrainingCancellation } from "./exec-L37dbiIb.mjs";
2
+ import { k as workspaceLogsDir } from "./workspace-state-CHEN_xzy.mjs";
3
+ import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-DsjhOzJ3.mjs";
4
+ import { A as withConfigLockAsync, O as upsertProject, T as setDevice, dt as deviceSlotFileKey, ft as deviceSlotKey, it as formatBytes, pt as deviceSlotPlatforms, v as loadConfig, w as saveConfig } from "./config-CNmN-ndb.mjs";
5
+ import { L as workspaceDevServerMode } from "./project-DIo71tGq.mjs";
6
+ import { o as workspaceLinks } from "./stim-desktop-DWGAfaud.mjs";
7
+ import { ct as trimAndroidCaches, i as androidDataFreeBytes, rt as resetAdoptedAvd, u as androidToolCwd } from "./android-27_JgJ1T.mjs";
8
+ import { c as pidExists, f as signalProcessTree } from "./metro-Cj6W4qOO.mjs";
9
+ import { Bn as restartedAppNote, En as androidDevClientUrl, Pn as installConflictKind, Tn as androidAppProcess, cn as LAUNCH_UNVERIFIED, dn as VERIFY_TIMEOUT_MS, gn as unverifiedLaunchLines, hn as unattributedLaunchLines, on as LAUNCH_BUNDLING, sn as LAUNCH_FATAL, un as RELEASE_VERIFY_WAIT_MS, xn as ADB_INSTALL_TIMEOUT_MS } from "./device-capacity-D_IlxZRL.mjs";
10
+ import { mt as teardownOwnedAvd } from "./workspaces-BgAYIccE.mjs";
11
+ import { C as providerUploadOutcome } from "./build-cache-CJ65Efv7.mjs";
12
+ import { G as lostLine, K as lostRefusal, z as DEBUG_VERIFY_STEP_MS } from "./support-BeVRaMWT.mjs";
13
+ import { t as recordPhoneReverse } from "./phone-reverses-vRveZKSG.mjs";
14
+ import { n as verifyCollectorOwnership, r as readCollectors } from "./ownership-BLgOimfp.mjs";
15
+ import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-BIm9w8kH.mjs";
16
16
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
17
- import { a as captureNativeCrashes, r as androidCrashClockOffset, s as printNativeCrashReport, t as errorDiagnostics } from "./error-diagnostics-CvB5bpPU.mjs";
18
- import { f as settleFingerprintCheck } from "./prebuild-Di2IhUue.mjs";
19
- import { i as launchOutcomeRecord } from "./native-runtime-C3_NkUlW.mjs";
20
- import { a as PLATFORM, b as noDeviceDiagnostic, h as displayPath, n as LAUNCH_FAILED, r as NO_DEVICE, t as INSTALL_FAILED } from "./support-Vckdzrmk.mjs";
21
- import { a as persistLastBuild, n as finishAndroidUpload, s as reportAndroidResult } from "./result-BkDpN5Mz.mjs";
17
+ import { a as captureNativeCrashes, r as androidCrashClockOffset, s as printNativeCrashReport, t as errorDiagnostics } from "./error-diagnostics-CW9xl6ot.mjs";
18
+ import { o as settleFingerprintCheck } from "./miss-reason-CeHvzeVm.mjs";
19
+ import { i as launchOutcomeRecord } from "./native-runtime-BfvvAJLd.mjs";
20
+ import { a as PLATFORM, b as noDeviceDiagnostic, h as displayPath, n as LAUNCH_FAILED, r as NO_DEVICE, t as INSTALL_FAILED } from "./support-DBKG3Yyb.mjs";
21
+ import { a as persistLastBuild, n as finishAndroidUpload, s as reportAndroidResult } from "./result-C-ISEJ5F.mjs";
22
22
  import { mkdirSync, openSync, statSync } from "node:fs";
23
23
  import { basename, join } from "node:path";
24
24
  import { ambientEnv } from "@stim-cli/core";
@@ -382,7 +382,31 @@ async function resolveInstallSerial({ root, slot, device, physical, remoteDevice
382
382
  });
383
383
  return resolved.serial;
384
384
  }
385
- async function finishAndroidRun({ operation, runtime, runtimePreparation, lease, releaseLease, root, slot, json, metroCheck, useBuildCache, variant, release, isExpo, metroPort, logsDir, emuLog, device, physical, remoteDevice, bootPromise, resolveAvdSerial, waitForDeviceBoot, bootDuration, bootPending, apkPath, androidPackage: initialPackage, androidPackageProblem, record, waitedForBuild, ccache, uploadPending, fingerprintCheck, providerUpload, providerName, remote, abandonedRemote: remoteWasAbandoned, started, startedAt, writer, phase, fail, readApkPackage, readProjectPackage, packageRemedy, install, launch, launchRelease, resolveDevClientScheme, verifyLaunched, verifyReleaseLaunched, spawn, kill, pidAlive, verifyCollector, writeLaunch, recordBuild, now, out, emit, recordRun, reclaimed, devServer, enterPhase, enterActivity, rebootDevice, dataFreeBytes = androidDataFreeBytes, trimCaches = trimAndroidCaches, wipeDevice = teardownOwnedAvd }) {
385
+ async function cleanEmulatorAppState({ avdName, owned }, serial, androidPackage, adopting, phase) {
386
+ if (!adopting && !owned) return {
387
+ code: "STIM_BAD_ARG",
388
+ message: `cleanAppState clears only an emulator Stim owns, and ${avdName ?? serial} is not one.`,
389
+ remedy: "Run `stim gc --delete` to clear the assignment so Stim creates an owned emulator."
390
+ };
391
+ const emulator = adopting ? "adopted emulator" : "emulator";
392
+ if (!androidPackage || !avdName) return {
393
+ code: LAUNCH_FAILED,
394
+ message: `Cannot clean an ${emulator} without its app package and AVD name.`,
395
+ remedy: "Retry once the APK applicationId can be read."
396
+ };
397
+ try {
398
+ await resetAdoptedAvd(avdName, serial, androidPackage);
399
+ } catch (error) {
400
+ return {
401
+ code: LAUNCH_FAILED,
402
+ message: `Could not clean ${emulator} ${avdName}: ${String(error?.message || error)}`,
403
+ remedy: adopting ? "Fix the device cleanup error and retry; adoption remains pending and the app was not launched." : "Fix the device cleanup error and retry; the app was not launched."
404
+ };
405
+ }
406
+ if (!adopting) phase("install", `cleared app state on ${avdName}`);
407
+ return null;
408
+ }
409
+ async function finishAndroidRun({ operation, runtime, runtimePreparation, lease, releaseLease, root, slot, json, metroCheck, useBuildCache, variant, release, isExpo, metroPort, logsDir, emuLog, device, physical, remoteDevice, cleanAppState = false, bootPromise, resolveAvdSerial, waitForDeviceBoot, bootDuration, bootPending, apkPath, androidPackage: initialPackage, androidPackageProblem, record, waitedForBuild, ccache, uploadPending, fingerprintCheck, providerUpload, providerName, remote, abandonedRemote: remoteWasAbandoned, started, startedAt, writer, phase, fail, readApkPackage, readProjectPackage, packageRemedy, install, launch, launchRelease, resolveDevClientScheme, verifyLaunched, verifyReleaseLaunched, spawn, kill, pidAlive, verifyCollector, writeLaunch, recordBuild, now, out, emit, recordRun, reclaimed, devServer, enterPhase, enterActivity, rebootDevice, dataFreeBytes = androidDataFreeBytes, trimCaches = trimAndroidCaches, wipeDevice = teardownOwnedAvd }) {
386
410
  const { env, signal } = operation ?? {};
387
411
  let androidPackage = initialPackage;
388
412
  let leaseWarned = false;
@@ -436,13 +460,9 @@ async function finishAndroidRun({ operation, runtime, runtimePreparation, lease,
436
460
  androidPackage = packageFromApk || androidPackage || await readProjectPackage();
437
461
  if (!androidPackage && androidPackageProblem) return fail(LAUNCH_FAILED, androidPackageProblem, packageRemedy, { lastBuildStatus: true });
438
462
  const adopting = !physical && !remoteDevice && Boolean(device.adoptionPending);
439
- if (adopting) {
440
- if (!androidPackage || !device.avdName) return fail(LAUNCH_FAILED, "Cannot clean an adopted emulator without its app package and AVD name.", "Retry once the APK applicationId can be read.");
441
- try {
442
- await resetAdoptedAvd(device.avdName, serial, androidPackage);
443
- } catch (error) {
444
- return fail(LAUNCH_FAILED, `Could not clean adopted emulator ${device.avdName}: ${String(error?.message || error)}`, "Fix the device cleanup error and retry; adoption remains pending and the app was not launched.");
445
- }
463
+ if (adopting || cleanAppState && !physical && !remoteDevice) {
464
+ const cleanupFailure = await cleanEmulatorAppState(device, serial, androidPackage, adopting, phase);
465
+ if (cleanupFailure) return fail(cleanupFailure.code, cleanupFailure.message, cleanupFailure.remedy);
446
466
  }
447
467
  const lostBeforeInstall = physical ? raiseLeaseFor(ADB_INSTALL_TIMEOUT_MS, true) : null;
448
468
  if (lostBeforeInstall) return lostBeforeInstall;
@@ -1,9 +1,9 @@
1
- import { f as WorkspaceProcessCleanupError } from "./exec-CGuDzt40.mjs";
2
- import { c as withWorkspaceStateLock } from "./workspace-state-BhwAJBgA.mjs";
3
- import { l as phaseLine } from "./command-output-T3cDctRE.mjs";
4
- import { Jt as warmWorktreePaths, Lt as podsOutOfSync, Q as resolveSettings, Rt as readWorktreeExclude, kt as listCarryableIgnoredEntries, vt as depsOutOfSync } from "./settings-Bap-qjnp.mjs";
1
+ import { f as WorkspaceProcessCleanupError } from "./exec-L37dbiIb.mjs";
2
+ import { c as withWorkspaceStateLock } from "./workspace-state-CHEN_xzy.mjs";
3
+ import { l as phaseLine } from "./command-output-DsjhOzJ3.mjs";
4
+ import { Jt as warmWorktreePaths, Lt as podsOutOfSync, Q as resolveSettings, Rt as readWorktreeExclude, kt as listCarryableIgnoredEntries, vt as depsOutOfSync } from "./settings-Cz8kQJzr.mjs";
5
5
  import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
6
- import { m as warmWorktreeTarget } from "./worktree-Yw3EW77B.mjs";
6
+ import { m as warmWorktreeTarget } from "./worktree-kGPE9Pcw.mjs";
7
7
  import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
8
8
  import { basename, dirname, join, relative } from "node:path";
9
9
  import { isJsonObject, readJsonObject, workspaceLightenedFile, workspaceMetadataFile } from "@stim-cli/core/state";
@@ -1,11 +1,11 @@
1
- import { i as recordWorkspaceUse, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-BhwAJBgA.mjs";
2
- import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-T3cDctRE.mjs";
3
- import { _ as isPathPrefix$1, ht as parseDeviceSlotOption, v as loadConfig$1 } from "./config-BA3TgoIP.mjs";
4
- import { n as findCommandWorkspace } from "./project-Clk1JAWL.mjs";
1
+ import { i as recordWorkspaceUse, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-CHEN_xzy.mjs";
2
+ import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-DsjhOzJ3.mjs";
3
+ import { _ as isPathPrefix$1, ht as parseDeviceSlotOption, v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
4
+ import { n as findCommandWorkspace } from "./project-DIo71tGq.mjs";
5
5
  import { n as SOURCES$1, t as LEVELS$1 } from "./ndjson-CrjIsGzw.mjs";
6
- import { i as followAgentActions, n as openWorkspaceLogs } from "./logs-CO0CJRiC.mjs";
7
- import { t as errorDiagnostics } from "./error-diagnostics-CvB5bpPU.mjs";
8
- import { n as followHostedLogs } from "./hosted-logs-sync-B7XCeqVm.mjs";
6
+ import { i as followAgentActions, n as openWorkspaceLogs } from "./logs-HomiqPhV.mjs";
7
+ import { t as errorDiagnostics } from "./error-diagnostics-CW9xl6ot.mjs";
8
+ import { n as followHostedLogs } from "./hosted-logs-sync-D3L1hDpM.mjs";
9
9
  import { t as watchStdoutReader } from "./stdout-reader-C8yjre1x.mjs";
10
10
  import { realpathSync } from "node:fs";
11
11
  import { relative, sep } from "node:path";
@@ -1,9 +1,9 @@
1
- import { T as process_identity_exports } from "./exec-CGuDzt40.mjs";
2
- import { k as workspaceLogsDir$1 } from "./workspace-state-BhwAJBgA.mjs";
3
- import { gt as projectDeviceSlots, v as loadConfig$1 } from "./config-BA3TgoIP.mjs";
4
- import { f as readAgentDeviceRecordsAsync, n as agentDeviceLiveness, o as envDir } from "./activity-BpdDvA8Q.mjs";
5
- import { o as captureWorkspaceCrashes } from "./error-diagnostics-CvB5bpPU.mjs";
6
- import { n as followHostedLogs, r as syncHostedLogs } from "./hosted-logs-sync-B7XCeqVm.mjs";
1
+ import { T as process_identity_exports } from "./exec-L37dbiIb.mjs";
2
+ import { k as workspaceLogsDir$1 } from "./workspace-state-CHEN_xzy.mjs";
3
+ import { gt as projectDeviceSlots, v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
4
+ import { f as readAgentDeviceRecordsAsync, n as agentDeviceLiveness, o as envDir } from "./activity-CANftndU.mjs";
5
+ import { o as captureWorkspaceCrashes } from "./error-diagnostics-CW9xl6ot.mjs";
6
+ import { n as followHostedLogs, r as syncHostedLogs } from "./hosted-logs-sync-D3L1hDpM.mjs";
7
7
  import { readdirSync, statSync, watch } from "node:fs";
8
8
  import { homedir } from "node:os";
9
9
  import { dirname, join, relative, resolve, sep } from "node:path";
@@ -1,2 +1,2 @@
1
- import { n as runMacos, r as waitForLaunchServices, t as macosCommand } from "./macos-B1aCXhem.mjs";
1
+ import { n as runMacos, r as waitForLaunchServices, t as macosCommand } from "./macos-zMxSibx5.mjs";
2
2
  export { macosCommand as default, runMacos, waitForLaunchServices };
@@ -1,2 +1,2 @@
1
- import { n as runMacosSupervisor, t as logLines } from "./run-CTFi4Nq2.mjs";
1
+ import { n as runMacosSupervisor, t as logLines } from "./run-DQwx6djG.mjs";
2
2
  export { logLines, runMacosSupervisor };
@@ -1,26 +1,26 @@
1
- import { b as spawnDeclared, d as throwIfCancelled, p as withWorkspaceProcessLock, t as getExecutor, w as withDrainingCancellation } from "./exec-CGuDzt40.mjs";
2
- import { E as workspaceDir, a as recordWorkspaceUseAsync, f as writeWorkspaceStateAsync, k as workspaceLogsDir$1, v as ensureWorkspaceStorageAsync, w as workspaceAgentDeviceDir } from "./workspace-state-BhwAJBgA.mjs";
3
- import { l as phaseLine } from "./command-output-T3cDctRE.mjs";
4
- import { A as withConfigLockAsync$1, O as upsertProject, u as getConcurrencyLimits } from "./config-BA3TgoIP.mjs";
5
- import { Z as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, it as settingValueAt, rt as settingShapeErrors } from "./settings-Bap-qjnp.mjs";
6
- import { f as projectRegistry, i as findProjectRoot$1, s as ownedDeviceLabel } from "./project-Clk1JAWL.mjs";
7
- import { i as macosProcess, n as macosDir, o as requiredMacosRecord, r as macosLogFile } from "./state-B4B5P4LU.mjs";
1
+ import { b as spawnDeclared, d as throwIfCancelled, p as withWorkspaceProcessLock, t as getExecutor, w as withDrainingCancellation } from "./exec-L37dbiIb.mjs";
2
+ import { E as workspaceDir, a as recordWorkspaceUseAsync, f as writeWorkspaceStateAsync, k as workspaceLogsDir$1, v as ensureWorkspaceStorageAsync, w as workspaceAgentDeviceDir } from "./workspace-state-CHEN_xzy.mjs";
3
+ import { l as phaseLine } from "./command-output-DsjhOzJ3.mjs";
4
+ import { A as withConfigLockAsync$1, O as upsertProject, u as getConcurrencyLimits } from "./config-CNmN-ndb.mjs";
5
+ import { Z as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, it as settingValueAt, rt as settingShapeErrors } from "./settings-Cz8kQJzr.mjs";
6
+ import { f as projectRegistry, i as findProjectRoot$1, s as ownedDeviceLabel } from "./project-DIo71tGq.mjs";
7
+ import { i as macosProcess, n as macosDir, o as requiredMacosRecord, r as macosLogFile } from "./state-45P8Kd6Z.mjs";
8
8
  import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
9
- import { Un as processContext, Wn as runProcessOperation } from "./device-capacity-CpAVcKgq.mjs";
10
- import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, St as acquireBuildSlot, Tt as releaseBuildSlot, X as recordFinishedBuild, Y as recordBuildPhase, tt as errorRemedy } from "./workspaces-Dh5N70qW.mjs";
11
- import { _t as runCancellationSignal, vt as withNativeBuildRun } from "./toolchain-DCnWAxQL.mjs";
12
- import { O as sanitizeDeviceLabel } from "./ios-BhfpRfNf.mjs";
13
- import { C as setRemoteLogSink, c as offloadPlacement, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText } from "./client-KSWIeQLA.mjs";
14
- import { D as OffloadRefusal, F as requireLocalBuild, L as resolveBuildPlacement, M as namedBuildMachine, N as parseBuildMachineOption, O as automaticBuild } from "./support-BJbXovoO.mjs";
15
- import { u as connectHost } from "./hosted-client-DMOOu8vD.mjs";
16
- import { t as placeHostedMacos } from "./hosted-macos-D4sDJIbB.mjs";
17
- import { i as stopMacosAppHeld, t as stopBundleInstances } from "./stop-BEBBruvD.mjs";
9
+ import { Kn as processContext, qn as runProcessOperation } from "./device-capacity-D_IlxZRL.mjs";
10
+ import { $ as startBuildProgress, Ct as acquireBuildSlot, Et as releaseBuildSlot, U as NO_BUILD_PROGRESS, X as recordBuildPhase, Z as recordFinishedBuild, et as tapBuildLog, nt as errorRemedy } from "./workspaces-BgAYIccE.mjs";
11
+ import { ht as withNativeBuildRun, mt as runCancellationSignal } from "./toolchain-CZvtCZ-m.mjs";
12
+ import { O as sanitizeDeviceLabel } from "./ios-DQEzde6f.mjs";
13
+ import { C as setRemoteLogSink, c as offloadPlacement, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText } from "./client-qwmHFSga.mjs";
14
+ import { D as OffloadRefusal, F as requireLocalBuild, L as resolveBuildPlacement, M as namedBuildMachine, N as parseBuildMachineOption, O as automaticBuild } from "./support-BeVRaMWT.mjs";
15
+ import { u as connectHost } from "./hosted-client-B_h_bTlz.mjs";
16
+ import { t as placeHostedMacos } from "./hosted-macos-GK4O1s7x.mjs";
17
+ import { i as stopMacosAppHeld, t as stopBundleInstances } from "./stop-DrxHVVX9.mjs";
18
18
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
19
- import { t as buildPlacementRecord } from "./placement-log-B8RCSzOm.mjs";
20
- import { n as devicePlacementLine, t as automaticDevicePlacement } from "./auto-placement-CKFpFCuq.mjs";
21
- import { t as reidentifyBundle } from "./stage-CxVI_MlP.mjs";
22
- import { t as validateMacosArtifactPlatform } from "./artifact-platform-DqCWUieN.mjs";
23
- import { t as waitForMacosRegistration } from "./registration-DKjJGQ6p.mjs";
19
+ import { t as buildPlacementRecord } from "./placement-log-CM0DSELs.mjs";
20
+ import { n as devicePlacementLine, t as automaticDevicePlacement } from "./auto-placement-RNh4kx2T.mjs";
21
+ import { t as reidentifyBundle } from "./stage-CX1Byp3n.mjs";
22
+ import { t as validateMacosArtifactPlatform } from "./artifact-platform-BaGL1i1X.mjs";
23
+ import { t as waitForMacosRegistration } from "./registration-C-3PDR3X.mjs";
24
24
  import { createHash, randomUUID } from "node:crypto";
25
25
  import { closeSync, existsSync, openSync, promises, realpathSync, renameSync } from "node:fs";
26
26
  import { join } from "node:path";
@@ -319,7 +319,6 @@ function clip(text, max) {
319
319
  const chars = [...text];
320
320
  return chars.length <= max ? text : `${chars.slice(0, max - 1).join("")}${ELLIPSIS}`;
321
321
  }
322
- /** The visible app name for a run: `<product> <dot> <label>`, or just the product when the label is empty. */
323
322
  function macosAppName(product, label) {
324
323
  const name = clip(product.replace(/[\p{Cc}/:\\]+/gu, " ").trim(), PRODUCT_MAX) || "App";
325
324
  const suffix = clip(sanitizeDeviceLabel(label), LABEL_MAX);
@@ -344,7 +343,7 @@ async function planMacos(context, root, buildMachineFlag) {
344
343
  if (selected.failure) throw Object.assign(new Error(selected.failure.message), selected.failure);
345
344
  const macos = settings.macos;
346
345
  if (!macos?.product || !macos.infoPlist) throw Object.assign(/* @__PURE__ */ new Error("Set macos.product and macos.infoPlist explicitly in .stim.json. See stim guide macos."), { code: "STIM_BAD_ARG" });
347
- const { swiftpmMacosProject } = await import("./swiftpm-macos-Bu8xeBfM.mjs");
346
+ const { swiftpmMacosProject } = await import("./swiftpm-macos-xdHjJHIj.mjs");
348
347
  const recipe = await swiftpmMacosProject(root).prepare(context, settings);
349
348
  let identity = null;
350
349
  let cacheHit = false;
@@ -1,10 +1,10 @@
1
- import { it as formatBytes } from "./config-BA3TgoIP.mjs";
2
- import { $ as levelStillShort, Ft as deviceSweepIsScoped, Q as levelFloors, R as resolveBudget, Z as diskPressureLevel, at as maintenanceLogger, et as lowestFree, it as openGcLog, rt as maintenanceItem } from "./device-capacity-CpAVcKgq.mjs";
3
- import { I as memoryCulpritsUnder, V as memoryCulpritAdvice } from "./ios-BhfpRfNf.mjs";
1
+ import { it as formatBytes } from "./config-CNmN-ndb.mjs";
2
+ import { $ as levelStillShort, Lt as deviceSweepIsScoped, Q as levelFloors, R as resolveBudget, Z as diskPressureLevel, at as maintenanceLogger, et as lowestFree, it as openGcLog, rt as maintenanceItem } from "./device-capacity-D_IlxZRL.mjs";
4
3
  import { t as resolveMaintenanceSettings } from "./settings-D9LtQaUw.mjs";
5
- import { C as sizeScanDeferred, S as measureSizes, b as measurePressure, v as measureDisk } from "./worktree-Yw3EW77B.mjs";
6
- import { t as relaunchWithLogFile } from "./detached-entry-tfrgGVWb.mjs";
7
- import { i as plannedMaintenance, n as diskRecovered, o as triggeringRoot, r as executeAction, v as measureOwnedDevices } from "./act-CvN9xyV6.mjs";
4
+ import { I as memoryCulpritsUnder, V as memoryCulpritAdvice } from "./ios-DQEzde6f.mjs";
5
+ import { C as sizeScanDeferred, S as measureSizes, b as measurePressure, v as measureDisk } from "./worktree-kGPE9Pcw.mjs";
6
+ import { t as relaunchWithLogFile } from "./detached-entry-VqFeEE9W.mjs";
7
+ import { i as plannedMaintenance, n as diskRecovered, o as triggeringRoot, r as executeAction, v as measureOwnedDevices } from "./act-Bh3t-NuH.mjs";
8
8
  import { r as due, t as capChildLog } from "./attempt-ClyJlZPT.mjs";
9
9
  import { releaseClaim, tryAcquireClaim } from "@stim-cli/core/ownership-claim";
10
10
  import { randomBytes } from "node:crypto";
@@ -1,7 +1,7 @@
1
- import { T as process_identity_exports, f as WorkspaceProcessCleanupError, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
- import { r as readWorkspaceState } from "./workspace-state-BhwAJBgA.mjs";
3
- import { A as withConfigLockAsync, S as releaseMetroPort, n as allMetroPorts, ot as isOnMountedVolume, r as claimMetroPort, st as listMountedVolumes, v as loadConfig } from "./config-BA3TgoIP.mjs";
4
- import { t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
1
+ import { T as process_identity_exports, f as WorkspaceProcessCleanupError, t as getExecutor } from "./exec-L37dbiIb.mjs";
2
+ import { r as readWorkspaceState } from "./workspace-state-CHEN_xzy.mjs";
3
+ import { A as withConfigLockAsync, S as releaseMetroPort, n as allMetroPorts, ot as isOnMountedVolume, r as claimMetroPort, st as listMountedVolumes, v as loadConfig } from "./config-CNmN-ndb.mjs";
4
+ import { t as runOperationFile } from "./operation-exec-DNynwpqO.mjs";
5
5
  import { sep } from "path";
6
6
  import { existsSync, readlinkSync, realpathSync } from "fs";
7
7
  import { readFile } from "node:fs/promises";
@@ -1,5 +1,5 @@
1
- import { T as process_identity_exports, d as throwIfCancelled, u as cancelledError } from "./exec-CGuDzt40.mjs";
2
- import { j as workspaceStateFile$1, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-BhwAJBgA.mjs";
1
+ import { T as process_identity_exports, d as throwIfCancelled, u as cancelledError } from "./exec-L37dbiIb.mjs";
2
+ import { j as workspaceStateFile$1, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-CHEN_xzy.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { statSync, watch } from "node:fs";
5
5
  import { HOSTED_METRO_REQUESTS_KEY, hostedMetroLinks, hostedMetroRequests, isJsonObject } from "@stim-cli/core/state";