stim 1.31.0 → 1.33.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 (169) hide show
  1. package/dist/{acquire-artifact-P84h3ssa.mjs → acquire-artifact-DTh_LxrE.mjs} +2 -2
  2. package/dist/{act-lcOIEy32.mjs → act-Cur4YKtK.mjs} +74 -25
  3. package/dist/{activity-Dw4N_RFe.mjs → activity-C8kBq9w0.mjs} +6 -6
  4. package/dist/{agent-device-usage-output-Boie2yB-.mjs → agent-device-usage-output-BTRaK_up.mjs} +5 -5
  5. package/dist/{android-BeeC15Ve.mjs → android-B2DSKg-A.mjs} +2 -2
  6. package/dist/{android-DhiWSOFU.mjs → android-BL-QqHjc.mjs} +87 -53
  7. package/dist/{android-aIuJZoDu.mjs → android-D5mCdVl2.mjs} +5 -5
  8. package/dist/{android-DsEj2CCs.mjs → android-Iq0M2t2d.mjs} +27 -15
  9. package/dist/{android-cas-CbumHXIq.mjs → android-cas-Dhcjkys1.mjs} +4 -4
  10. package/dist/android-cas-compiler.mjs +1 -1
  11. package/dist/android-image-DFk26aY6.mjs +254 -0
  12. package/dist/{android-project-CCEQyYJK.d.mts → android-project-BDlPnfmL.d.mts} +1 -1
  13. package/dist/api.d.mts +2 -1
  14. package/dist/api.mjs +28 -28
  15. package/dist/{apk-signed-tail-B9Usseps.mjs → apk-signed-tail-CPpA-3vu.mjs} +2 -2
  16. package/dist/{artifact-ta3xA0c4.mjs → artifact-BMjubIP2.mjs} +13 -13
  17. package/dist/{artifact-Cr34-Yyy.mjs → artifact-BufzdGbT.mjs} +34 -21
  18. package/dist/{artifact-platform-BO2Uvk_A.mjs → artifact-platform-DqCWUieN.mjs} +1 -1
  19. package/dist/{auto-placement-DtTRG0rk.mjs → auto-placement-D7P98glJ.mjs} +11 -9
  20. package/dist/{browser-web-DuULNZrS.mjs → browser-web-C74et-Nv.mjs} +15 -15
  21. package/dist/{build-BpFFbdXD.mjs → build-DFBGWOTc.mjs} +23 -23
  22. package/dist/{build-cache-BsKim4V7.mjs → build-cache-Cqj4FGnX.mjs} +20 -8
  23. package/dist/{build-plan-DH1rT11x.mjs → build-plan-T3Hi24ax.mjs} +7 -7
  24. package/dist/{cache-manifest-CfiEny4T.mjs → cache-manifest-8JX9S1QJ.mjs} +1 -1
  25. package/dist/cache-manifest.mjs +1 -1
  26. package/dist/{ccache-DVDO2ocE.mjs → ccache-BXtzEL6M.mjs} +34 -24
  27. package/dist/{cdp-C3svvXiE.mjs → cdp-C216kOAn.mjs} +1 -1
  28. package/dist/{chrome-DyDWurWG.mjs → chrome-C8sC5tdl.mjs} +1 -1
  29. package/dist/{cli-C0jjwTuM.mjs → cli-B2YSjc9s.mjs} +20 -20
  30. package/dist/cli.mjs +1 -1
  31. package/dist/{client-DhJOvSvh.mjs → client-0_Mnfz0a.mjs} +29 -9
  32. package/dist/collector-run.mjs +7 -7
  33. package/dist/{command-output-VrXd6qPX.mjs → command-output-DWI9tGPU.mjs} +1 -1
  34. package/dist/{config-D5qNWJEP.mjs → config-BW0fAtoK.mjs} +256 -246
  35. package/dist/{dependencies-DIU-5rnG.mjs → dependencies-CgvBZbXD.mjs} +39 -39
  36. package/dist/{dependency-state-DZVln1P9.mjs → dependency-state-mL5g4H6K.mjs} +2 -2
  37. package/dist/{detached-entry-BPlSaCwC.mjs → detached-entry-tfrgGVWb.mjs} +1 -1
  38. package/dist/{dev-client-DeAg0fso.mjs → dev-client-ChsHwgrn.mjs} +2 -2
  39. package/dist/{device-C2WsPgFt.mjs → device-B0htCt2u.mjs} +13 -13
  40. package/dist/{device-DuNLOlR6.mjs → device-DOehZpyx.mjs} +11 -11
  41. package/dist/{device-android-BjhH0Ru3.mjs → device-android-B8TQP5AX.mjs} +10 -10
  42. package/dist/{device-capacity-Du5wBTNJ.mjs → device-capacity-BAkETfIl.mjs} +9 -9
  43. package/dist/device-host-worker.mjs +58 -17
  44. package/dist/{device-ios-CUYUhSYO.mjs → device-ios-DFaYFdar.mjs} +9 -9
  45. package/dist/{device-lease-run-CHXQEn-7.mjs → device-lease-run-DpiCnRbZ.mjs} +5 -5
  46. package/dist/{device-pool-kUHO7MHO.mjs → device-pool-DP4sCeCC.mjs} +3 -3
  47. package/dist/{device-provision-e7bKS7lx.mjs → device-provision-CnNOIxCF.mjs} +10 -10
  48. package/dist/{doctor-BGcsAgAV.mjs → doctor-9GrW5YSP.mjs} +30 -17
  49. package/dist/{doctor-B6kIVgU9.mjs → doctor-C6Xn96RS.mjs} +1 -1
  50. package/dist/{doctor-fingerprint-o7ZI9YLn.mjs → doctor-fingerprint-DqWvIhMb.mjs} +1 -1
  51. package/dist/doctor-fingerprint.mjs +1 -1
  52. package/dist/{doctor-hva3sd9f.mjs → doctor-nRLBoajo.mjs} +54 -25
  53. package/dist/{doctor-watchman-DJY550yz.mjs → doctor-watchman-CDhpC3Oh.mjs} +5 -5
  54. package/dist/{eas-build-CBFgseh1.mjs → eas-build-CpJ4h9tG.mjs} +4 -4
  55. package/dist/{eas-fallback-DFXdz4d6.mjs → eas-fallback-B3z5nL1g.mjs} +6 -6
  56. package/dist/{eas-session-ledger-aFBLTZr2.mjs → eas-session-ledger-Bspy-VJQ.mjs} +6 -6
  57. package/dist/{error-diagnostics-CCsq_3uG.mjs → error-diagnostics-DoLGklYX.mjs} +10 -10
  58. package/dist/{exec-aULwtNly.mjs → exec-CGuDzt40.mjs} +103 -103
  59. package/dist/{gc-DASUa3Z_.mjs → gc-BWoOp9q7.mjs} +2 -2
  60. package/dist/{gc-B0K4d_PL.mjs → gc-DolXpMSB.mjs} +25 -54
  61. package/dist/{guide-Civo5-zV.mjs → guide-CmZB0GtP.mjs} +194 -50
  62. package/dist/{hosted-android-CH1Sm4wo.mjs → hosted-android-ByG-ICuh.mjs} +4 -4
  63. package/dist/{hosted-client-5ur3YpxY.mjs → hosted-client-D19Lv0tg.mjs} +6 -5
  64. package/dist/{hosted-logs-BYg4yeti.mjs → hosted-logs-D7anR6Dk.mjs} +17 -11
  65. package/dist/{hosted-logs-sync-BPe8xnMu.mjs → hosted-logs-sync-D182b1eJ.mjs} +5 -5
  66. package/dist/{hosted-macos-BagT0Gn3.mjs → hosted-macos-D0DDQxvl.mjs} +6 -6
  67. package/dist/{hosted-native-kaR4nUHk.mjs → hosted-native-BzXIy97W.mjs} +15 -11
  68. package/dist/{idle-shutdown-BWHQ7mQG.mjs → idle-shutdown-6i8CHoNq.mjs} +6 -6
  69. package/dist/{ios-BKR-Dq46.mjs → ios-AdhPKXO3.mjs} +8 -8
  70. package/dist/{ios-CdAV4-1E.mjs → ios-BdZdNsAj.mjs} +6 -6
  71. package/dist/{ios-CsRVik64.mjs → ios-Qam0bT9n.mjs} +1 -1
  72. package/dist/{ios-DUL68MI5.mjs → ios-dbXzjTxx.mjs} +28 -28
  73. package/dist/{ios-device-CiBA-er9.mjs → ios-device-DLdEDWJj.mjs} +1 -1
  74. package/dist/{ios-device-Dz8gFZ0K.mjs → ios-device-DXbHZfFe.mjs} +3 -3
  75. package/dist/{ios-project-Br1tVYWX.mjs → ios-project-BzfLigfh.mjs} +7 -7
  76. package/dist/{ios-signing-BJzvDPfU.mjs → ios-signing-D-tSX1iF.mjs} +2 -2
  77. package/dist/{ios-state-BEIJRJ7P.mjs → ios-state-CWsBysyN.mjs} +1 -1
  78. package/dist/{js-swap-BfG8XpyS.mjs → js-swap-EDVOJmqx.mjs} +6 -6
  79. package/dist/{launch-CrGndh8T.mjs → launch-CKHpthsw.mjs} +20 -20
  80. package/dist/{lightened-DZ9Ip0T3.mjs → lightened-Cv4ToJRX.mjs} +5 -5
  81. package/dist/{logs-C-hfMsxK.mjs → logs-DCQ3_tGS.mjs} +6 -6
  82. package/dist/{logs-DpIKWT3A.mjs → logs-IagR9dWI.mjs} +7 -7
  83. package/dist/{macos-DZ9ZSolN.mjs → macos-Ch7vuM-G.mjs} +22 -22
  84. package/dist/{macos-DNmKwfDy.mjs → macos-pc0aVVbN.mjs} +1 -1
  85. package/dist/macos-run.mjs +1 -1
  86. package/dist/maintenance-run.mjs +6 -6
  87. package/dist/{metro-mKHEMO-a.mjs → metro-B5PVz0Wv.mjs} +4 -4
  88. package/dist/{metro-request-RDhyx85c.mjs → metro-request-2LmFpC1z.mjs} +9 -3
  89. package/dist/{named-ports-B0hCk2v-.mjs → named-ports-CA0nB9Yw.mjs} +3 -3
  90. package/dist/{native-android-DExhFqR6.mjs → native-android-B3CEDq4R.mjs} +29 -19
  91. package/dist/{native-gradle-artifact-inputs-Bcmbdc23.mjs → native-gradle-artifact-inputs-BLnO2hHR.mjs} +5 -5
  92. package/dist/{native-runtime-D4qgnjK_.mjs → native-runtime-e1OU8gEN.mjs} +6 -6
  93. package/dist/{native-source-D1AzWiuP.mjs → native-source-ChAGj7R1.mjs} +1 -1
  94. package/dist/{native-xcode-inputs-EWma1lXh.mjs → native-xcode-inputs-DL3ETb8s.mjs} +3 -3
  95. package/dist/{native-xcode-ios-Y6rzmWTc.mjs → native-xcode-ios-D4e8k2Jy.mjs} +17 -17
  96. package/dist/offload-worker.d.mts +3 -1
  97. package/dist/offload-worker.mjs +37 -23
  98. package/dist/{operation-exec-Dp4FuIGR.mjs → operation-exec-DKlBcKAL.mjs} +1 -1
  99. package/dist/{ownership-CCfiBfOP.mjs → ownership-hC7xvvxF.mjs} +3 -3
  100. package/dist/{page-CQJlcj3x.mjs → page-Dj8IqvGM.mjs} +2 -2
  101. package/dist/{phone-reverses-Drj5QQCh.mjs → phone-reverses-rvyxW1Fl.mjs} +4 -4
  102. package/dist/{placement-log-CFT8SnlS.mjs → placement-log-nnGnu8mo.mjs} +1 -1
  103. package/dist/{plan-placement-DhKCH_wF.mjs → plan-placement-D3JD-T-K.mjs} +6 -6
  104. package/dist/{ports-BNtJ5DCj.mjs → ports-CZJJfJ8Q.mjs} +3 -3
  105. package/dist/{prebuild-D0hvmO4j.mjs → prebuild-Bhs7TTcz.mjs} +12 -12
  106. package/dist/{project-DCLkDM8C.mjs → project-DWEXiBA9.mjs} +16 -16
  107. package/dist/{pull-request-BzLmzAIQ.mjs → pull-request-BpMTNkMB.mjs} +2 -2
  108. package/dist/pull-requests.mjs +1 -1
  109. package/dist/{react-native-android-Dp7vctEA.mjs → react-native-android-C6Y270GS.mjs} +37 -33
  110. package/dist/{react-native-build-vK2lFYfN.mjs → react-native-build-DaPfzf_e.mjs} +10 -10
  111. package/dist/{react-native-doctor-BtWzwZHU.mjs → react-native-doctor-DGMPxkPS.mjs} +6 -6
  112. package/dist/{react-native-ios-DW1Ax3Yv.mjs → react-native-ios-dX48_92n.mjs} +21 -17
  113. package/dist/{recordings-BWnIlhZH.mjs → recordings-AKZfsW2W.mjs} +1 -1
  114. package/dist/{registration-BwCe64PH.mjs → registration-DKjJGQ6p.mjs} +1 -1
  115. package/dist/{reload-BS_ntVV_.mjs → reload-BGwblBJ9.mjs} +1 -1
  116. package/dist/{reload-B-d7-CsI.mjs → reload-DsOByDfy.mjs} +17 -17
  117. package/dist/{remote-DScVlaMz.mjs → remote-D0uJZ76R.mjs} +9 -9
  118. package/dist/{result-Epkl6gyG.mjs → result-DuimMZKJ.mjs} +24 -20
  119. package/dist/{run-2CHAJ9Oj.mjs → run-N-BbRxnC.mjs} +2 -2
  120. package/dist/{selection-C95m--1_.mjs → selection-xS50Mt0V.mjs} +5 -4
  121. package/dist/{server-bare-CFyVFZXJ.mjs → server-bare-BTlICuaX.mjs} +2 -2
  122. package/dist/{server-command-B1gDRJB2.mjs → server-command-BC0EgMfY.mjs} +5 -5
  123. package/dist/{server-expo-CP4dURQp.mjs → server-expo-15RjL0ir.mjs} +3 -3
  124. package/dist/server-expo-gYIypb0-.mjs +2 -0
  125. package/dist/{settings-C6UTYW2K.mjs → settings-B5IBDfTx.mjs} +4 -4
  126. package/dist/{settings-CjTRNCi3.mjs → settings-CuP55ieT.mjs} +2 -2
  127. package/dist/{settings-payload-zf5EnCTg.mjs → settings-payload-BIGGQ3or.mjs} +5 -5
  128. package/dist/{settings-write-Fe0K6BeC.mjs → settings-write-D85j8mej.mjs} +6 -6
  129. package/dist/settings.schema.json +40 -2
  130. package/dist/{simslim-93xmPh-d.mjs → simslim-DKdJx0LL.mjs} +2 -2
  131. package/dist/{slot-launch-B4MHzVX2.mjs → slot-launch-D4oREwhx.mjs} +6 -6
  132. package/dist/{stage-DDrnM0CY.mjs → stage-DKC6tDXu.mjs} +2 -2
  133. package/dist/{start-LSwIFlBv.mjs → start-BsEV4S-s.mjs} +12 -12
  134. package/dist/{start-BXl5tkv8.mjs → start-DfPSLc__.mjs} +1 -1
  135. package/dist/{state-CM_HvvkS.mjs → state-CtmYTRWm.mjs} +4 -4
  136. package/dist/{state-CiflgxTP.mjs → state-DSOUqO-o.mjs} +2 -2
  137. package/dist/{stats-EgpYD536.mjs → stats-ByEUblPr.mjs} +5 -5
  138. package/dist/{stats-report-B86Cv7Uc.mjs → stats-report-BVRCqwWA.mjs} +1 -1
  139. package/dist/{status-BLDvhatv.mjs → status-C6hLlDqW.mjs} +37 -28
  140. package/dist/{status-GQ-JqvRi.mjs → status-DTFhDnd1.mjs} +1 -1
  141. package/dist/{status-DBMD7ZQT.mjs → status-FP1MH9qn.mjs} +1 -1
  142. package/dist/{status-watch-BwG4lJ1q.mjs → status-watch-D8s823CZ.mjs} +5 -5
  143. package/dist/status-worker.mjs +1 -1
  144. package/dist/{stim-desktop-1XxET4S8.mjs → stim-desktop-_WTria-r.mjs} +2 -2
  145. package/dist/{stop-4SAV_RR8.mjs → stop-5LKfVv-0.mjs} +2 -2
  146. package/dist/{stop-WyrZQuX6.mjs → stop-BVI2-L7s.mjs} +16 -16
  147. package/dist/{stop-BfNhzvXO.mjs → stop-CpTy6bod.mjs} +5 -5
  148. package/dist/supervisor-run.mjs +137 -45
  149. package/dist/{support-Cffz6_Ft.mjs → support-CqyWfZZI.mjs} +18 -8
  150. package/dist/{support-Cs24xRQa.mjs → support-D8OH0z98.mjs} +9 -9
  151. package/dist/{swiftpm-artifact-inputs-yp8D5LE4.mjs → swiftpm-artifact-inputs-uq5oV7xR.mjs} +4 -4
  152. package/dist/{swiftpm-macos-D0CzQtpp.mjs → swiftpm-macos-BuhqYB3n.mjs} +11 -11
  153. package/dist/{toolchain-BEra9AIX.mjs → toolchain-D_jotUG7.mjs} +1 -1
  154. package/dist/{toolchain-CGdgD4x4.mjs → toolchain-s5ZmG42Z.mjs} +25 -14
  155. package/dist/{trigger-CfnOfpDd.mjs → trigger-BtB4kbe0.mjs} +2 -2
  156. package/dist/trigger-D8B7QR0q.mjs +2 -0
  157. package/dist/{warm-progress-_aTMvkIH.mjs → warm-progress-q11Vdvhh.mjs} +6 -6
  158. package/dist/{web-BE89ONcc.mjs → web-DwYCTFdh.mjs} +9 -9
  159. package/dist/web-cCfM8kwV.mjs +2 -0
  160. package/dist/web-run.mjs +8 -8
  161. package/dist/windows-report.mjs +1 -1
  162. package/dist/{workspace-state-3bF4TB8P.mjs → workspace-state-BdZ-QgmB.mjs} +3 -3
  163. package/dist/{workspaces-BNEyJ1B_.mjs → workspaces-B3ahAHZc.mjs} +18 -17
  164. package/dist/{worktree-BTrii9e_.mjs → worktree-BhsML6GV.mjs} +77 -31
  165. package/dist/{worktree-DB3Ypdj6.mjs → worktree-CrjsPIs2.mjs} +1 -1
  166. package/package.json +7 -7
  167. package/dist/server-expo-D3k9mvP8.mjs +0 -2
  168. package/dist/trigger-DBZ-GBrl.mjs +0 -2
  169. package/dist/web-DQPxvFVD.mjs +0 -2
@@ -1,12 +1,12 @@
1
- import { D as ownership_claim_exports, _ as spawnDeclared, b as operationState, g as signalDeclaredSpawns, h as refuseDeclaredSpawns, m as declareSpawnsOn, p as allowDeclaredSpawns, t as getExecutor, u as withWorkspaceProcessLock, v as stopDeclaringSpawnsOn, y as isTermination } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, T as workspaceDerivedData, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, t as clearWorkspaceStateKey } from "./workspace-state-3bF4TB8P.mjs";
1
+ import { C as operationState, D as ownership_claim_exports, S as isTermination, _ as declareSpawnsOn, b as spawnDeclared, g as allowDeclaredSpawns, p as withWorkspaceProcessLock, t as getExecutor, v as refuseDeclaredSpawns, x as stopDeclaringSpawnsOn, y as signalDeclaredSpawns } from "./exec-CGuDzt40.mjs";
2
+ import { E as workspaceDir, T as workspaceDerivedData, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, t as clearWorkspaceStateKey } 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 { a as formatElapsed, l as phaseLine } from "./command-output-VrXd6qPX.mjs";
5
- import { a as killOnAbort } from "./operation-exec-Dp4FuIGR.mjs";
6
- import { o as androidHome } from "./android-DsEj2CCs.mjs";
4
+ import { a as formatElapsed, l as phaseLine } from "./command-output-DWI9tGPU.mjs";
5
+ import { a as killOnAbort } from "./operation-exec-DKlBcKAL.mjs";
6
+ import { o as androidHome } from "./android-Iq0M2t2d.mjs";
7
7
  import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
8
8
  import { p as resolveOptimizations } from "./errors-DHm_U5gv.mjs";
9
- import { t as cleanLine } from "./server-expo-CP4dURQp.mjs";
9
+ import { t as cleanLine } from "./server-expo-15RjL0ir.mjs";
10
10
  import { createRequire } from "node:module";
11
11
  import { createHash } from "node:crypto";
12
12
  import { existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, realpathSync, rmSync, statSync, writeFileSync } from "node:fs";
@@ -2195,10 +2195,16 @@ function jdkInstall(major, os) {
2195
2195
  }
2196
2196
  function androidMismatches(local, requires, worker) {
2197
2197
  const out = [];
2198
- if ((!local.jdk || worker.jdk !== local.jdk) && !(local.jdk && worker.jdks?.includes(local.jdk))) out.push({
2198
+ if (!local.jdk) {
2199
+ if (!worker.jdk) out.push({
2200
+ code: "jdk",
2201
+ reason: "no JDK there",
2202
+ ...jdkInstall("17", worker.os)
2203
+ });
2204
+ } else if (worker.jdk !== local.jdk && !worker.jdks?.includes(local.jdk)) out.push({
2199
2205
  code: "jdk",
2200
- reason: `JDK ${worker.jdk ?? "none"} there, ${local.jdk ?? "none"} here`,
2201
- ...local.jdk && worker.jdks ? jdkInstall(local.jdk, worker.os) : {}
2206
+ reason: `JDK ${worker.jdk ?? "none"} there, ${local.jdk} here`,
2207
+ ...worker.jdks ? jdkInstall(local.jdk, worker.os) : {}
2202
2208
  });
2203
2209
  const sdk = worker.androidSdk;
2204
2210
  if (!sdk) return [...out, {
@@ -2249,8 +2255,8 @@ function cocoapodsDifference(target, worker) {
2249
2255
  }
2250
2256
  /**
2251
2257
  * What a build on the worker does beyond the match: the SDK packages it lacks and Gradle downloads on the first build,
2252
- * because its SDK licenses are accepted and the project allows the download. None of them stops the build. For iOS, the
2253
- * CocoaPods difference a named machine is sent the build despite.
2258
+ * because its SDK licenses are accepted and the project allows the download, and the JDK it builds on for a client with
2259
+ * none. None of them stops the build. For iOS, the CocoaPods difference a named machine is sent the build despite.
2254
2260
  */
2255
2261
  function toolchainNotes(target, worker) {
2256
2262
  if (target.platform === "ios") {
@@ -2260,14 +2266,19 @@ function toolchainNotes(target, worker) {
2260
2266
  reason: `${pods.reason}; its pod install runs anyway and a failure is reported`
2261
2267
  }] : [];
2262
2268
  }
2263
- if (target.platform !== "android" || !worker.androidSdk || !gradleDownloads(target.requires, worker)) return [];
2269
+ if (target.platform !== "android") return [];
2270
+ const jdk = !target.local.jdk && worker.jdk ? [{
2271
+ code: "jdk",
2272
+ reason: `this machine has no JDK, so the build runs on JDK ${worker.jdk} there`
2273
+ }] : [];
2274
+ if (!worker.androidSdk || !gradleDownloads(target.requires, worker)) return jdk;
2264
2275
  const sdkManager = sdkManagerPath(worker);
2265
- return sdkGaps(target.requires, worker.androidSdk).map((gap) => ({
2276
+ return [...jdk, ...sdkGaps(target.requires, worker.androidSdk).map((gap) => ({
2266
2277
  code: gap.code,
2267
2278
  reason: `${gap.label} is not installed there; Gradle downloads it on the first build${gap.size ? ` (${gap.size})` : ""}`,
2268
2279
  commands: [`${sdkManager} "${gap.id}"`],
2269
2280
  lead: "install the package now so the first build does not download it"
2270
- }));
2281
+ }))];
2271
2282
  }
2272
2283
  function versionMismatch(tool, there, here) {
2273
2284
  const side = (version) => version ? version.startsWith(tool) ? version : `${tool} ${version}` : `no ${tool}`;
@@ -1,7 +1,7 @@
1
- import { t as getExecutor } from "./exec-aULwtNly.mjs";
1
+ import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
2
  import { t as resolveMaintenanceSettings } from "./settings-D9LtQaUw.mjs";
3
3
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
4
- import { n as windowsLauncherArgs } from "./detached-entry-BPlSaCwC.mjs";
4
+ import { n as windowsLauncherArgs } from "./detached-entry-tfrgGVWb.mjs";
5
5
  import { n as stampAttempt, r as due, t as capChildLog } from "./attempt-ClyJlZPT.mjs";
6
6
  import { readClaimSet } from "@stim-cli/core/ownership-claim";
7
7
  import { closeSync, openSync } from "node:fs";
@@ -0,0 +1,2 @@
1
+ import { t as triggerMaintenance } from "./trigger-BtB4kbe0.mjs";
2
+ export { triggerMaintenance };
@@ -1,9 +1,9 @@
1
- import { D as ownership_claim_exports, E as debugLog, l as WorkspaceProcessCleanupError, n as isTimeoutError, t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, M as withDirLock, _ as ensureWorkspaceStorage, h as discoverAgentSessions, m as attributeAgentSessions, o as updateWorkspaceState, p as agentKey } from "./workspace-state-3bF4TB8P.mjs";
3
- import { l as gitQuietAsync, o as git$1, s as gitAsync } from "./operation-exec-Dp4FuIGR.mjs";
4
- import { Ct as gitCommonDirOnDisk, Ot as linkedWorktreesOnDisk } from "./settings-C6UTYW2K.mjs";
5
- import { U as ownedAvdDirectory } from "./android-DsEj2CCs.mjs";
6
- import { s as pullRequestLookups } from "./pull-request-BzLmzAIQ.mjs";
1
+ import { D as ownership_claim_exports, E as debugLog, f as WorkspaceProcessCleanupError, n as isTimeoutError, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
+ import { E as workspaceDir, M as withDirLock, _ as ensureWorkspaceStorage, h as discoverAgentSessions, m as attributeAgentSessions, o as updateWorkspaceState, p as agentKey } from "./workspace-state-BdZ-QgmB.mjs";
3
+ import { l as gitQuietAsync, o as git$1, s as gitAsync } from "./operation-exec-DKlBcKAL.mjs";
4
+ import { Ct as gitCommonDirOnDisk, Ot as linkedWorktreesOnDisk } from "./settings-B5IBDfTx.mjs";
5
+ import { U as ownedAvdDirectory } from "./android-Iq0M2t2d.mjs";
6
+ import { s as pullRequestLookups } from "./pull-request-BpMTNkMB.mjs";
7
7
  import { clearClaimChild, markClaimChildPending, releaseClaim, setClaimChild, tryAcquireClaim } from "@stim-cli/core/ownership-claim";
8
8
  import { randomUUID } from "node:crypto";
9
9
  import { existsSync, mkdirSync, readdirSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
@@ -1,12 +1,12 @@
1
- import { i as recordWorkspaceUse, k as workspaceLogsDir } from "./workspace-state-3bF4TB8P.mjs";
2
- import { D as upsertProject, k as withConfigLockAsync, m as getProject } from "./config-D5qNWJEP.mjs";
3
- import { f as refuseNoProject, l as phaseLine } from "./command-output-VrXd6qPX.mjs";
4
- import { Z as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, rt as settingShapeErrors } from "./settings-C6UTYW2K.mjs";
5
- import { f as projectRegistry, n as findCommandWorkspace } from "./project-DCLkDM8C.mjs";
6
- import { a as workspaceLinkLine, o as workspaceLinks } from "./stim-desktop-1XxET4S8.mjs";
7
- import { o as readWebRecord, r as cdpEndpoint } from "./state-CM_HvvkS.mjs";
8
- import { t as liveWebRecord } from "./page-CQJlcj3x.mjs";
9
- import { n as ensureWorkspaceStorageSafely } from "./native-runtime-D4qgnjK_.mjs";
1
+ import { i as recordWorkspaceUse, k as workspaceLogsDir } from "./workspace-state-BdZ-QgmB.mjs";
2
+ import { f as refuseNoProject, l as phaseLine } from "./command-output-DWI9tGPU.mjs";
3
+ import { D as upsertProject, k as withConfigLockAsync, m as getProject } from "./config-BW0fAtoK.mjs";
4
+ import { Z as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, rt as settingShapeErrors } from "./settings-B5IBDfTx.mjs";
5
+ import { f as projectRegistry, n as findCommandWorkspace } from "./project-DWEXiBA9.mjs";
6
+ import { a as workspaceLinkLine, o as workspaceLinks } from "./stim-desktop-_WTria-r.mjs";
7
+ import { o as readWebRecord, r as cdpEndpoint } from "./state-CtmYTRWm.mjs";
8
+ import { t as liveWebRecord } from "./page-Dj8IqvGM.mjs";
9
+ import { n as ensureWorkspaceStorageSafely } from "./native-runtime-e1OU8gEN.mjs";
10
10
  import chalk from "chalk";
11
11
  //#region src/commands/web.ts
12
12
  const printNote = (line) => console.error(line);
@@ -0,0 +1,2 @@
1
+ import { n as webCommand, t as runWeb } from "./web-DwYCTFdh.mjs";
2
+ export { webCommand as default, runWeb };
package/dist/web-run.mjs CHANGED
@@ -1,12 +1,12 @@
1
- import { D as ownership_claim_exports, S as process_identity_exports, o as cancellableSleep, t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { Dt as recordCreatedDevice } from "./android-DsEj2CCs.mjs";
3
- import { f as signalProcessTree } from "./metro-mKHEMO-a.mjs";
1
+ import { D as ownership_claim_exports, T as process_identity_exports, l as cancellableSleep, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
+ import { Dt as recordCreatedDevice } from "./android-Iq0M2t2d.mjs";
3
+ import { f as signalProcessTree } from "./metro-B5PVz0Wv.mjs";
4
4
  import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
5
- import { c as webClaimRoot, f as webLogFile, g as chromeProcessState, h as writeWebRecord, i as clearWebRecord, l as webDir, n as browserLogFile, p as webProfileDir, s as updateWebRecord, v as liveProfileHolder, y as removeSingletonFiles } from "./state-CM_HvvkS.mjs";
6
- import { l as probeWebDrivers } from "./activity-Dw4N_RFe.mjs";
7
- import { t as connectOwnedBrowser } from "./cdp-C3svvXiE.mjs";
8
- import { t as relaunchWithLogFile } from "./detached-entry-BPlSaCwC.mjs";
9
- import { i as chromeArgs, n as DESKTOP_PAGE, r as PHONE_SCREEN } from "./chrome-DyDWurWG.mjs";
5
+ import { c as webClaimRoot, f as webLogFile, g as chromeProcessState, h as writeWebRecord, i as clearWebRecord, l as webDir, n as browserLogFile, p as webProfileDir, s as updateWebRecord, v as liveProfileHolder, y as removeSingletonFiles } from "./state-CtmYTRWm.mjs";
6
+ import { l as probeWebDrivers } from "./activity-C8kBq9w0.mjs";
7
+ import { t as connectOwnedBrowser } from "./cdp-C216kOAn.mjs";
8
+ import { t as relaunchWithLogFile } from "./detached-entry-tfrgGVWb.mjs";
9
+ import { i as chromeArgs, n as DESKTOP_PAGE, r as PHONE_SCREEN } from "./chrome-C8sC5tdl.mjs";
10
10
  import { existsSync, mkdirSync, openSync, realpathSync } from "node:fs";
11
11
  import { isAbsolute, resolve } from "node:path";
12
12
  import { LOG_ROTATE_BYTES } from "@stim-cli/core";
@@ -1,4 +1,4 @@
1
- import { t as getExecutor } from "./exec-aULwtNly.mjs";
1
+ import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
2
  import { writeFileSync } from "node:fs";
3
3
  //#region bin/windows-report.ts
4
4
  const request = JSON.parse(process.env.STIM_REPORT_CHILD ?? "");
@@ -1,6 +1,6 @@
1
- import { S as process_identity_exports, t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { A as writeConfigSetting, h as getProjectSettings, j as writeConfigSettingAsync } from "./config-D5qNWJEP.mjs";
3
- import { lt as workspaceHiddenSetting } from "./settings-C6UTYW2K.mjs";
1
+ import { T as process_identity_exports, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
+ import { A as writeConfigSetting, h as getProjectSettings, j as writeConfigSettingAsync } from "./config-BW0fAtoK.mjs";
3
+ import { lt as workspaceHiddenSetting } from "./settings-B5IBDfTx.mjs";
4
4
  import { existsSync, mkdirSync, readFileSync, realpathSync, renameSync, rmSync, writeFileSync } from "node:fs";
5
5
  import { homedir } from "node:os";
6
6
  import { dirname, isAbsolute, join, relative } from "node:path";
@@ -1,18 +1,18 @@
1
- import { D as ownership_claim_exports, S as process_identity_exports, b as operationState, c as throwIfCancelled, d as workspaceProcessLockError, f as workspaceProcessLockPath, l as WorkspaceProcessCleanupError, m as declareSpawnsOn, o as cancellableSleep, t as getExecutor, u as withWorkspaceProcessLock, v as stopDeclaringSpawnsOn } from "./exec-aULwtNly.mjs";
2
- import { A as workspaceName$1, E as workspaceDir, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, t as clearWorkspaceStateKey, u as workspaceLastUsed, w as workspaceAgentDeviceDir } from "./workspace-state-3bF4TB8P.mjs";
3
- import { F as formatBytes, I as isOnMountedVolume, K as projectDeviceSlots, L as listMountedVolumes, M as acquireAvdClaim, O as withConfigLock$1, R as measuredDirectorySizeAsync, U as deviceSlotPlatforms, _ as isPathPrefix$1, d as getConfigDir, k as withConfigLockAsync$1, m as getProject, v as loadConfig$1 } from "./config-D5qNWJEP.mjs";
1
+ import { C as operationState, D as ownership_claim_exports, T as process_identity_exports, _ as declareSpawnsOn, d as throwIfCancelled, f as WorkspaceProcessCleanupError, h as workspaceProcessLockPath, l as cancellableSleep, m as workspaceProcessLockError, p as withWorkspaceProcessLock, t as getExecutor, x as stopDeclaringSpawnsOn } from "./exec-CGuDzt40.mjs";
2
+ import { A as workspaceName$1, E as workspaceDir, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, t as clearWorkspaceStateKey, u as workspaceLastUsed, w as workspaceAgentDeviceDir } from "./workspace-state-BdZ-QgmB.mjs";
4
3
  import { t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
5
- import { a as formatElapsed, d as quotedPath$1, l as phaseLine, o as formatLongDuration, u as plural } from "./command-output-VrXd6qPX.mjs";
6
- import { c as gitQuiet, l as gitQuietAsync, t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
7
- import { Pt as lockReason, Vt as repoRootAsync, Xt as worktreeLockAsync, Yt as worktreeLock, pt as resolveTailscaleBinary } from "./settings-C6UTYW2K.mjs";
8
- import { a as macosRuntimeClaim, n as macosDir } from "./state-CiflgxTP.mjs";
9
- import { B as listOrphanedAvdDirectories, C as deleteAvd, Dt as recordCreatedDevice, Et as readCreatedDevices$1, J as ownedAvdSystemImage, K as ownedAvdSerialResolver, M as isEmulatorToolAbsent, P as listAdbDevicesAsync, St as removeParkedAfter, Tt as forgetCreatedDeviceAsync, U as ownedAvdDirectory, W as ownedAvdMatchesConfiguration, _t as eraseParkedAfter, dt as wipeAvdUserData, ft as isStimOwnedAvd, g as avdPathExists, it as resolveOwnedAvdSerialAsync, lt as waitForAndroidEmulatorShutdown, ot as shutdownAndroidEmulator, p as assertOwnedAvdStoppedAsync, q as ownedAvdSerialResolverAsync, v as avdStorageExists, wt as forgetCreatedDevice, xt as readParked, y as avdStorageRoots, yt as parkSim } from "./android-DsEj2CCs.mjs";
10
- import { c as pidExists, f as signalProcessTree, p as signalProcessTreeAsync } from "./metro-mKHEMO-a.mjs";
11
- import { _ as chromeProcessStateAsync, c as webClaimRoot, i as clearWebRecord, o as readWebRecord, p as webProfileDir, t as CDP_PORT_LABEL, u as webFacts, v as liveProfileHolder, y as removeSingletonFiles } from "./state-CM_HvvkS.mjs";
4
+ import { a as formatElapsed, d as quotedPath$1, l as phaseLine, o as formatLongDuration, u as plural } from "./command-output-DWI9tGPU.mjs";
5
+ import { M as acquireAvdClaim, O as withConfigLock$1, _ as isPathPrefix$1, at as isOnMountedVolume, d as getConfigDir, ft as deviceSlotPlatforms, ht as projectDeviceSlots, k as withConfigLockAsync$1, m as getProject, ot as listMountedVolumes, rt as formatBytes, st as measuredDirectorySizeAsync, v as loadConfig$1 } from "./config-BW0fAtoK.mjs";
6
+ import { c as gitQuiet, l as gitQuietAsync, t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
7
+ import { Pt as lockReason, Vt as repoRootAsync, Xt as worktreeLockAsync, Yt as worktreeLock, pt as resolveTailscaleBinary } from "./settings-B5IBDfTx.mjs";
8
+ import { a as macosRuntimeClaim, n as macosDir } from "./state-DSOUqO-o.mjs";
9
+ import { B as listOrphanedAvdDirectories, C as deleteAvd, Dt as recordCreatedDevice, Et as readCreatedDevices$1, J as ownedAvdSystemImage, K as ownedAvdSerialResolver, M as isEmulatorToolAbsent, P as listAdbDevicesAsync, St as removeParkedAfter, Tt as forgetCreatedDeviceAsync, U as ownedAvdDirectory, W as ownedAvdMatchesConfiguration, _t as eraseParkedAfter, dt as wipeAvdUserData, ft as isStimOwnedAvd, g as avdPathExists, it as resolveOwnedAvdSerialAsync, lt as waitForAndroidEmulatorShutdown, ot as shutdownAndroidEmulator, p as assertOwnedAvdStoppedAsync, q as ownedAvdSerialResolverAsync, v as avdStorageExists, wt as forgetCreatedDevice, xt as readParked, y as avdStorageRoots, yt as parkSim } from "./android-Iq0M2t2d.mjs";
10
+ import { c as pidExists, f as signalProcessTree, p as signalProcessTreeAsync } from "./metro-B5PVz0Wv.mjs";
11
+ import { _ as chromeProcessStateAsync, c as webClaimRoot, i as clearWebRecord, o as readWebRecord, p as webProfileDir, t as CDP_PORT_LABEL, u as webFacts, v as liveProfileHolder, y as removeSingletonFiles } from "./state-CtmYTRWm.mjs";
12
12
  import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
13
- import { N as listBuildLocks, d as readAgentDeviceRecords, i as createActivityReaderAsync, r as createActivityReader, s as idleForMs, t as agentDeviceDaemon } from "./activity-Dw4N_RFe.mjs";
14
- import { C as renameIosSim, D as resolveOwnedIosSim, c as eraseIosSim, f as listAllIosSimsAsync, k as shutdownIosSim, o as deleteIosSim, p as listIosDeviceTypesAsync, s as deleteParkedIosSim, v as parkedSimName, y as parseRuntimeVersion } from "./ios-CdAV4-1E.mjs";
15
- import { r as releaseBrowserPort } from "./named-ports-B0hCk2v-.mjs";
13
+ import { N as listBuildLocks, d as readAgentDeviceRecords, i as createActivityReaderAsync, r as createActivityReader, s as idleForMs, t as agentDeviceDaemon } from "./activity-C8kBq9w0.mjs";
14
+ import { C as renameIosSim, D as resolveOwnedIosSim, c as eraseIosSim, f as listAllIosSimsAsync, k as shutdownIosSim, o as deleteIosSim, p as listIosDeviceTypesAsync, s as deleteParkedIosSim, v as parkedSimName, y as parseRuntimeVersion } from "./ios-BdZdNsAj.mjs";
15
+ import { r as releaseBrowserPort } from "./named-ports-CA0nB9Yw.mjs";
16
16
  import { createHash, randomUUID } from "node:crypto";
17
17
  import { closeSync, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, rmdirSync, statSync, unlinkSync, watch, writeFileSync } from "node:fs";
18
18
  import { isDeepStrictEqual } from "node:util";
@@ -21,9 +21,9 @@ import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "nod
21
21
  import { ambientContext, ambientEnv, ambientWrite, withDirLock, workspaceName } from "@stim-cli/core";
22
22
  import { BUILD_HISTORY_KEY, BUILD_HISTORY_LIMIT, BUILD_LEDGER_CAP, BUILD_PHASES, LAST_BUILD_KEYS, STATS_VERSION, buildLedgerFile, buildLedgerLock, buildSlotsDir, decodeStats, hostedAppAttempt, hostedNativeRecords, isJsonObject, lastNativeUseFrom, loadPerCore, macosAppState, parseHostedNativePlacement, parseMissReason, readJsonFile, readMacosRecord, readRunEstimates, readStats as readStats$1, requireAutomaticMachine, statsFile, statsProjectKey as statsProjectKey$1, trace, trimCapacityRefusals, trimCapacityWaits, trimSamples, tryAcquireBuildSlotClaim, unreadableHostedNative, wholePhases, workspaceBuildDetailFile } from "@stim-cli/core/state";
23
23
  import { basename as basename$1, dirname as dirname$1, isAbsolute as isAbsolute$1, join as join$1, relative as relative$1 } from "path";
24
- import { request } from "node:https";
25
24
  import chalk from "chalk";
26
25
  import { existsSync as existsSync$1, lstatSync as lstatSync$1, readdirSync as readdirSync$1, statSync as statSync$1 } from "fs";
26
+ import { request } from "node:https";
27
27
  import { lstat, readFile, readdir, rm, stat, unlink } from "node:fs/promises";
28
28
  import { resolve4 } from "node:dns/promises";
29
29
  //#region src/commands/gc/limited.ts
@@ -3530,7 +3530,7 @@ function numberOrNull(v) {
3530
3530
  //#region src/workspace/in-use.ts
3531
3531
  const NATIVE_RUN = "native-run";
3532
3532
  const NATIVE_RUN_HELD = "a stim ios, android or stop run holds its native-run.lock";
3533
- function workspaceInUse(root, { supervisor = true, devServer = true, managedLocks = true, hosted = true, nativeRun = true } = {}, bundleInstances = bundleInstancePids) {
3533
+ function workspaceInUse(root, { supervisor = true, devServer = true, managedLocks = true, hosted = true, hostedMacos = true, nativeRun = true } = {}, bundleInstances = bundleInstancePids) {
3534
3534
  const reasons = [];
3535
3535
  if (supervisor && devServer) {
3536
3536
  const project = getProject(root);
@@ -3547,8 +3547,9 @@ function workspaceInUse(root, { supervisor = true, devServer = true, managedLock
3547
3547
  }
3548
3548
  if (supervisor) {
3549
3549
  const macos = macosAppState(readMacosRecord(root));
3550
- if (macos?.host) reasons.push(`its macOS app runs on ${macos.host.machine}`);
3551
- else if (macos?.state === "running" || macos?.state === "orphaned" || macos?.build.state === "running") reasons.push("its macOS app or build is running");
3550
+ if (macos?.host) {
3551
+ if (hostedMacos) reasons.push(`its macOS app runs on ${macos.host.machine}`);
3552
+ } else if (macos?.state === "running" || macos?.state === "orphaned" || macos?.build.state === "running") reasons.push("its macOS app or build is running");
3552
3553
  else if (macos?.state === "unverified" || !macos && readWorkspaceState$1(root)?.macos !== void 0) reasons.push("its macOS process owner cannot be verified");
3553
3554
  else try {
3554
3555
  const pids = bundleInstances(root);
@@ -1,43 +1,43 @@
1
- import { D as ownership_claim_exports, S as process_identity_exports, b as operationState, l as WorkspaceProcessCleanupError, m as declareSpawnsOn, n as isTimeoutError, t as getExecutor, v as stopDeclaringSpawnsOn } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, a as recordWorkspaceUseAsync, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1, w as workspaceAgentDeviceDir } from "./workspace-state-3bF4TB8P.mjs";
3
- import { C as removeProject, D as upsertProject, K as projectDeviceSlots, M as acquireAvdClaim, R as measuredDirectorySizeAsync, _ as isPathPrefix$1, a as clearDevice, d as getConfigDir, k as withConfigLockAsync$1, m as getProject, v as loadConfig$1 } from "./config-D5qNWJEP.mjs";
4
- import { a as formatElapsed, h as shortUdid, i as formatDuration, l as phaseLine, p as releasedLeaseFact, u as plural } from "./command-output-VrXd6qPX.mjs";
5
- import { c as gitQuiet, l as gitQuietAsync, o as git, r as childEnvironment, s as gitAsync, t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
6
- import { Ct as gitCommonDirOnDisk, Dt as isPodInstallChurn, Et as hasUncommittedWorkAsync, Ft as matchWorktreeEntry, Gt as restoreFileAsync, Ht as resolveFullRef, It as nativeCanonicalPath, Jt as warmWorktreePaths, Kt as sourceCheckoutOf, Lt as podsOutOfSync, Mt as locallyKnownUpstream, Q as resolveSettings, Rt as readWorktreeExclude, St as gitCommonDirAsync, Tt as hasRemoteAsync, Ut as resolveFullRefAsync, V as readCommittedSettings, X as resolveProjectSettings, Y as resolveIosProjectDir, _ as inertSettingWarning, _t as deleteBranchAsync, a as SETTING_SHAPE_REMEDY, bt as dirtyPathsAsync, gt as cloneIgnoredEntries, ht as branchExistsAsync, jt as listWorktreesAsync, nn as moveIgnoredTreesToTrash, qt as unpushedCommitsAsync, rn as restoreTrashedTrees, rt as settingShapeErrors, st as unknownSettingKeys, tn as disposeTrash, vt as depsOutOfSync, wt as hasPopulatedSubmodulesAsync, zt as removeWorktreeAsync } from "./settings-C6UTYW2K.mjs";
7
- import { F as readRemoteSessionId, M as readMetroTunnel, O as clearManagedMetroTunnel, P as readRemoteSession, T as MODE_COMMAND, i as findProjectRoot$1, k as clearRemoteSession, o as isMobileProject } from "./project-DCLkDM8C.mjs";
8
- import { t as macosAppPresent } from "./state-CiflgxTP.mjs";
9
- import { a as workspaceLinkLine, o as workspaceLinks } from "./stim-desktop-1XxET4S8.mjs";
10
- import { bt as parkedMaxSetting, mt as POOL_SETTING_REMEDY } from "./android-DsEj2CCs.mjs";
11
- import { c as pidExists, d as resolveProjectMetro, p as signalProcessTreeAsync, r as killMetroTreeAsync } from "./metro-mKHEMO-a.mjs";
12
- import { A as diskPressureLevel, D as requestDevServerStop, En as runProcessOperation, G as planCacheEmptying, Ln as resolveEasCliBin, N as lowestFree, Ot as endRecordedSession, _ as resolveBudget, g as readVolumeSpaceAsync, h as readVolumeSpace, k as withdrawDevServerStopRequest, p as machineNumber, ur as discoverCaches } from "./ccache-DVDO2ocE.mjs";
13
- import { o as readWebRecord } from "./state-CM_HvvkS.mjs";
14
- import { C as stopTunnel, E as withManagedRemoteWorktreeRemovalLock, O as withManagedTunnelRemovalLock, _ as emptyWorkspaceDir, ht as teardownOwnedIosSim, mt as teardownOwnedBrowser, o as collectWorkspaceOutputs, pt as teardownOwnedAvd, v as withIdleWorkspace, x as resolveSupervisorTarget } from "./workspaces-BNEyJ1B_.mjs";
1
+ import { C as operationState, D as ownership_claim_exports, T as process_identity_exports, _ as declareSpawnsOn, f as WorkspaceProcessCleanupError, n as isTimeoutError, t as getExecutor, x as stopDeclaringSpawnsOn } from "./exec-CGuDzt40.mjs";
2
+ import { E as workspaceDir, a as recordWorkspaceUseAsync, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1, w as workspaceAgentDeviceDir } from "./workspace-state-BdZ-QgmB.mjs";
3
+ import { a as formatElapsed, h as shortUdid, i as formatDuration, l as phaseLine, p as releasedLeaseFact, u as plural } from "./command-output-DWI9tGPU.mjs";
4
+ import { C as removeProject, D as upsertProject, M as acquireAvdClaim, _ as isPathPrefix$1, a as clearDevice, at as isOnMountedVolume, ct as volumeRootFor, d as getConfigDir, ht as projectDeviceSlots, it as isAbsentPath, k as withConfigLockAsync$1, m as getProject, ot as listMountedVolumes, st as measuredDirectorySizeAsync, v as loadConfig$1 } from "./config-BW0fAtoK.mjs";
5
+ import { c as gitQuiet, l as gitQuietAsync, o as git, r as childEnvironment, s as gitAsync, t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
6
+ import { Ct as gitCommonDirOnDisk, Dt as isPodInstallChurn, Et as hasUncommittedWorkAsync, Ft as matchWorktreeEntry, Gt as restoreFileAsync, Ht as resolveFullRef, It as nativeCanonicalPath, Jt as warmWorktreePaths, Kt as sourceCheckoutOf, Lt as podsOutOfSync, Mt as locallyKnownUpstream, Q as resolveSettings, Rt as readWorktreeExclude, St as gitCommonDirAsync, Tt as hasRemoteAsync, Ut as resolveFullRefAsync, V as readCommittedSettings, X as resolveProjectSettings, Y as resolveIosProjectDir, _ as inertSettingWarning, _t as deleteBranchAsync, a as SETTING_SHAPE_REMEDY, bt as dirtyPathsAsync, gt as cloneIgnoredEntries, ht as branchExistsAsync, jt as listWorktreesAsync, nn as moveIgnoredTreesToTrash, qt as unpushedCommitsAsync, rn as restoreTrashedTrees, rt as settingShapeErrors, st as unknownSettingKeys, tn as disposeTrash, vt as depsOutOfSync, wt as hasPopulatedSubmodulesAsync, zt as removeWorktreeAsync } from "./settings-B5IBDfTx.mjs";
7
+ import { F as readRemoteSessionId, M as readMetroTunnel, O as clearManagedMetroTunnel, P as readRemoteSession, T as MODE_COMMAND, i as findProjectRoot$1, k as clearRemoteSession, o as isMobileProject } from "./project-DWEXiBA9.mjs";
8
+ import { t as macosAppPresent } from "./state-DSOUqO-o.mjs";
9
+ import { a as workspaceLinkLine, o as workspaceLinks } from "./stim-desktop-_WTria-r.mjs";
10
+ import { bt as parkedMaxSetting, mt as POOL_SETTING_REMEDY } from "./android-Iq0M2t2d.mjs";
11
+ import { c as pidExists, d as resolveProjectMetro, p as signalProcessTreeAsync, r as killMetroTreeAsync } from "./metro-B5PVz0Wv.mjs";
12
+ import { A as diskPressureLevel, D as requestDevServerStop, En as runProcessOperation, G as planCacheEmptying, Ln as resolveEasCliBin, N as lowestFree, Ot as endRecordedSession, _ as resolveBudget, g as readVolumeSpaceAsync, h as readVolumeSpace, k as withdrawDevServerStopRequest, p as machineNumber, ur as discoverCaches } from "./ccache-BXtzEL6M.mjs";
13
+ import { o as readWebRecord } from "./state-CtmYTRWm.mjs";
14
+ import { C as stopTunnel, E as withManagedRemoteWorktreeRemovalLock, O as withManagedTunnelRemovalLock, _ as emptyWorkspaceDir, ht as teardownOwnedIosSim, mt as teardownOwnedBrowser, o as collectWorkspaceOutputs, pt as teardownOwnedAvd, v as withIdleWorkspace, x as resolveSupervisorTarget } from "./workspaces-B3ahAHZc.mjs";
15
15
  import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
16
- import { C as DEPS_ERROR, E as readPodState, M as HEARTBEAT_INTERVAL_MS, O as runCaptured, T as podsAreStale, X as podInstallCommand, k as runPodInstall, lt as cacheUser } from "./toolchain-CGdgD4x4.mjs";
17
- import { D as releaseWorkspaceLeases, t as agentDeviceDaemon } from "./activity-Dw4N_RFe.mjs";
18
- import { R as readHostMemoryPressure, z as readHostMemoryPressureAsync } from "./ios-CdAV4-1E.mjs";
19
- import { t as clearNamedPorts } from "./named-ports-B0hCk2v-.mjs";
16
+ import { C as DEPS_ERROR, E as readPodState, M as HEARTBEAT_INTERVAL_MS, O as runCaptured, T as podsAreStale, X as podInstallCommand, k as runPodInstall, lt as cacheUser } from "./toolchain-s5ZmG42Z.mjs";
17
+ import { D as releaseWorkspaceLeases, t as agentDeviceDaemon } from "./activity-C8kBq9w0.mjs";
18
+ import { R as readHostMemoryPressure, z as readHostMemoryPressureAsync } from "./ios-BdZdNsAj.mjs";
19
+ import { t as clearNamedPorts } from "./named-ports-CA0nB9Yw.mjs";
20
20
  import { t as resolveMaintenanceSettings } from "./settings-D9LtQaUw.mjs";
21
- import { i as stopHostedAndroid } from "./hosted-android-CH1Sm4wo.mjs";
22
- import { a as stopHostedIos, n as removePhoneReverses } from "./phone-reverses-Drj5QQCh.mjs";
23
- import { r as stopMacosApp } from "./stop-BfNhzvXO.mjs";
24
- import { n as verifyCollectorOwnership } from "./ownership-CCfiBfOP.mjs";
25
- import { o as pullRequestLookupAsync, r as endedPullRequest } from "./pull-request-BzLmzAIQ.mjs";
26
- import { c as mergeStateAsync, d as forgetStatusMeasures, t as startWarmProgress } from "./warm-progress-_aTMvkIH.mjs";
27
- import { r as workspaceRecordingEnabled } from "./recordings-BWnIlhZH.mjs";
28
- import { i as installedNpmTreeProblems, n as hasInstalledDependencies, t as dependencyState } from "./dependency-state-DZVln1P9.mjs";
29
- import { a as discoverXcodeProject } from "./react-native-build-vK2lFYfN.mjs";
21
+ import { i as stopHostedAndroid } from "./hosted-android-ByG-ICuh.mjs";
22
+ import { a as stopHostedIos, n as removePhoneReverses } from "./phone-reverses-rvyxW1Fl.mjs";
23
+ import { r as stopMacosApp } from "./stop-CpTy6bod.mjs";
24
+ import { n as verifyCollectorOwnership } from "./ownership-hC7xvvxF.mjs";
25
+ import { o as pullRequestLookupAsync, r as endedPullRequest } from "./pull-request-BpMTNkMB.mjs";
26
+ import { c as mergeStateAsync, d as forgetStatusMeasures, t as startWarmProgress } from "./warm-progress-q11Vdvhh.mjs";
27
+ import { r as workspaceRecordingEnabled } from "./recordings-AKZfsW2W.mjs";
28
+ import { i as installedNpmTreeProblems, n as hasInstalledDependencies, t as dependencyState } from "./dependency-state-mL5g4H6K.mjs";
29
+ import { a as discoverXcodeProject } from "./react-native-build-DaPfzf_e.mjs";
30
30
  import { claimRemoveCommand, clearFreeClaimSet, readClaimSet, releaseClaim, tryAcquireClaim } from "@stim-cli/core/ownership-claim";
31
31
  import { createHash, randomUUID } from "node:crypto";
32
32
  import { existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, writeFileSync } from "node:fs";
33
33
  import { cpus, freemem, homedir, loadavg, totalmem } from "node:os";
34
- import { basename, dirname, join, relative } from "node:path";
34
+ import { basename, dirname, isAbsolute, join, relative } from "node:path";
35
35
  import { buildCacheRoot, configDir, metroCacheRoot, quotedPath, unitLines, unitWords, withDirLockTransaction, workspaceName } from "@stim-cli/core";
36
36
  import { LAST_BUILD_KEYS, archiveDir, archiveEnabled, archiveLock, archiveRoot, archivedUsage, buildWorkerRoot, countErrorEntries, endedAgentSessionOf, isJsonObject, isPathPrefix, listRecordedDevicesAsync, loadConfig, queryLogs, readArchivesAsync, readBuildHistory, readJsonObject, readLastBuilds, readMacosRecord, readPullRequestCache, readWorkspaceState, recordingEnabled, sharedCcache, sharedCompilationCache, sortByTs, trace, worktreeArchiveRoot } from "@stim-cli/core/state";
37
37
  import { basename as basename$1, dirname as dirname$1, isAbsolute as isAbsolute$1, join as join$1, relative as relative$1, resolve as resolve$1 } from "path";
38
- import { setTimeout as setTimeout$1 } from "node:timers/promises";
39
38
  import chalk from "chalk";
40
39
  import { existsSync as existsSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, readlinkSync as readlinkSync$1, realpathSync as realpathSync$1, renameSync as renameSync$1, rmSync as rmSync$1, symlinkSync as symlinkSync$1, unlinkSync as unlinkSync$1, writeFileSync as writeFileSync$1 } from "fs";
40
+ import { setTimeout as setTimeout$1 } from "node:timers/promises";
41
41
  import { chmod, lstat, mkdir, readdir, rename, rm, rmdir, stat, utimes, writeFile } from "node:fs/promises";
42
42
  import { createHash as createHash$1 } from "crypto";
43
43
  //#region src/workspace/pods-relocate.ts
@@ -1379,6 +1379,37 @@ async function reclaimIdleProject(path, workspaceExisted, { archive, deleteOwned
1379
1379
  };
1380
1380
  }
1381
1381
  //#endregion
1382
+ //#region src/commands/gc/projects.ts
1383
+ function classifyProjectEntries(projects, mountedVolumes) {
1384
+ const deadProjects = [];
1385
+ const invalidProjects = [];
1386
+ const skipped = [];
1387
+ for (const [path, project] of Object.entries(projects)) {
1388
+ if (!isAbsolute(path)) {
1389
+ const claimed = describeDereferenced(project);
1390
+ if (claimed.length) skipped.push({
1391
+ dir: path,
1392
+ reason: `not an absolute path, so this record is invalid; kept because it still claims ${claimed.join(" and ")}; gc removes it once that claim is gone, or drop the entry from the config file by hand`
1393
+ });
1394
+ else invalidProjects.push(path);
1395
+ continue;
1396
+ }
1397
+ if (!isAbsentPath(path)) continue;
1398
+ if (!isOnMountedVolume(path, mountedVolumes)) {
1399
+ const volume = volumeRootFor(path);
1400
+ skipped.push({
1401
+ dir: path,
1402
+ reason: `volume ${volume} is not mounted`
1403
+ });
1404
+ } else deadProjects.push(path);
1405
+ }
1406
+ return {
1407
+ deadProjects,
1408
+ invalidProjects,
1409
+ skipped
1410
+ };
1411
+ }
1412
+ //#endregion
1382
1413
  //#region src/workspace/service-guard.ts
1383
1414
  const SERVICE_IN_USE = { code: "STIM_WORKTREE_SERVICE" };
1384
1415
  function inside(folder, canonical) {
@@ -3397,7 +3428,7 @@ async function reclaimEnvironment(root, why, output, operation, beforeRemove) {
3397
3428
  return;
3398
3429
  }
3399
3430
  for (const s of result.skippedDevices) output.error(chalk.yellow(phaseLine("device", `kept ${describeKeptDevice(s)} (${s.reason})`)));
3400
- output.error(chalk.green(`Reclaimed the environment; the working tree stays (${why}).`));
3431
+ output.error(chalk.green(existsSync$1(root) ? `Reclaimed the environment; the working tree stays (${why}).` : `Reclaimed the environment of the deleted folder (${why}).`));
3401
3432
  }, operation, beforeRemove), {
3402
3433
  signal: operation?.signal,
3403
3434
  declareSpawnsFor: operation
@@ -3615,6 +3646,21 @@ async function removeOrRefuse(target, opts, onRemoved, output) {
3615
3646
  }
3616
3647
  return;
3617
3648
  }
3649
+ const registered = Object.fromEntries(Object.entries(loadConfig$1()?.projects ?? {}).filter(([key]) => isPathPrefix$1(path, key)));
3650
+ const { deadProjects, skipped } = opts.linkedOnly ? {
3651
+ deadProjects: [],
3652
+ skipped: []
3653
+ } : classifyProjectEntries(registered, listMountedVolumes());
3654
+ if (skipped.length) {
3655
+ for (const kept of skipped) output.error(chalk.red(`Refusing to remove ${kept.dir}: ${kept.reason}.`));
3656
+ output.error(chalk.dim("Its absence cannot be confirmed, so its record is kept."));
3657
+ output.fail();
3658
+ return;
3659
+ }
3660
+ if (deadProjects.length) {
3661
+ await reclaimEnvironment(path, "its folder is already gone", output, opts.operation, opts.beforeRemove);
3662
+ return;
3663
+ }
3618
3664
  output.error(chalk.red(`No such worktree: ${path}`));
3619
3665
  output.fail();
3620
3666
  return;
@@ -3904,4 +3950,4 @@ function worktreeCommand(program) {
3904
3950
  registerRemove(worktree);
3905
3951
  }
3906
3952
  //#endregion
3907
- export { deleteSelectedArchives as A, sizeScanDeferred as C, stimCliUseOf as D, stimCliEntries as E, worktreeArchiveLimits as M, describeDereferenced as O, measureSizes as S, serviceRunningFrom as T, cacheBlocked as _, nestedWorktrees as a, measurePressure as b, registerRemove as c, removalPath as d, removalRemedy as f, worktreeCommand as g, warmedWorkspace as h, excludeWatchmanCookies as i, sweepArchiveStaging as j, reclaimProject as k, registerWarm as l, warmWorktreeTarget as m, dependencyInstallCommand as n, porcelainPath as o, removeWorktreeTarget as p, excludePodChurn as r, reclaimKeys as s, customIosDirs as t, removalBlockers as u, measureDisk as v, uncommittedActivityOf as w, measurePressureAsync as x, measureDiskAsync as y };
3953
+ export { deleteSelectedArchives as A, sizeScanDeferred as C, stimCliUseOf as D, stimCliEntries as E, worktreeArchiveLimits as M, classifyProjectEntries as O, measureSizes as S, serviceRunningFrom as T, cacheBlocked as _, nestedWorktrees as a, measurePressure as b, registerRemove as c, removalPath as d, removalRemedy as f, worktreeCommand as g, warmedWorkspace as h, excludeWatchmanCookies as i, sweepArchiveStaging as j, reclaimProject as k, registerWarm as l, warmWorktreeTarget as m, dependencyInstallCommand as n, porcelainPath as o, removeWorktreeTarget as p, excludePodChurn as r, reclaimKeys as s, customIosDirs as t, removalBlockers as u, measureDisk as v, uncommittedActivityOf as w, measurePressureAsync as x, measureDiskAsync as y };
@@ -1,2 +1,2 @@
1
- import { a as nestedWorktrees, c as registerRemove, d as removalPath, f as removalRemedy, g as worktreeCommand, h as warmedWorkspace, i as excludeWatchmanCookies, l as registerWarm, m as warmWorktreeTarget, n as dependencyInstallCommand, o as porcelainPath, p as removeWorktreeTarget, r as excludePodChurn, s as reclaimKeys, t as customIosDirs, u as removalBlockers } from "./worktree-BTrii9e_.mjs";
1
+ import { a as nestedWorktrees, c as registerRemove, d as removalPath, f as removalRemedy, g as worktreeCommand, h as warmedWorkspace, i as excludeWatchmanCookies, l as registerWarm, m as warmWorktreeTarget, n as dependencyInstallCommand, o as porcelainPath, p as removeWorktreeTarget, r as excludePodChurn, s as reclaimKeys, t as customIosDirs, u as removalBlockers } from "./worktree-BhsML6GV.mjs";
2
2
  export { customIosDirs, worktreeCommand as default, dependencyInstallCommand, excludePodChurn, excludeWatchmanCookies, nestedWorktrees, porcelainPath, reclaimKeys, registerRemove, registerWarm, removalBlockers, removalPath, removalRemedy, removeWorktreeTarget, warmWorktreeTarget, warmedWorkspace };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stim",
3
- "version": "1.31.0",
3
+ "version": "1.33.0",
4
4
  "description": "Stim: fast, isolated React Native environments for coding agents",
5
5
  "keywords": [
6
6
  "agent",
@@ -53,11 +53,11 @@
53
53
  },
54
54
  "dependencies": {
55
55
  "@expo/fingerprint": "^0.21.5",
56
- "@stim-cli/agent-driver": "1.31.0",
57
- "@stim-cli/agent-driver-agent-device": "1.31.0",
58
- "@stim-cli/cache": "1.31.0",
59
- "@stim-cli/core": "1.31.0",
60
- "@stim-cli/metro": "1.31.0",
56
+ "@stim-cli/agent-driver": "1.33.0",
57
+ "@stim-cli/agent-driver-agent-device": "1.33.0",
58
+ "@stim-cli/cache": "1.33.0",
59
+ "@stim-cli/core": "1.33.0",
60
+ "@stim-cli/metro": "1.33.0",
61
61
  "@xmldom/xmldom": "0.9.12",
62
62
  "chalk": "^6.0.0",
63
63
  "commander": "^15.0.0",
@@ -66,7 +66,7 @@
66
66
  "ws": "^8.21.3"
67
67
  },
68
68
  "devDependencies": {
69
- "@stim-cli/expo-build-cache": "1.31.0",
69
+ "@stim-cli/expo-build-cache": "1.33.0",
70
70
  "@types/cross-spawn": "^6.0.6",
71
71
  "@types/which": "^3.0.4",
72
72
  "@types/ws": "^8.18.1",
@@ -1,2 +0,0 @@
1
- import { m as startExpoServer } from "./server-expo-CP4dURQp.mjs";
2
- export { startExpoServer };
@@ -1,2 +0,0 @@
1
- import { t as triggerMaintenance } from "./trigger-CfnOfpDd.mjs";
2
- export { triggerMaintenance };
@@ -1,2 +0,0 @@
1
- import { n as webCommand, t as runWeb } from "./web-BE89ONcc.mjs";
2
- export { webCommand as default, runWeb };