stim 1.17.2 → 1.19.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 (162) hide show
  1. package/README.md +50 -1
  2. package/dist/{activity-IRvJY_ru.mjs → activity-BSw0x84R.mjs} +4 -4
  3. package/dist/{agent-device-usage-output-BK41vnzN.mjs → agent-device-usage-output-Bjxu_VmX.mjs} +8 -8
  4. package/dist/{android-B9yaNKwa.mjs → android-BXc6BmEi.mjs} +658 -404
  5. package/dist/{android-B_YNZy61.mjs → android-BdQC6zs1.mjs} +9 -9
  6. package/dist/android-BvV1gGdN.mjs +4 -0
  7. package/dist/{android-DE4v59Mb.mjs → android-DE5g_5gv.mjs} +2 -2
  8. package/dist/{android-cas-ZFpjJBL_.mjs → android-cas-C87geAg-.mjs} +5 -5
  9. package/dist/android-cas-compiler.mjs +2 -2
  10. package/dist/api-DIf_s86s.mjs +150 -0
  11. package/dist/api-run.d.mts +1 -0
  12. package/dist/api-run.mjs +145 -0
  13. package/dist/api.d.mts +218 -0
  14. package/dist/api.mjs +2 -0
  15. package/dist/{app-install-VPkI5WEg.mjs → app-install-CFI4ptUL.mjs} +33 -13
  16. package/dist/{attempt-Bk2ouQVL.mjs → attempt-DW-mQqM7.mjs} +14 -4
  17. package/dist/{web-Dl0KSRHf.mjs → browser-web-CDhqQxhv.mjs} +138 -176
  18. package/dist/{budget-DfcgFdQB.mjs → budget-Dz-kyXLv.mjs} +1391 -58
  19. package/dist/build-facts-B87vo-Im.d.mts +142 -0
  20. package/dist/{cache-manifest-DnUHBJaU.mjs → cache-manifest-DiwKSyv9.mjs} +3 -3
  21. package/dist/cache-manifest.mjs +1 -1
  22. package/dist/{chrome-BrcVWQyD.mjs → chrome-BTUOo8p2.mjs} +1 -1
  23. package/dist/cli-C9Zvgbdc.mjs +68 -0
  24. package/dist/cli.mjs +1 -1
  25. package/dist/{client-SvBdgObD.mjs → client-CuUo8Nvg.mjs} +381 -49
  26. package/dist/collector-run.d.mts +6 -0
  27. package/dist/collector-run.mjs +9 -9
  28. package/dist/{command-output-CDAIFD-8.mjs → command-output-Bt8ygHE7.mjs} +2 -2
  29. package/dist/{config-D0DbpZtM.mjs → config-DC5jEtd1.mjs} +9 -5
  30. package/dist/{created-devices-CpvzBL25.mjs → created-devices-D0s26Hx5.mjs} +2 -2
  31. package/dist/{dependency-state-CLcBHH2M.mjs → dependency-state-DKaS1OM9.mjs} +2 -2
  32. package/dist/{detached-entry-CiTEgMR1.mjs → detached-entry-pB_IPfV4.mjs} +1 -1
  33. package/dist/{dev-client-B-XC4uRH.mjs → dev-client-CDY_zAmD.mjs} +2 -2
  34. package/dist/{device-C8IOoJPv.mjs → device-BHw0WlHl.mjs} +8 -8
  35. package/dist/{device-capacity-ZC4XSZ4R.mjs → device-capacity-BoN1jQkO.mjs} +25 -14
  36. package/dist/device-host-worker.mjs +19 -19
  37. package/dist/{gradle-dJpre3Yn.mjs → device-ios-B2ruohE-.mjs} +661 -107
  38. package/dist/{device-lease-DpoS36_u.mjs → device-lease-Cu7PtQpZ.mjs} +9 -9
  39. package/dist/{device-lease-run-B8YltIH_.mjs → device-lease-run-D38SnZtt.mjs} +4 -4
  40. package/dist/{device-pool-3o7s5lo4.mjs → device-pool-CP4rAsHx.mjs} +3 -3
  41. package/dist/{device-remote-hFSkpfQu.mjs → device-remote-B5GiUifk.mjs} +15 -16
  42. package/dist/{doctor-CFv1fCrF.mjs → doctor-PRJH94v6.mjs} +61 -34
  43. package/dist/doctor-watchman-wZhyTdp4.mjs +259 -0
  44. package/dist/{error-diagnostics-C-NMnhrk.mjs → error-diagnostics--v5HGOU0.mjs} +11 -11
  45. package/dist/{exec-CaErVv7t.mjs → exec-i8GDPwq9.mjs} +93 -6
  46. package/dist/{gc-DEmkg3Xh.mjs → gc-CyHMcKcn.mjs} +25 -471
  47. package/dist/{guide-CSmhMTf8.mjs → guide-dRaQJJk9.mjs} +681 -507
  48. package/dist/{hosted-android-E1Heoqnv.mjs → hosted-android-Bs7fytj7.mjs} +3 -3
  49. package/dist/{hosted-client-Bp4knSwu.mjs → hosted-client-C5G4h_OJ.mjs} +2 -2
  50. package/dist/{hosted-ios-BnbeYOUD.mjs → hosted-ios-Bik035eL.mjs} +1 -1
  51. package/dist/{hosted-logs-OcgIBvCT.mjs → hosted-logs-CI9Az9a4.mjs} +9 -9
  52. package/dist/{hosted-macos-DcxKjtfH.mjs → hosted-macos-DABm3ScO.mjs} +5 -5
  53. package/dist/{hosted-native-1Ebbig4w.mjs → hosted-native-DbV2aUVw.mjs} +13 -9
  54. package/dist/{idle-shutdown-IGyNV8Cr.mjs → idle-shutdown-DYiMBn34.mjs} +7 -8
  55. package/dist/{ios-DSfnPfse.mjs → ios-BWbHFZVz.mjs} +19 -7
  56. package/dist/{ios-Cr1h5gnO.mjs → ios-DCrkgXEM.mjs} +1 -1
  57. package/dist/ios-DYUr9LGc.mjs +8 -0
  58. package/dist/ios-ITYno9rO.mjs +2241 -0
  59. package/dist/{ios-device-pAN4t54-.mjs → ios-device-CJ_ZOGky.mjs} +3 -3
  60. package/dist/{ios-device-Ee7sDXfp.mjs → ios-device-CrW8aMb5.mjs} +1 -1
  61. package/dist/{ios-state-8L3lgum6.mjs → ios-state-By0XuLTQ.mjs} +1 -1
  62. package/dist/{launch-verify-lTnWZikR.mjs → launch-verify-DCveSE6d.mjs} +5 -5
  63. package/dist/{logs-BAaS7gS2.mjs → logs-Bao1HOMy.mjs} +13 -13
  64. package/dist/{macos-BIRQS90f.mjs → macos-ciyBdTY5.mjs} +194 -132
  65. package/dist/macos-nIOATJmR.mjs +2 -0
  66. package/dist/macos-run.mjs +1 -1
  67. package/dist/maintenance-run.mjs +349 -47
  68. package/dist/manifest-CX0d1IkZ.mjs +148 -0
  69. package/dist/{metro-g8NqiJp-.mjs → metro-DI2AjPF_.mjs} +196 -43
  70. package/dist/{metro-gateway-C-ijGI2F.mjs → metro-gateway-BxpJLIwh.mjs} +4 -4
  71. package/dist/{metro-store-CDDZHtPl.mjs → metro-store-BAHFcJm6.mjs} +16 -2
  72. package/dist/{build-plan-BDsSi09V.mjs → miss-reason-CjQCOKqq.mjs} +207 -249
  73. package/dist/{named-ports-C8m8EQs2.mjs → named-ports-B4iWH4E-.mjs} +70 -8
  74. package/dist/{native-runtime-BEK171xQ.mjs → native-runtime-BGxsbfny.mjs} +6 -6
  75. package/dist/{ndjson-PclOIwVY.mjs → ndjson-LGZAMsqa.mjs} +8 -4
  76. package/dist/offload-worker.d.mts +3 -45
  77. package/dist/offload-worker.mjs +11 -11
  78. package/dist/{ownership-DyRQru0q.mjs → ownership-EB0ySdGK.mjs} +3 -3
  79. package/dist/{page-QF_Ke10s.mjs → page-Bv9s2KwY.mjs} +1 -1
  80. package/dist/placement-log-Dxe34rJm.mjs +88 -0
  81. package/dist/plan-placement-BVY59qa8.mjs +290 -0
  82. package/dist/{ports-4nYqxPWC.mjs → ports-ByPc0_97.mjs} +3 -3
  83. package/dist/{prebuild-D7RUMkwN.mjs → prebuild-BKJ3wJI1.mjs} +5 -5
  84. package/dist/preview-BbSottmO.mjs +986 -0
  85. package/dist/{rolldown-runtime-BsOwBuO_.mjs → process-identity-Biv3arCO.mjs} +11 -1
  86. package/dist/project-B5eQ1USs.mjs +612 -0
  87. package/dist/{pull-request-pxnDCQzn.mjs → pull-request-IHNdMnG8.mjs} +1 -1
  88. package/dist/pull-requests.mjs +1 -1
  89. package/dist/react-native-ios-BMh2i25I.mjs +2 -0
  90. package/dist/react-native-ios-CSpIxexZ.mjs +2083 -0
  91. package/dist/{recordings-BNgsD1Tr.mjs → recordings-Bv8McZN4.mjs} +1 -1
  92. package/dist/{reload-DcRxj3qG.mjs → reload-rAPdqeRR.mjs} +14 -15
  93. package/dist/{remote-cache-Ci4DQYYj.mjs → remote-cache-N3hAEaAL.mjs} +5 -5
  94. package/dist/{run-CkE9y0nc.mjs → run-lAkle1-c.mjs} +5 -5
  95. package/dist/{server-bare-BkrSxSsZ.mjs → server-bare-CkIjnegq.mjs} +5 -6
  96. package/dist/server-expo-DGsdUGX2.mjs +2 -0
  97. package/dist/{server-expo-CHTyXD0G.mjs → server-expo-n3tUi3Em.mjs} +5 -6
  98. package/dist/{settings-SR9OmW9h.mjs → settings-2am7TSxp.mjs} +5 -5
  99. package/dist/{settings-Cfd-0r2d.mjs → settings-CxgngUZk.mjs} +116 -103
  100. package/dist/{settings-BBpMcDbD.mjs → settings-Djl-mpjX.mjs} +1 -1
  101. package/dist/settings.schema.json +198 -9
  102. package/dist/{simslim-BWNrc3M3.mjs → simslim-D9LkJxIO.mjs} +7 -7
  103. package/dist/{slot-launch-DmjBmpQV.mjs → slot-launch-HV_KtPIw.mjs} +6 -6
  104. package/dist/{spawn-claims-D0XfSe8u.mjs → spawn-claims-Kqiifsk2.mjs} +1 -1
  105. package/dist/{spawn-entry-jw19m8Nl.mjs → spawn-entry-Dcb7sDUz.mjs} +1 -0
  106. package/dist/{stage-CzaiwFsI.mjs → stage-BgaZJVZY.mjs} +14 -3
  107. package/dist/{start-AlfCPRVU.mjs → start-D8NbxNBb.mjs} +1 -1
  108. package/dist/{start-DUz3mYdb.mjs → start-DtxthMfI.mjs} +34 -27
  109. package/dist/{state-PeQiJuIu.mjs → state-D2KtnALG.mjs} +4 -4
  110. package/dist/{state-DyaNTgfR.mjs → state-Tp4uImDS.mjs} +5 -3
  111. package/dist/{state-B4PQFXMW.d.mts → state-lKh8shBp.d.mts} +2 -3
  112. package/dist/{stats-Bq4fJOdB.mjs → stats-8EJ5ivFT.mjs} +6 -6
  113. package/dist/{status-DlKvVJBE.mjs → status-BEeL6IKz.mjs} +6 -4
  114. package/dist/{status-BA2pehwf.mjs → status-BOyp0CUl.mjs} +31 -34
  115. package/dist/{stim-desktop-Cnz8CPnl.mjs → stim-desktop-C65jk_q2.mjs} +1 -1
  116. package/dist/{stim-installations-QMEI32v1.mjs → stim-installations-DbmUjsLv.mjs} +1 -1
  117. package/dist/stop-D0UIpZuh.mjs +72 -0
  118. package/dist/{stop-zF1y04f2.mjs → stop-DRipAg-e.mjs} +2 -2
  119. package/dist/{stop-DQIasgKp.mjs → stop-zDlknFoz.mjs} +79 -33
  120. package/dist/supervisor-run.d.mts +24 -22
  121. package/dist/supervisor-run.mjs +21 -22
  122. package/dist/{support-CsJNVfOc.mjs → support-CNqYkV0y.mjs} +7 -7
  123. package/dist/{support-WvD__tSV.mjs → support-DsNaFg6D.mjs} +5 -5
  124. package/dist/swiftpm-macos-aJzPAj1t.mjs +119 -0
  125. package/dist/{toolchain-DNyR3NPq.mjs → toolchain-C3xSoyUl.mjs} +475 -269
  126. package/dist/{trigger-Bemu8ytw.mjs → trigger-CAhmG-4s.mjs} +6 -6
  127. package/dist/trigger-CoalsMTV.mjs +2 -0
  128. package/dist/{warm-progress-DF4JRvYI.mjs → warm-progress-pFLB2e6P.mjs} +135 -38
  129. package/dist/{status-CzS4bPO9.mjs → watchman-BL1IdOtq.mjs} +75 -7
  130. package/dist/web-DFpFeZu5.mjs +2 -0
  131. package/dist/web-DbbrPUn0.mjs +127 -0
  132. package/dist/web-run.mjs +10 -10
  133. package/dist/{workspace-state-DqcCbpE7.mjs → workspace-state-CR9X86xJ.mjs} +3 -3
  134. package/dist/{ownership-BMLqyBgJ.mjs → workspaces-Djb2gfi9.mjs} +661 -23
  135. package/dist/{worktree-Be_7NLKy.mjs → worktree-BL4M1rhB.mjs} +252 -50
  136. package/dist/{worktree-j3IcFAI5.mjs → worktree-DV-A0LNL.mjs} +1 -1
  137. package/package.json +10 -5
  138. package/shim/bundle-response.cjs +2 -1
  139. package/shim/bundle-response.d.cts +1 -1
  140. package/shim/expo-metro-config.cjs +1 -1
  141. package/dist/build-progress-D0WkjCPd.mjs +0 -1036
  142. package/dist/build-slots-41v_d2x9.mjs +0 -142
  143. package/dist/cli-CYXb29oE.mjs +0 -51
  144. package/dist/deps-iKw0eD4P.mjs +0 -438
  145. package/dist/device-ios-C2Um-XUR.mjs +0 -412
  146. package/dist/errors-B6W7FkxQ.mjs +0 -15
  147. package/dist/guide-status-Du-ZQ3FD.mjs +0 -125
  148. package/dist/idle-BXG__1BA.mjs +0 -176
  149. package/dist/in-use-CvGOUn-x.mjs +0 -130
  150. package/dist/ios-BJ4XUSe1.mjs +0 -3867
  151. package/dist/native-run-D1Q56rAD.mjs +0 -158
  152. package/dist/preview-B-g9d7kV.mjs +0 -318
  153. package/dist/process-identity-BmRm1qV0.mjs +0 -12
  154. package/dist/project-D47Rh0ly.mjs +0 -276
  155. package/dist/server-expo-CeakhI8P.mjs +0 -2
  156. package/dist/state-BKa8wNN5.mjs +0 -148
  157. package/dist/stop-BIiM49EY.mjs +0 -48
  158. package/dist/stop-cause-rhmGfwvt.mjs +0 -97
  159. package/dist/trigger-CXts6qt1.mjs +0 -2
  160. package/dist/watchman-APYjXSQa.mjs +0 -48
  161. package/dist/workspace-process-lock-2mNzOlaB.mjs +0 -58
  162. package/dist/workspaces-Bcib97-6.mjs +0 -306
@@ -1,4 +1,4 @@
1
- import { at as gitCommonDirOnDisk } from "./settings-Cfd-0r2d.mjs";
1
+ import { rt as gitCommonDirOnDisk } from "./settings-CxgngUZk.mjs";
2
2
  import { existsSync, rmSync } from "node:fs";
3
3
  import { loadConfig, recordingEnabled, workspaceRecordingsDir } from "@stim-cli/core/state";
4
4
  //#region src/workspace/recordings.ts
@@ -1,18 +1,17 @@
1
- import { B as parseDeviceSlotKey, p as getProject, z as deviceSlotPlatforms } from "./config-D0DbpZtM.mjs";
2
- import { f as refuseNoProject, l as phaseLine } from "./command-output-CDAIFD-8.mjs";
3
- import { o as findCommandWorkspace } from "./project-D47Rh0ly.mjs";
4
- import { l as resolveProjectMetro } from "./metro-g8NqiJp-.mjs";
5
- import { i as recordWorkspaceUse, r as readWorkspaceState$1 } from "./workspace-state-DqcCbpE7.mjs";
6
- import { o as readWebRecord, r as cdpEndpoint, u as webFacts } from "./state-PeQiJuIu.mjs";
7
- import { f as readWorkspaceLaunches } from "./state-BKa8wNN5.mjs";
8
- import { J as resolveOwnedAvdSerial } from "./android-B_YNZy61.mjs";
9
- import { w as resolveOwnedIosSim } from "./ios-DSfnPfse.mjs";
10
- import { l as probeHostedSession } from "./hosted-client-Bp4knSwu.mjs";
11
- import { p as ensureMetroReverse, s as androidAppProcess, v as iosAppProcess } from "./app-install-VPkI5WEg.mjs";
12
- import { r as readHostedNative } from "./ios-state-8L3lgum6.mjs";
13
- import { r as reopenHostedAndroidMetro } from "./hosted-android-E1Heoqnv.mjs";
14
- import { n as nativeRunCommand } from "./slot-launch-DmjBmpQV.mjs";
15
- import { n as sendToOwnedPage, t as liveWebRecord } from "./page-QF_Ke10s.mjs";
1
+ import { f as refuseNoProject, l as phaseLine } from "./command-output-Bt8ygHE7.mjs";
2
+ import { B as parseDeviceSlotKey, p as getProject, z as deviceSlotPlatforms } from "./config-DC5jEtd1.mjs";
3
+ import { i as recordWorkspaceUse, r as readWorkspaceState$1 } from "./workspace-state-CR9X86xJ.mjs";
4
+ import { A as readWorkspaceLaunches, n as findCommandWorkspace } from "./project-B5eQ1USs.mjs";
5
+ import { u as resolveProjectMetro } from "./metro-DI2AjPF_.mjs";
6
+ import { o as readWebRecord, r as cdpEndpoint, u as webFacts } from "./state-D2KtnALG.mjs";
7
+ import { J as resolveOwnedAvdSerial } from "./android-BdQC6zs1.mjs";
8
+ import { T as resolveOwnedIosSim } from "./ios-BWbHFZVz.mjs";
9
+ import { l as probeHostedSession } from "./hosted-client-C5G4h_OJ.mjs";
10
+ import { r as readHostedNative } from "./ios-state-By0XuLTQ.mjs";
11
+ import { r as reopenHostedAndroidMetro } from "./hosted-android-Bs7fytj7.mjs";
12
+ import { p as ensureMetroReverse, s as androidAppProcess, v as iosAppProcess } from "./app-install-CFI4ptUL.mjs";
13
+ import { n as nativeRunCommand } from "./slot-launch-HV_KtPIw.mjs";
14
+ import { n as sendToOwnedPage, t as liveWebRecord } from "./page-Bv9s2KwY.mjs";
16
15
  import { hostedAndroidDeviceName, hostedNativeRecords } from "@stim-cli/core/state";
17
16
  import chalk from "chalk";
18
17
  import { WebSocket } from "ws";
@@ -1,9 +1,9 @@
1
- import { t as getExecutor } from "./exec-CaErVv7t.mjs";
1
+ import { t as getExecutor } from "./exec-i8GDPwq9.mjs";
2
2
  import { n as stripAnsi } from "./process-output-Fpl8PYi8.mjs";
3
- import { m as resolvePackageJson } from "./project-D47Rh0ly.mjs";
4
- import { x as workspaceLogsDir } from "./workspace-state-DqcCbpE7.mjs";
5
- import { r as createNdjsonWriter } from "./ndjson-PclOIwVY.mjs";
6
- import { n as expoBinFromPackage, r as expoBinPath, s as findBinUpward } from "./server-expo-CHTyXD0G.mjs";
3
+ import { x as workspaceLogsDir } from "./workspace-state-CR9X86xJ.mjs";
4
+ import { v as resolvePackageJson } from "./project-B5eQ1USs.mjs";
5
+ import { r as createNdjsonWriter } from "./ndjson-LGZAMsqa.mjs";
6
+ import { n as expoBinFromPackage, r as expoBinPath, s as findBinUpward } from "./server-expo-n3tUi3Em.mjs";
7
7
  import { createRequire } from "node:module";
8
8
  import { existsSync, readFileSync } from "node:fs";
9
9
  import { join } from "node:path";
@@ -1,9 +1,9 @@
1
- import { t as getExecutor } from "./exec-CaErVv7t.mjs";
2
- import { n as ownership_claim_exports, t as process_identity_exports } from "./process-identity-BmRm1qV0.mjs";
3
- import { i as macosRuntimeClaim, n as macosLogFile, o as updateMacosRecord, r as macosProcess } from "./state-DyaNTgfR.mjs";
4
- import { r as createNdjsonWriter } from "./ndjson-PclOIwVY.mjs";
5
- import { LOG_ROTATE_BYTES } from "@stim-cli/core";
1
+ import { n as ownership_claim_exports, t as process_identity_exports } from "./process-identity-Biv3arCO.mjs";
2
+ import { t as getExecutor } from "./exec-i8GDPwq9.mjs";
3
+ import { a as macosRuntimeClaim, i as macosProcess, r as macosLogFile, s as updateMacosRecord } from "./state-Tp4uImDS.mjs";
4
+ import { r as createNdjsonWriter } from "./ndjson-LGZAMsqa.mjs";
6
5
  import { readMacosRecord } from "@stim-cli/core/state";
6
+ import { LOG_ROTATE_BYTES } from "@stim-cli/core";
7
7
  import { StringDecoder } from "node:string_decoder";
8
8
  //#region src/macos/run.ts
9
9
  function logLines(stream, write) {
@@ -1,8 +1,7 @@
1
- import { i as __require, t as __commonJSMin } from "./rolldown-runtime-BsOwBuO_.mjs";
2
- import { t as getExecutor } from "./exec-CaErVv7t.mjs";
3
- import { D as projectMetroSharedCache } from "./settings-Cfd-0r2d.mjs";
4
- import { n as supervisorError } from "./errors-B6W7FkxQ.mjs";
5
- import { a as metroStoreRoot, o as registerMetroStore, t as appendCacheStore } from "./metro-store-CDDZHtPl.mjs";
1
+ import { i as __require, r as __commonJSMin } from "./process-identity-Biv3arCO.mjs";
2
+ import { t as getExecutor } from "./exec-i8GDPwq9.mjs";
3
+ import { O as projectMetroSharedCache } from "./settings-CxgngUZk.mjs";
4
+ import { a as metroStoreRoot, c as supervisorError, o as registerMetroStore, t as appendCacheStore } from "./metro-store-BAHFcJm6.mjs";
6
5
  import { createRequire } from "node:module";
7
6
  import { isAbsolute, join, relative, sep } from "node:path";
8
7
  //#endregion
@@ -95,7 +94,7 @@ var import_bundle_response = (/* @__PURE__ */ __commonJSMin(((exports, module) =
95
94
  };
96
95
  res.once("finish", () => finish(true));
97
96
  res.once("close", () => finish(false));
98
- return next();
97
+ return clientPid ? clientPid.then(() => next()).catch(next) : next();
99
98
  };
100
99
  }
101
100
  module.exports = { bundleResponseMiddleware };
@@ -0,0 +1,2 @@
1
+ import { p as startExpoServer } from "./server-expo-n3tUi3Em.mjs";
2
+ export { startExpoServer };
@@ -1,10 +1,9 @@
1
- import { t as getExecutor } from "./exec-CaErVv7t.mjs";
1
+ import { t as getExecutor } from "./exec-i8GDPwq9.mjs";
2
2
  import { n as stripAnsi, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
- import { D as projectMetroSharedCache } from "./settings-Cfd-0r2d.mjs";
4
- import { m as resolvePackageJson } from "./project-D47Rh0ly.mjs";
5
- import { n as supervisorError } from "./errors-B6W7FkxQ.mjs";
6
- import { r as createNdjsonWriter } from "./ndjson-PclOIwVY.mjs";
7
- import { a as metroStoreRoot, i as metroStoreConfirmedRoot, n as expoMetroConfigPath, o as registerMetroStore, r as expoMetroStoreEnv } from "./metro-store-CDDZHtPl.mjs";
3
+ import { v as resolvePackageJson } from "./project-B5eQ1USs.mjs";
4
+ import { O as projectMetroSharedCache } from "./settings-CxgngUZk.mjs";
5
+ import { a as metroStoreRoot, c as supervisorError, i as metroStoreConfirmedRoot, n as expoMetroConfigPath, o as registerMetroStore, r as expoMetroStoreEnv } from "./metro-store-BAHFcJm6.mjs";
6
+ import { r as createNdjsonWriter } from "./ndjson-LGZAMsqa.mjs";
8
7
  import { accessSync, constants, existsSync, readFileSync } from "node:fs";
9
8
  import { dirname, join, parse } from "node:path";
10
9
  import { LOG_ROTATE_BYTES } from "@stim-cli/core";
@@ -1,8 +1,8 @@
1
- import { D as withConfigLock$1, O as writeConfigSetting, _ as loadConfig$1, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-D0DbpZtM.mjs";
2
- import { A as readCommittedSettings, H as unknownSettingKeys, gt as repoRoot, it as gitCommonDir } from "./settings-Cfd-0r2d.mjs";
3
- import { o as findCommandWorkspace, t as NO_PROJECT_REFUSAL } from "./project-D47Rh0ly.mjs";
4
- import { n as settingDefault, r as stimDesktopInstalled } from "./stim-desktop-Cnz8CPnl.mjs";
5
- import { n as recordingLayers, t as deleteTurnedOffRecordings } from "./recordings-BNgsD1Tr.mjs";
1
+ import { D as withConfigLock$1, O as writeConfigSetting, _ as loadConfig$1, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-DC5jEtd1.mjs";
2
+ import { n as findCommandWorkspace, t as NO_PROJECT_REFUSAL } from "./project-B5eQ1USs.mjs";
3
+ import { W as unknownSettingKeys, j as readCommittedSettings, mt as repoRoot, nt as gitCommonDir } from "./settings-CxgngUZk.mjs";
4
+ import { n as settingDefault, r as stimDesktopInstalled } from "./stim-desktop-C65jk_q2.mjs";
5
+ import { n as recordingLayers, t as deleteTurnedOffRecordings } from "./recordings-Bv8McZN4.mjs";
6
6
  import { existsSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
7
7
  import { join } from "node:path";
8
8
  import { SETTINGS, SETTING_SCOPES, coerceSettingText, isJsonObject, isSensitiveReference, settingDefinition, settingValueError } from "@stim-cli/core/state";
@@ -1,13 +1,110 @@
1
- import { t as getExecutor } from "./exec-CaErVv7t.mjs";
2
- import { _ as loadConfig$1, d as getConfigDir, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-D0DbpZtM.mjs";
3
- import { createHash } from "node:crypto";
1
+ import { t as getExecutor } from "./exec-i8GDPwq9.mjs";
2
+ import { _ as loadConfig$1, d as getConfigDir, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-DC5jEtd1.mjs";
4
3
  import { accessSync, chmodSync, constants, lstatSync, mkdirSync, mkdtempSync, readdirSync, realpathSync, rmSync, statSync } from "node:fs";
5
4
  import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
6
- import { chmodSync as chmodSync$1, existsSync as existsSync$1, lstatSync as lstatSync$1, mkdirSync as mkdirSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, realpathSync as realpathSync$1, statSync as statSync$1, utimesSync as utimesSync$1 } from "fs";
7
5
  import { dirname as dirname$1, isAbsolute as isAbsolute$1, join as join$1, relative as relative$1, resolve as resolve$1, sep as sep$1 } from "path";
8
- import { buildCacheRoot } from "@stim-cli/core";
9
6
  import { ANDROID_COMPILER_CACHE_CHOICES, ANDROID_PCH_CHOICES, REMOTE_DEVICE_BACKENDS, SETTINGS, SETTING_GROUPS, TUNNEL_MODES, WEB_VIEWPORTS, acceptsShape, coerceSettingText, expectedShape, isLayeredSetting, settingDefinition, settingValueError } from "@stim-cli/core/state";
10
7
  import { tmpdir } from "node:os";
8
+ import { chmodSync as chmodSync$1, existsSync as existsSync$1, lstatSync as lstatSync$1, mkdirSync as mkdirSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, realpathSync as realpathSync$1, statSync as statSync$1, utimesSync as utimesSync$1 } from "fs";
9
+ import { buildCacheRoot } from "@stim-cli/core";
10
+ import { createHash } from "node:crypto";
11
+ //#region src/optimizations.ts
12
+ function compilerCacheFallbackMessage({ fallback, compilerCache, file = null }) {
13
+ const origin = fallback.fromEnvironment ? "the environment" : file;
14
+ const backend = compilerCache === "none" ? "Android builds use no compiler cache, because optimizations.android.compilerCache is \"none\"." : "Android builds fall back to ccache when it is available.";
15
+ return `${fallback.key}${origin ? ` in ${origin}` : ""} ${fallback.reason}. ${backend}`;
16
+ }
17
+ function optimizationBuildProfile(platform, options) {
18
+ const selected = platform === "ios" ? {
19
+ ...options.ios,
20
+ swiftCompilationCache: options.ios.swiftCompilationCache ?? false
21
+ } : { pch: options.android.pch };
22
+ const defaults = platform === "ios" ? {
23
+ compilationCache: true,
24
+ swiftCompilationCache: false,
25
+ prefixMapping: true
26
+ } : { pch: "auto" };
27
+ if (JSON.stringify(selected) === JSON.stringify(defaults)) return void 0;
28
+ return `opt-${createHash("sha256").update(JSON.stringify(selected)).digest("hex").slice(0, 16)}`;
29
+ }
30
+ function resolveOptimizations(settings = {}, env = process.env) {
31
+ function choice(path, choices, fallback) {
32
+ const raw = optimizationValue(settings, path);
33
+ if (raw === void 0) return fallback;
34
+ if (typeof raw !== "string" || !choices.includes(raw)) throw new Error(`Invalid optimizations.${path}. Expected ${choices.join(", ")}.`);
35
+ return raw;
36
+ }
37
+ const compiler = choice("android.compilerCache", ANDROID_COMPILER_CACHE_CHOICES, "auto");
38
+ const fromEnvironment = Boolean(env.STIM_ANDROID_CAS_TOOLCHAIN);
39
+ const manifest = env.STIM_ANDROID_CAS_TOOLCHAIN || optimizationValue(settings, "android.casToolchain");
40
+ let fallback = null;
41
+ let toolchain = null;
42
+ if (manifest !== void 0) {
43
+ if (typeof manifest === "string" && isAbsolute(manifest) && !/[\r\n\0]/.test(manifest)) toolchain = manifest;
44
+ else fallback = {
45
+ key: fromEnvironment ? "STIM_ANDROID_CAS_TOOLCHAIN" : "optimizations.android.casToolchain",
46
+ reason: `is ${JSON.stringify(manifest)}, which is not an absolute path to a toolchain JSON manifest`,
47
+ fromEnvironment,
48
+ manifest: null
49
+ };
50
+ }
51
+ let compilerCache = compiler === "auto" ? toolchain ? "cas" : "ccache" : compiler;
52
+ if (compilerCache === "cas" && !toolchain) {
53
+ fallback ??= {
54
+ key: "optimizations.android.compilerCache",
55
+ reason: "is \"cas\", but no optimizations.android.casToolchain or STIM_ANDROID_CAS_TOOLCHAIN names the toolchain manifest",
56
+ fromEnvironment: false,
57
+ manifest: null
58
+ };
59
+ compilerCache = "ccache";
60
+ }
61
+ return {
62
+ buildCache: optimizationBoolean(settings, "buildCache"),
63
+ remoteBuildCache: optimizationBoolean(settings, "remoteBuildCache"),
64
+ releaseBundleSwap: optimizationBoolean(settings, "releaseBundleSwap"),
65
+ metroSharedCache: optimizationBoolean(settings, "metroSharedCache"),
66
+ metroWarmup: optimizationBoolean(settings, "metroWarmup"),
67
+ ios: {
68
+ compilationCache: optimizationBoolean(settings, "ios.compilationCache"),
69
+ swiftCompilationCache: optimizationValue(settings, "ios.swiftCompilationCache") === void 0 ? null : optimizationBoolean(settings, "ios.swiftCompilationCache"),
70
+ prefixMapping: optimizationBoolean(settings, "ios.prefixMapping")
71
+ },
72
+ android: {
73
+ compilerCache,
74
+ casToolchain: toolchain,
75
+ compilerCacheFallback: fallback,
76
+ pch: choice("android.pch", ANDROID_PCH_CHOICES, "auto"),
77
+ gradleBuildCache: optimizationBoolean(settings, "android.gradleBuildCache"),
78
+ targetAbiOnly: optimizationBoolean(settings, "android.targetAbiOnly")
79
+ }
80
+ };
81
+ }
82
+ function artifactCachePolicy(options, reuse, release) {
83
+ return {
84
+ read: reuse && options.buildCache && (!release || options.releaseBundleSwap),
85
+ write: options.buildCache,
86
+ remote: options.buildCache && options.remoteBuildCache
87
+ };
88
+ }
89
+ function optimizationValue(settings, path) {
90
+ let node = settings;
91
+ for (const key of ["optimizations", ...path.split(".")]) {
92
+ if (node === void 0) return void 0;
93
+ if (!node || typeof node !== "object" || Array.isArray(node)) throw new Error("Invalid optimizations setting. Expected nested objects.");
94
+ node = node[key];
95
+ }
96
+ return node;
97
+ }
98
+ function optimizationBoolean(settings, path, fallback = true) {
99
+ const raw = optimizationValue(settings, path);
100
+ if (raw === void 0) return fallback;
101
+ if (typeof raw !== "boolean") throw new Error(`Invalid optimizations.${path}. Expected true or false.`);
102
+ return raw;
103
+ }
104
+ function resolveMetroSharedCache(settings) {
105
+ return optimizationBoolean(settings, "metroSharedCache");
106
+ }
107
+ //#endregion
11
108
  //#region src/temporary.ts
12
109
  function existingPath(path) {
13
110
  const missing = [];
@@ -752,103 +849,6 @@ function resolveSourceCheckout(cwd) {
752
849
  };
753
850
  }
754
851
  //#endregion
755
- //#region src/optimizations.ts
756
- function compilerCacheFallbackMessage({ fallback, compilerCache, file = null }) {
757
- const origin = fallback.fromEnvironment ? "the environment" : file;
758
- const backend = compilerCache === "none" ? "Android builds use no compiler cache, because optimizations.android.compilerCache is \"none\"." : "Android builds fall back to ccache when it is available.";
759
- return `${fallback.key}${origin ? ` in ${origin}` : ""} ${fallback.reason}. ${backend}`;
760
- }
761
- function optimizationBuildProfile(platform, options) {
762
- const selected = platform === "ios" ? {
763
- ...options.ios,
764
- swiftCompilationCache: options.ios.swiftCompilationCache ?? false
765
- } : { pch: options.android.pch };
766
- const defaults = platform === "ios" ? {
767
- compilationCache: true,
768
- swiftCompilationCache: false,
769
- prefixMapping: true
770
- } : { pch: "auto" };
771
- if (JSON.stringify(selected) === JSON.stringify(defaults)) return void 0;
772
- return `opt-${createHash("sha256").update(JSON.stringify(selected)).digest("hex").slice(0, 16)}`;
773
- }
774
- function resolveOptimizations(settings = {}, env = process.env) {
775
- function choice(path, choices, fallback) {
776
- const raw = optimizationValue(settings, path);
777
- if (raw === void 0) return fallback;
778
- if (typeof raw !== "string" || !choices.includes(raw)) throw new Error(`Invalid optimizations.${path}. Expected ${choices.join(", ")}.`);
779
- return raw;
780
- }
781
- const compiler = choice("android.compilerCache", ANDROID_COMPILER_CACHE_CHOICES, "auto");
782
- const fromEnvironment = Boolean(env.STIM_ANDROID_CAS_TOOLCHAIN);
783
- const manifest = env.STIM_ANDROID_CAS_TOOLCHAIN || optimizationValue(settings, "android.casToolchain");
784
- let fallback = null;
785
- let toolchain = null;
786
- if (manifest !== void 0) {
787
- if (typeof manifest === "string" && isAbsolute(manifest) && !/[\r\n\0]/.test(manifest)) toolchain = manifest;
788
- else fallback = {
789
- key: fromEnvironment ? "STIM_ANDROID_CAS_TOOLCHAIN" : "optimizations.android.casToolchain",
790
- reason: `is ${JSON.stringify(manifest)}, which is not an absolute path to a toolchain JSON manifest`,
791
- fromEnvironment,
792
- manifest: null
793
- };
794
- }
795
- let compilerCache = compiler === "auto" ? toolchain ? "cas" : "ccache" : compiler;
796
- if (compilerCache === "cas" && !toolchain) {
797
- fallback ??= {
798
- key: "optimizations.android.compilerCache",
799
- reason: "is \"cas\", but no optimizations.android.casToolchain or STIM_ANDROID_CAS_TOOLCHAIN names the toolchain manifest",
800
- fromEnvironment: false,
801
- manifest: null
802
- };
803
- compilerCache = "ccache";
804
- }
805
- return {
806
- buildCache: optimizationBoolean(settings, "buildCache"),
807
- remoteBuildCache: optimizationBoolean(settings, "remoteBuildCache"),
808
- releaseBundleSwap: optimizationBoolean(settings, "releaseBundleSwap"),
809
- metroSharedCache: optimizationBoolean(settings, "metroSharedCache"),
810
- metroWarmup: optimizationBoolean(settings, "metroWarmup"),
811
- ios: {
812
- compilationCache: optimizationBoolean(settings, "ios.compilationCache"),
813
- swiftCompilationCache: optimizationValue(settings, "ios.swiftCompilationCache") === void 0 ? null : optimizationBoolean(settings, "ios.swiftCompilationCache"),
814
- prefixMapping: optimizationBoolean(settings, "ios.prefixMapping")
815
- },
816
- android: {
817
- compilerCache,
818
- casToolchain: toolchain,
819
- compilerCacheFallback: fallback,
820
- pch: choice("android.pch", ANDROID_PCH_CHOICES, "auto"),
821
- gradleBuildCache: optimizationBoolean(settings, "android.gradleBuildCache"),
822
- targetAbiOnly: optimizationBoolean(settings, "android.targetAbiOnly")
823
- }
824
- };
825
- }
826
- function artifactCachePolicy(options, reuse, release) {
827
- return {
828
- read: reuse && options.buildCache && (!release || options.releaseBundleSwap),
829
- write: options.buildCache,
830
- remote: options.buildCache && options.remoteBuildCache
831
- };
832
- }
833
- function optimizationValue(settings, path) {
834
- let node = settings;
835
- for (const key of ["optimizations", ...path.split(".")]) {
836
- if (node === void 0) return void 0;
837
- if (!node || typeof node !== "object" || Array.isArray(node)) throw new Error("Invalid optimizations setting. Expected nested objects.");
838
- node = node[key];
839
- }
840
- return node;
841
- }
842
- function optimizationBoolean(settings, path, fallback = true) {
843
- const raw = optimizationValue(settings, path);
844
- if (raw === void 0) return fallback;
845
- if (typeof raw !== "boolean") throw new Error(`Invalid optimizations.${path}. Expected true or false.`);
846
- return raw;
847
- }
848
- function resolveMetroSharedCache(settings) {
849
- return optimizationBoolean(settings, "metroSharedCache");
850
- }
851
- //#endregion
852
852
  //#region src/engine/metro-reach.ts
853
853
  const PUBLIC_METRO_ENV = "STIM_METRO_PUBLIC_URL";
854
854
  const MANAGED_PROVIDERS = ["ngrok", "cloudflared"];
@@ -1335,9 +1335,11 @@ function cacheProviderSettingError(settings) {
1335
1335
  if ("options" in block && !isPlainObject(block.options)) return `Invalid cache.options setting ${JSON.stringify(block.options)}. Expected an object.`;
1336
1336
  return null;
1337
1337
  }
1338
+ /** The remote target `remote` names, or null for `local`, which runs on this Mac whatever a lower layer sets. */
1338
1339
  function parseIosRemote(remote) {
1339
1340
  const selected = remote.trim();
1340
1341
  const reserved = selected.toLowerCase();
1342
+ if (reserved === "local") return null;
1341
1343
  return REMOTE_DEVICE_BACKENDS.includes(reserved) ? {
1342
1344
  kind: "backend",
1343
1345
  backend: reserved
@@ -1350,6 +1352,9 @@ function remoteIosSetting(settings) {
1350
1352
  const ios = settings.ios;
1351
1353
  return isPlainObject(ios) && typeof ios.remote === "string" ? parseIosRemote(ios.remote) : null;
1352
1354
  }
1355
+ function remoteEasFallbackSetting(settings) {
1356
+ return settingValueAt(settings, "remote.easFallback") === true;
1357
+ }
1353
1358
  function remoteAndroidSetting(settings) {
1354
1359
  const android = settings.android;
1355
1360
  return isPlainObject(android) && typeof android.remote === "string" ? parseIosRemote(android.remote) : null;
@@ -1369,6 +1374,14 @@ function deviceIdleShutdownMinutesSetting(settings) {
1369
1374
  function deviceReclaimIdleMinutesSetting(settings) {
1370
1375
  return minutesSetting(settings, "devices", "reclaimIdleMinutes");
1371
1376
  }
1377
+ function projectMaintenancePinned(root) {
1378
+ try {
1379
+ const value = settingValueAt(settingsForProject(root), "maintenance.keep");
1380
+ return value !== void 0 && value !== false;
1381
+ } catch {
1382
+ return true;
1383
+ }
1384
+ }
1372
1385
  function projectDeviceReclaimIdleMinutes(root) {
1373
1386
  return deviceReclaimIdleMinutesSetting(settingsForProject(root));
1374
1387
  }
@@ -1437,4 +1450,4 @@ function webSettings(settings) {
1437
1450
  };
1438
1451
  }
1439
1452
  //#endregion
1440
- export { cloneIgnoredEntries as $, readCommittedSettings as A, settingsLayers as B, metroWarmupUrlSetting as C, filesystemDevice as Ct, projectMetroSharedCache as D, projectDeviceReclaimIdleMinutes as E, temporaryRoot as Et, settingFile as F, detectProviders as G, unknownSettingKeys as H, settingOrigin as I, artifactCachePolicy as J, planMetroReach as K, settingOriginScope as L, remoteIosSetting as M, resolveCacheProviderConfig as N, projectOptimizations as O, resolveSettings as P, branchExists as Q, settingShapeErrors as R, metroTunnelSettingError as S, warmWorktreePaths as St, parseIosRemote as T, removeTemporaryEntry as Tt, webSettings as U, tunnelModeSetting as V, PUBLIC_METRO_ENV as W, optimizationBuildProfile as X, compilerCacheFallbackMessage as Y, resolveOptimizations as Z, iosSigningIdentitySha1SettingError as _, resolveFullRef as _t, androidAvdConfigSetting as a, gitCommonDirOnDisk as at, metroIdleStopMinutesSetting as b, sourceCheckoutOf as bt, androidDataPartitionSizeGbSetting as c, hasUncommittedWork as ct, deviceIdleShutdownMinutesSetting as d, listWorktrees as dt, deleteBranch as et, iosLanHostSetting as f, locallyKnownUpstream as ft, iosSigningIdentitySha1Setting as g, repoRoot as gt, iosSigningIdentitySettingError as h, removeWorktree as ht, SETTING_SHAPE_REMEDY as i, gitCommonDir as it, remoteAndroidSetting as j, publicUrlSetting as k, androidDataPartitionSizeGbSettingError as l, isPodInstallChurn as lt, iosSigningIdentitySetting as m, readWorktreeExclude as mt, PATH_SETTINGS as n, dirtyFingerprintFiles as nt, androidAvdConfigSettingError as o, hasPopulatedSubmodules as ot, iosLanHostSettingError as p, podsOutOfSync as pt, resolveTailscaleBinary as q, SETTINGS_WITH_RESOLVE_TIME_FALLBACK as r, dirtyPaths as rt, androidDataPartitionSizeBytes as s, hasRemote as st, ANDROID_AVD_CONFIG_HELP as t, depsOutOfSync as tt, cacheProviderSettingError as u, linkedWorktreesOnDisk as ut, iosSimSlimProfileSetting as v, resolveSourceCheckout as vt, ngrokUrlSetting as w, makeTemporaryDirectory as wt, metroPortSetting as x, unpushedCommits as xt, mergeSettingsLayers as y, restoreFile as yt, settingValueAt as z };
1453
+ export { depsOutOfSync as $, publicUrlSetting as A, settingShapeErrors as B, metroWarmupUrlSetting as C, removeTemporaryEntry as Ct, projectMaintenancePinned as D, optimizationBuildProfile as Dt, projectDeviceReclaimIdleMinutes as E, compilerCacheFallbackMessage as Et, resolveCacheProviderConfig as F, webSettings as G, settingsLayers as H, resolveSettings as I, planMetroReach as J, PUBLIC_METRO_ENV as K, settingFile as L, remoteAndroidSetting as M, remoteEasFallbackSetting as N, projectMetroSharedCache as O, resolveOptimizations as Ot, remoteIosSetting as P, deleteBranch as Q, settingOrigin as R, metroTunnelSettingError as S, makeTemporaryDirectory as St, parseIosRemote as T, artifactCachePolicy as Tt, tunnelModeSetting as U, settingValueAt as V, unknownSettingKeys as W, branchExists as X, resolveTailscaleBinary as Y, cloneIgnoredEntries as Z, iosSigningIdentitySha1SettingError as _, restoreFile as _t, androidAvdConfigSetting as a, hasRemote as at, metroIdleStopMinutesSetting as b, warmWorktreePaths as bt, androidDataPartitionSizeGbSetting as c, linkedWorktreesOnDisk as ct, deviceIdleShutdownMinutesSetting as d, podsOutOfSync as dt, dirtyFingerprintFiles as et, iosLanHostSetting as f, readWorktreeExclude as ft, iosSigningIdentitySha1Setting as g, resolveSourceCheckout as gt, iosSigningIdentitySettingError as h, resolveFullRef as ht, SETTING_SHAPE_REMEDY as i, hasPopulatedSubmodules as it, readCommittedSettings as j, projectOptimizations as k, androidDataPartitionSizeGbSettingError as l, listWorktrees as lt, iosSigningIdentitySetting as m, repoRoot as mt, PATH_SETTINGS as n, gitCommonDir as nt, androidAvdConfigSettingError as o, hasUncommittedWork as ot, iosLanHostSettingError as p, removeWorktree as pt, detectProviders as q, SETTINGS_WITH_RESOLVE_TIME_FALLBACK as r, gitCommonDirOnDisk as rt, androidDataPartitionSizeBytes as s, isPodInstallChurn as st, ANDROID_AVD_CONFIG_HELP as t, dirtyPaths as tt, cacheProviderSettingError as u, locallyKnownUpstream as ut, iosSimSlimProfileSetting as v, sourceCheckoutOf as vt, ngrokUrlSetting as w, temporaryRoot as wt, metroPortSetting as x, filesystemDevice as xt, mergeSettingsLayers as y, unpushedCommits as yt, settingOriginScope as z };
@@ -4,7 +4,7 @@ function resolveMaintenanceSettings(config = loadConfig(), env = process.env) {
4
4
  const result = {};
5
5
  const invalid = [];
6
6
  let disabled = false;
7
- for (const setting of SETTINGS.filter((entry) => entry.key.startsWith("maintenance.") || /^caches\..*MaxGb$/.test(entry.key))) {
7
+ for (const setting of SETTINGS.filter((entry) => entry.key.startsWith("maintenance.") && entry.key !== "maintenance.keep" || /^caches\..*MaxGb$/.test(entry.key))) {
8
8
  const [group, name] = setting.key.split(".");
9
9
  const rawEnv = setting.env ? env[setting.env] : void 0;
10
10
  const layer = config?.[group];