stim 1.27.0 → 1.29.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 (154) hide show
  1. package/dist/{acquire-artifact-BKN2Yuhg.mjs → acquire-artifact-C2DKfenN.mjs} +1 -1
  2. package/dist/{act-ROviTF_t.mjs → act-CrTcskiE.mjs} +502 -34
  3. package/dist/{activity-Cd-ysFes.mjs → activity-BR5oHSO5.mjs} +6 -5
  4. package/dist/{agent-device-usage-output-C5nCKWp9.mjs → agent-device-usage-output-W0x4SoC7.mjs} +4 -4
  5. package/dist/{android-DriNoAVy.mjs → android-BHKgeOuq.mjs} +5 -5
  6. package/dist/{android--HBgpvpW.mjs → android-BPmCmyAy.mjs} +5 -5
  7. package/dist/{android-Deb9X3_Y.mjs → android-CLU_MMnb.mjs} +1 -1
  8. package/dist/{android-cas-D5e6ecUg.mjs → android-cas-BH6K12__.mjs} +4 -4
  9. package/dist/{android-Cd6w7_qw.mjs → android-l616dRP1.mjs} +42 -39
  10. package/dist/{android-project-DUGMbq28.d.mts → android-project-CCEQyYJK.d.mts} +6 -2
  11. package/dist/api.d.mts +8 -5
  12. package/dist/api.mjs +27 -27
  13. package/dist/{apk-signed-tail-BHQHx3Rm.mjs → apk-signed-tail-B-wKoF_8.mjs} +2 -2
  14. package/dist/{artifact-0AGJYB9O.mjs → artifact-DHuFYfhD.mjs} +12 -12
  15. package/dist/{artifact-faemIZv5.mjs → artifact-Dm9ScLrh.mjs} +12 -12
  16. package/dist/{auto-placement-z-H5pJza.mjs → auto-placement-C8sJsyMN.mjs} +8 -8
  17. package/dist/{browser-web-slD8AvLp.mjs → browser-web-_tQTbQUs.mjs} +12 -12
  18. package/dist/{build-hS0QyFlQ.mjs → build-DtCU9Kim.mjs} +23 -23
  19. package/dist/{build-cache-gBJ-WKzA.mjs → build-cache-BGwTsIEa.mjs} +4 -4
  20. package/dist/{build-plan-CBqYbzYM.mjs → build-plan-CWyjMPKo.mjs} +6 -6
  21. package/dist/{cache-manifest-DEjqGGat.mjs → cache-manifest-evF_zJ9U.mjs} +1 -1
  22. package/dist/cache-manifest.mjs +1 -1
  23. package/dist/{ccache-BWTze1Ls.mjs → ccache-DsDkdP72.mjs} +19 -18
  24. package/dist/{cli-ftXDLto1.mjs → cli-3fjOg-Oc.mjs} +19 -19
  25. package/dist/cli.mjs +1 -1
  26. package/dist/{client-xsdxrhWA.mjs → client-BTUH8TF1.mjs} +41 -8
  27. package/dist/collector-run.mjs +5 -5
  28. package/dist/{command-output-Dj-WT4BP.mjs → command-output-DjCsmzLZ.mjs} +1 -1
  29. package/dist/{config-Cn94Jc0g.mjs → config-AbUjIBOQ.mjs} +121 -19
  30. package/dist/{dependencies-BGokZ-Ng.mjs → dependencies-CHNqX6Pr.mjs} +38 -38
  31. package/dist/{dependency-state-C3OtgG94.mjs → dependency-state-CPKAKCZ8.mjs} +1 -1
  32. package/dist/{dev-client-BMca82xo.mjs → dev-client-CROrxj1x.mjs} +2 -2
  33. package/dist/{device-tM41-TUq.mjs → device-Bmm5qjM-.mjs} +14 -14
  34. package/dist/device-BvpasThQ.mjs +297 -0
  35. package/dist/{device-capacity-6LP7QsaA.mjs → device-capacity-B2ChA-bz.mjs} +86 -18
  36. package/dist/device-host-worker.mjs +15 -13
  37. package/dist/{device-ios-534c14fz.mjs → device-ios-CYzivd31.mjs} +9 -9
  38. package/dist/{device-lease-run-DwsGfjUN.mjs → device-lease-run-qRq_2W2V.mjs} +4 -4
  39. package/dist/{device-pool-BnQqvs6o.mjs → device-pool-CrmiE4_x.mjs} +3 -3
  40. package/dist/{device-BJm0irrq.mjs → device-provision-CK2XiEp1.mjs} +11 -302
  41. package/dist/{doctor-Dbx1ZpD2.mjs → doctor-BO_kaFWX.mjs} +1 -1
  42. package/dist/{doctor-DyqE9n1J.mjs → doctor-Cp4-HN1f.mjs} +20 -15
  43. package/dist/{doctor-F-3VUUyN.mjs → doctor-Dr3C1iXV.mjs} +19 -19
  44. package/dist/doctor-fingerprint.mjs +1 -1
  45. package/dist/{doctor-watchman-CxDbyrrt.mjs → doctor-watchman-CJr2aXXv.mjs} +4 -4
  46. package/dist/{eas-build-CjNSWmjo.mjs → eas-build-D-9HmGZS.mjs} +2 -2
  47. package/dist/{eas-fallback-9fqb46kW.mjs → eas-fallback-Cemt2GVL.mjs} +4 -4
  48. package/dist/{eas-session-ledger-DrP4OuuM.mjs → eas-session-ledger-B0KLZx5m.mjs} +36 -7
  49. package/dist/{error-diagnostics-snej9k4j.mjs → error-diagnostics-CV_1RoEH.mjs} +8 -8
  50. package/dist/{gc-CGZ1Yg88.mjs → gc-CKHqL4aS.mjs} +81 -18
  51. package/dist/{gc-BRwAY3qT.mjs → gc-DjXwQXHK.mjs} +2 -2
  52. package/dist/{guide-_rfEh_zM.mjs → guide-CeRlWVsS.mjs} +230 -62
  53. package/dist/{hosted-android-BMKzUNnY.mjs → hosted-android-DI_vvv7U.mjs} +5 -6
  54. package/dist/{hosted-client-D7Pk_Oo1.mjs → hosted-client-CgoxdU9j.mjs} +44 -17
  55. package/dist/{hosted-logs-B1gqQuva.mjs → hosted-logs-C-4INmkn.mjs} +17 -8
  56. package/dist/{hosted-logs-sync-Dg3qrZmV.mjs → hosted-logs-sync-Bf5s02fi.mjs} +5 -5
  57. package/dist/{hosted-macos-B9w4H8hc.mjs → hosted-macos-Doh85YUM.mjs} +5 -5
  58. package/dist/{hosted-native-CdgaiuyP.mjs → hosted-native-DvZENAL-.mjs} +11 -8
  59. package/dist/{idle-shutdown-Cbvo5KEh.mjs → idle-shutdown-BM37gMfU.mjs} +7 -7
  60. package/dist/{ios-Bk4mWbtS.mjs → ios-CNDH6fNF.mjs} +8 -8
  61. package/dist/{ios-E26qSpkb.mjs → ios-CoMCWfub.mjs} +4 -4
  62. package/dist/{ios-B5HlVMhQ.mjs → ios-UM_dManb.mjs} +31 -29
  63. package/dist/{ios-device-C_QkIf1Z.mjs → ios-device-L1-pota_.mjs} +1 -1
  64. package/dist/{ios-project-D8Jcy_br.mjs → ios-project-DJYptOCh.mjs} +7 -7
  65. package/dist/{ios-state-BZ03NFgF.mjs → ios-state-Ce_dystM.mjs} +1 -1
  66. package/dist/{js-swap-Dg2a945i.mjs → js-swap-BthE4kZC.mjs} +4 -4
  67. package/dist/{launch-CRyBeNsA.mjs → launch-D798aSm8.mjs} +19 -19
  68. package/dist/{lightened-BCsdAGj_.mjs → lightened-vSxkstg6.mjs} +4 -4
  69. package/dist/{logs-aJQb-RDg.mjs → logs-BND8MiBq.mjs} +9 -8
  70. package/dist/{logs-CC_-ZzEE.mjs → logs-CilPftm3.mjs} +5 -5
  71. package/dist/{macos-BGmTpnv9.mjs → macos-BOQrKYeJ.mjs} +1 -1
  72. package/dist/{macos-DlCBhMw5.mjs → macos-CxUi9xcE.mjs} +20 -20
  73. package/dist/macos-run.mjs +1 -1
  74. package/dist/maintenance-run.mjs +13 -9
  75. package/dist/{metro-CvyD-xwe.mjs → metro-BMQHczcf.mjs} +2 -2
  76. package/dist/{metro-gateway-BnHdqMO_.mjs → metro-request-BtF7ox53.mjs} +25 -46
  77. package/dist/{named-ports-BCyMWA6b.mjs → named-ports-DcktE2Pw.mjs} +2 -2
  78. package/dist/{native-android-DlpxCyOP.mjs → native-android-BkhrCjdX.mjs} +16 -16
  79. package/dist/{native-gradle-artifact-inputs-C13qT7R_.mjs → native-gradle-artifact-inputs-Cw4P6Gyr.mjs} +3 -3
  80. package/dist/{native-runtime-DqaIBO5w.mjs → native-runtime-DyH2gkXK.mjs} +6 -6
  81. package/dist/{native-xcode-inputs-B1W8SrxB.mjs → native-xcode-inputs-DV8jr3kJ.mjs} +2 -2
  82. package/dist/{native-xcode-ios-QPP0Rm68.mjs → native-xcode-ios-DdpPG2iT.mjs} +15 -15
  83. package/dist/{ndjson-Dy2W4vRa.mjs → ndjson-CrjIsGzw.mjs} +2 -2
  84. package/dist/offload-worker.d.mts +1 -1
  85. package/dist/offload-worker.mjs +22 -22
  86. package/dist/{ownership-Bx-0cku-.mjs → ownership-Dtz9G5Gl.mjs} +2 -2
  87. package/dist/{phone-reverses-C9yAaKEv.mjs → phone-reverses-DZRad8HT.mjs} +4 -4
  88. package/dist/{placement-log-BXUbiZM6.mjs → placement-log-CoN6xrjY.mjs} +1 -1
  89. package/dist/{plan-placement-UxnQjv5Z.mjs → plan-placement-7sHuqR-r.mjs} +6 -6
  90. package/dist/{ports-uUrghqWN.mjs → ports-VQSAPZhl.mjs} +3 -3
  91. package/dist/{prebuild-BDpToDgR.mjs → prebuild-Bqp0LFGN.mjs} +9 -9
  92. package/dist/{project-DYj-HVx6.mjs → project-D1n0K4yg.mjs} +15 -15
  93. package/dist/{react-native-android-DDBccgJw.mjs → react-native-android-FQ-yX3Mv.mjs} +22 -22
  94. package/dist/{react-native-build-DaK2IFyP.mjs → react-native-build-D58bIqV9.mjs} +7 -7
  95. package/dist/{react-native-doctor-B-Mw6DcR.mjs → react-native-doctor-AkUH2aca.mjs} +5 -5
  96. package/dist/{react-native-ios-DjYwUF9U.mjs → react-native-ios-Dmsv8j7T.mjs} +14 -14
  97. package/dist/{recordings-C20iUZfp.mjs → recordings-CHMaF73C.mjs} +1 -1
  98. package/dist/{reload-fUdkH2_p.mjs → reload-BV0nD-k9.mjs} +14 -14
  99. package/dist/{reload-DJBeF_rC.mjs → reload-CDKEzzaf.mjs} +1 -1
  100. package/dist/{remote-y6n99WMW.mjs → remote-C8xyslUa.mjs} +9 -9
  101. package/dist/{result-CTqBw2Te.mjs → result-9fqcJ90W.mjs} +16 -16
  102. package/dist/{run-DaCeNKRm.mjs → run-BQAmrohh.mjs} +2 -2
  103. package/dist/{selection-Bs8phwhN.mjs → selection-D1ZDzHFX.mjs} +105 -62
  104. package/dist/{server-bare-BOh-iZEj.mjs → server-bare-CEQdB_F4.mjs} +37 -1
  105. package/dist/{server-command-8CuA51Cv.mjs → server-command-RlS-Kl4a.mjs} +5 -5
  106. package/dist/server-expo-BVV9qy31.mjs +2 -0
  107. package/dist/{server-expo-ABQs2XFA.mjs → server-expo-bB1VV2k-.mjs} +8 -5
  108. package/dist/{settings-CMHhQNwI.mjs → settings-BcVCcAT5.mjs} +2 -2
  109. package/dist/{settings-BDVI8Ivc.mjs → settings-D776ygML.mjs} +47 -3
  110. package/dist/{settings-Djl-mpjX.mjs → settings-D9LtQaUw.mjs} +2 -1
  111. package/dist/{settings-payload-cm60Zhib.mjs → settings-payload-_aatELz2.mjs} +4 -4
  112. package/dist/{settings-write-BdNRLlBn.mjs → settings-write-CkTVGQ4O.mjs} +5 -5
  113. package/dist/settings.schema.json +58 -9
  114. package/dist/{simslim-DCQwzoPy.mjs → simslim-CbpHERcv.mjs} +1 -1
  115. package/dist/{slot-launch-0l7RqSpr.mjs → slot-launch-Dbgfh8gc.mjs} +6 -6
  116. package/dist/{stage-F4cAfJGi.mjs → stage-BuHuRj1y.mjs} +1 -1
  117. package/dist/{start-DcqnF9p8.mjs → start-Cr-c3Xhq.mjs} +1 -1
  118. package/dist/{start-DrPwER_2.mjs → start-Dlv4XXTP.mjs} +11 -11
  119. package/dist/{state-CZxLyetD.mjs → state-C2AUjjhg.mjs} +1 -1
  120. package/dist/{state-BX1y5syV.mjs → state-D5ZxwCGJ.mjs} +2 -2
  121. package/dist/{stats-GxuCbles.mjs → stats-D5c-uIBp.mjs} +4 -4
  122. package/dist/{status-7ULDEJ1e.mjs → status-CK7ZoEhV.mjs} +2 -2
  123. package/dist/{status-BfnK9pUd.mjs → status-D6PBK6_-.mjs} +49 -26
  124. package/dist/{status-Bj7ZYvvc.mjs → status-DbQv--Yb.mjs} +1 -1
  125. package/dist/{status-watch-BfabQn03.mjs → status-watch-okrpea4i.mjs} +17 -6
  126. package/dist/status-worker.mjs +1 -1
  127. package/dist/{stim-desktop-CbWo21kb.mjs → stim-desktop-CYXLFpFS.mjs} +1 -1
  128. package/dist/{stop-x1Yu3He4.mjs → stop-CHtAiv79.mjs} +2 -2
  129. package/dist/{stop-D-EAr25B.mjs → stop-p9uSKuGE.mjs} +20 -19
  130. package/dist/{stop-CH79S3IZ.mjs → stop-uRQ-zYcl.mjs} +9 -5
  131. package/dist/supervisor-run.d.mts +1 -0
  132. package/dist/supervisor-run.mjs +243 -65
  133. package/dist/{support-Be0UeVZU.mjs → support-BMpQIug0.mjs} +11 -10
  134. package/dist/{support-CNg_YsOk.mjs → support-PFyTkrnr.mjs} +4 -4
  135. package/dist/{swiftpm-artifact-inputs-uPqYvGBv.mjs → swiftpm-artifact-inputs-Cddq6jN2.mjs} +1 -1
  136. package/dist/{swiftpm-macos-Ch4YjY_A.mjs → swiftpm-macos-BSj9iZlI.mjs} +8 -8
  137. package/dist/{toolchain-JYAOquPg.mjs → toolchain-B-mzR9Rh.mjs} +1 -1
  138. package/dist/{toolchain-CbCG6C5Z.mjs → toolchain-CLGnEUgT.mjs} +4 -4
  139. package/dist/{trigger-DMou-X7j.mjs → trigger-CfnOfpDd.mjs} +1 -1
  140. package/dist/trigger-DBZ-GBrl.mjs +2 -0
  141. package/dist/{warm-progress-C0RsbngN.mjs → warm-progress--KkkBBaq.mjs} +3 -3
  142. package/dist/web-BxSo493O.mjs +2 -0
  143. package/dist/web-run.mjs +5 -5
  144. package/dist/{web-Cq_AQ4DK.mjs → web-xlVssjQf.mjs} +8 -8
  145. package/dist/{workspace-state-BjqdjnJR.mjs → workspace-state-DGwkPXwq.mjs} +2 -2
  146. package/dist/{workspaces-DFbj07jp.mjs → workspaces-CvSYD_78.mjs} +106 -26
  147. package/dist/{worktree-COAJ3-OD.mjs → worktree-CaQBf6kh.mjs} +26 -47
  148. package/dist/worktree-DTOIohFe.mjs +2 -0
  149. package/package.json +7 -7
  150. package/shim/bundle-response.cjs +37 -0
  151. package/dist/server-expo-Ba_Y21vB.mjs +0 -2
  152. package/dist/trigger-qp2ji5wE.mjs +0 -2
  153. package/dist/web-Je6abcpz.mjs +0 -2
  154. package/dist/worktree-JGUd_53L.mjs +0 -2
@@ -1,2 +1,2 @@
1
- import { n as runMacosSupervisor, t as logLines } from "./run-DaCeNKRm.mjs";
1
+ import { n as runMacosSupervisor, t as logLines } from "./run-BQAmrohh.mjs";
2
2
  export { logLines, runMacosSupervisor };
@@ -1,10 +1,10 @@
1
- import { P as formatBytes } from "./config-Cn94Jc0g.mjs";
2
- import { A as diskPressureLevel, I as maintenanceItem, L as openGcLog, M as levelStillShort, N as lowestFree, R as maintenanceLogger, _ as resolveBudget, j as levelFloors, mt as deviceSweepIsScoped } from "./ccache-BWTze1Ls.mjs";
3
- import { I as memoryCulpritsUnder, V as memoryCulpritAdvice } from "./ios-E26qSpkb.mjs";
4
- import { t as resolveMaintenanceSettings } from "./settings-Djl-mpjX.mjs";
5
- import { C as measureSizes, w as sizeScanDeferred, x as measurePressure, y as measureDisk } from "./worktree-COAJ3-OD.mjs";
1
+ import { P as formatBytes } from "./config-AbUjIBOQ.mjs";
2
+ import { A as diskPressureLevel, I as maintenanceItem, L as openGcLog, M as levelStillShort, N as lowestFree, R as maintenanceLogger, _ as resolveBudget, j as levelFloors, mt as deviceSweepIsScoped } from "./ccache-DsDkdP72.mjs";
3
+ import { I as memoryCulpritsUnder, V as memoryCulpritAdvice } from "./ios-CoMCWfub.mjs";
4
+ import { t as resolveMaintenanceSettings } from "./settings-D9LtQaUw.mjs";
5
+ import { C as sizeScanDeferred, S as measureSizes, b as measurePressure, v as measureDisk } from "./worktree-CaQBf6kh.mjs";
6
6
  import { t as relaunchWithLogFile } from "./detached-entry-BPlSaCwC.mjs";
7
- import { g as measureOwnedDevices, i as plannedMaintenance, n as diskRecovered, o as triggeringRoot, r as executeAction } from "./act-ROviTF_t.mjs";
7
+ import { i as plannedMaintenance, n as diskRecovered, o as triggeringRoot, r as executeAction, v as measureOwnedDevices } from "./act-CrTcskiE.mjs";
8
8
  import { r as due, t as capChildLog } from "./attempt-ClyJlZPT.mjs";
9
9
  import { releaseClaim, tryAcquireClaim } from "@stim-cli/core/ownership-claim";
10
10
  import { randomBytes } from "node:crypto";
@@ -117,7 +117,7 @@ function describeDone(action) {
117
117
  case "would-delete-dependencies": return `Deleted the installed dependencies ${action.target}`;
118
118
  case "would-stop-gradle-daemons": return "Stopped idle Gradle and Kotlin daemons";
119
119
  case "would-delete-gradle-version": return `Deleted the unpinned Gradle ${action.target} caches and distributions`;
120
- case "would-stop-workspace": return `Stopped ${name} and deleted its owned devices`;
120
+ case "would-stop-workspace": return action.check === "idle" ? `Stopped ${name} and shut down its owned devices` : `Stopped ${name} and deleted its owned devices`;
121
121
  case "would-shutdown-device": return `Shut down the idle device ${action.target} of ${name}`;
122
122
  default: return `Unregistered the stale cache ${action.target}`;
123
123
  }
@@ -125,6 +125,7 @@ function describeDone(action) {
125
125
  const actionKey = (action) => JSON.stringify([action.kind, action.target]);
126
126
  const stableText = (text) => text.replace(/\d+(?:\.\d+)?/g, "#");
127
127
  const sameSet = (before, after) => before.size === after.size && [...before].every((key) => after.has(key));
128
+ const BACKGROUND_TRIGGERS = /* @__PURE__ */ new Set(["supervisor", "status-watch"]);
128
129
  async function runMaintenance(trigger) {
129
130
  const startedAt = Date.now();
130
131
  let claim;
@@ -151,6 +152,7 @@ async function runMaintenance(trigger) {
151
152
  };
152
153
  const checks = due(state, settings, startedAt);
153
154
  if (checks.length === 0) return;
155
+ const background = BACKGROUND_TRIGGERS.has(trigger);
154
156
  let writeError = null;
155
157
  const noteWriteError = (error) => {
156
158
  writeError ??= error instanceof Error ? error.message : String(error);
@@ -258,7 +260,8 @@ async function runMaintenance(trigger) {
258
260
  result = await plannedMaintenance(state.pressure, state.sizes, settings, {
259
261
  sweep: ran.has("sweep"),
260
262
  worktrees: plannedWorktrees,
261
- idle: ran.has("idle")
263
+ idle: ran.has("idle"),
264
+ background
262
265
  });
263
266
  } catch (error) {
264
267
  const message = error instanceof Error ? error.message : String(error);
@@ -278,6 +281,7 @@ async function runMaintenance(trigger) {
278
281
  const context = {
279
282
  settings,
280
283
  budget,
284
+ background,
281
285
  protectedRoot: triggeringRoot(),
282
286
  worktreeSweep: result.worktreeSweep,
283
287
  pressureSweep: result.pressureSweep
@@ -338,7 +342,7 @@ async function runMaintenance(trigger) {
338
342
  }
339
343
  return results;
340
344
  }
341
- const retained = state.plan.filter((action) => action.check === "sweep" && !ran.has("sweep") || action.check === "worktree" && !plannedWorktrees || action.kind === "would-shutdown-device" && action.check === void 0 && !ran.has("idle"));
345
+ const retained = state.plan.filter((action) => action.check === "sweep" && !ran.has("sweep") || action.check === "worktree" && !plannedWorktrees || action.kind === "would-shutdown-device" && action.check === void 0 && !ran.has("idle") || action.check === "idle" && !ran.has("idle"));
342
346
  const previousActions = new Set(state.plan.map(actionKey));
343
347
  const previousSkips = new Set(state.skipKeys ?? []);
344
348
  const nextSkips = new Set(result.skips.map((skip) => skip.target));
@@ -1,6 +1,6 @@
1
1
  import { S as process_identity_exports, l as WorkspaceProcessCleanupError, t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { r as readWorkspaceState } from "./workspace-state-BjqdjnJR.mjs";
3
- import { F as isOnMountedVolume, I as listMountedVolumes, O as withConfigLockAsync, _ as loadConfig, n as allMetroPorts, r as claimMetroPort, x as releaseMetroPort } from "./config-Cn94Jc0g.mjs";
2
+ import { r as readWorkspaceState } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { F as isOnMountedVolume, I as listMountedVolumes, O as withConfigLockAsync, _ as loadConfig, n as allMetroPorts, r as claimMetroPort, x as releaseMetroPort } from "./config-AbUjIBOQ.mjs";
4
4
  import { t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
5
5
  import { sep } from "path";
6
6
  import { existsSync, readlinkSync, realpathSync } from "fs";
@@ -1,10 +1,8 @@
1
1
  import { S as process_identity_exports, c as throwIfCancelled, s as cancelledError } from "./exec-aULwtNly.mjs";
2
- import { j as workspaceStateFile$1, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-BjqdjnJR.mjs";
3
- import { lt as tailscaleStatusAsync } from "./config-Cn94Jc0g.mjs";
4
- import { randomBytes, randomUUID } from "node:crypto";
2
+ import { j as workspaceStateFile$1, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { randomUUID } from "node:crypto";
5
4
  import { statSync, watch } from "node:fs";
6
- import { HOSTED_METRO_REQUESTS_KEY, findPeer, hostedMetroGateways, hostedMetroRequests, isJsonObject, parseMachine } from "@stim-cli/core/state";
7
- import { isIP } from "node:net";
5
+ import { HOSTED_METRO_REQUESTS_KEY, hostedMetroLinks, hostedMetroRequests, isJsonObject } from "@stim-cli/core/state";
8
6
  //#region src/workspace/workspace-state-watch.ts
9
7
  /** Filesystem events are hints; callers retain their own bounded repair and state verification. */
10
8
  function watchWorkspaceState(root, changed) {
@@ -58,8 +56,8 @@ function watchWorkspaceState(root, changed) {
58
56
  };
59
57
  }
60
58
  //#endregion
61
- //#region src/device-host/metro-gateway.ts
62
- async function waitForGateway(root, read, { waitMs, signal, what }) {
59
+ //#region src/device-host/metro-request.ts
60
+ async function waitForSupervisor(root, read, { waitMs, signal, what }) {
63
61
  throwIfCancelled(signal, what);
64
62
  const startedAt = Date.now();
65
63
  const deadline = startedAt + waitMs;
@@ -101,38 +99,23 @@ async function waitForGateway(root, read, { waitMs, signal, what }) {
101
99
  if (onAbort) signal?.removeEventListener("abort", onAbort);
102
100
  }
103
101
  }
104
- function gatewayAddresses(credential, status) {
105
- const machine = parseMachine(credential.machine);
106
- const peer = machine ? findPeer(status, machine.name) : "missing";
107
- if (typeof peer === "string") throw new Error(`${credential.machine} no longer resolves to one tailnet peer. Run stim doctor.`);
108
- const self = isJsonObject(status) && isJsonObject(status.Self) ? status.Self : null;
109
- const address = (Array.isArray(self?.TailscaleIPs) ? self.TailscaleIPs : []).find((ip) => typeof ip === "string" && isIP(ip) === isIP(peer.address) && isIP(ip) !== 0);
110
- if (!address) throw new Error("This machine has no Tailscale address compatible with the hosting Mac.");
111
- return {
112
- address,
113
- peer: peer.address
114
- };
115
- }
116
102
  function requireHostedMetro(root) {
117
103
  const supervisor = readWorkspaceState$1(root)?.supervisor;
118
- if (supervisor?.hostedMetro === true && (0, process_identity_exports.inspectProcessIdentity)(supervisor) === "same") return;
119
- throw Object.assign(/* @__PURE__ */ new Error("Hosted Debug runs require a running Metro supervisor with private gateway support. Run stim stop; stim start, then retry."), {
104
+ if (supervisor?.hostedMetroLinks === true && (0, process_identity_exports.inspectProcessIdentity)(supervisor) === "same") return;
105
+ throw Object.assign(/* @__PURE__ */ new Error("Hosted Debug runs require a running Metro supervisor that links Metro to the hosting machine. Run stim stop; stim start, then retry."), {
120
106
  code: "STIM_HOSTING_REFUSED",
121
107
  remedy: "Run stim stop; stim start, then retry."
122
108
  });
123
109
  }
124
110
  async function requestHostedMetro(root, session, credential, signal) {
125
- throwIfCancelled(signal, "hosted Metro gateway");
111
+ throwIfCancelled(signal, "hosted Metro link");
126
112
  requireHostedMetro(root);
127
- const addresses = gatewayAddresses(credential, await tailscaleStatusAsync(signal));
128
- throwIfCancelled(signal, "hosted Metro gateway");
129
- requireHostedMetro(root);
130
- const previous = hostedMetroRequests(readWorkspaceState$1(root))[session];
131
- const request = previous && previous.address === addresses.address && previous.peer === addresses.peer ? previous : {
113
+ const recorded = readWorkspaceState$1(root);
114
+ const previous = hostedMetroRequests(recorded)[session];
115
+ const answer = hostedMetroLinks(recorded)[session];
116
+ const request = previous?.machine === credential.machine && answer?.id === previous.id && answer.processToken === recorded?.supervisor?.processToken && answer.ready ? previous : {
132
117
  id: randomUUID(),
133
- machine: credential.machine,
134
- ...addresses,
135
- secret: randomBytes(32).toString("hex")
118
+ machine: credential.machine
136
119
  };
137
120
  await updateWorkspaceStateAsync(root, (state) => ({
138
121
  ...state,
@@ -141,24 +124,20 @@ async function requestHostedMetro(root, session, credential, signal) {
141
124
  [session]: request
142
125
  }
143
126
  }), signal);
144
- const opened = await waitForGateway(root, () => {
127
+ if (await waitForSupervisor(root, () => {
145
128
  const state = readWorkspaceState$1(root);
146
- const gateway = hostedMetroGateways(state)[session];
147
- if (gateway?.id === request.id && gateway.processToken === state?.supervisor?.processToken) {
148
- if (gateway.error) throw new Error(gateway.error);
149
- if (gateway.port) return {
150
- gatewayPort: gateway.port,
151
- secret: request.secret
152
- };
129
+ const links = hostedMetroLinks(state)[session];
130
+ if (links?.id === request.id && links.processToken === state?.supervisor?.processToken) {
131
+ if (links.error) throw new Error(links.error);
132
+ if (links.ready) return true;
153
133
  }
154
134
  return null;
155
135
  }, {
156
136
  waitMs: 15e3,
157
137
  signal,
158
- what: "hosted Metro gateway"
159
- });
160
- if (opened) return opened;
161
- throw new Error(`The Metro supervisor did not open a private gateway for ${credential.machine}. Run stim stop; stim start, then retry.`);
138
+ what: "hosted Metro link"
139
+ })) return;
140
+ throw new Error(`The Metro supervisor did not link Metro to ${credential.machine}. Run stim doctor, then stim stop; stim start and retry.`);
162
141
  }
163
142
  function clearHostedMetro(root, session) {
164
143
  updateWorkspaceState(root, (state) => {
@@ -172,17 +151,17 @@ function clearHostedMetro(root, session) {
172
151
  }
173
152
  async function closeHostedMetro(root, session, signal) {
174
153
  await withWorkspaceStateLockAsync(root, () => clearHostedMetro(root, session), signal);
175
- if (!await waitForGateway(root, () => {
154
+ if (!await waitForSupervisor(root, () => {
176
155
  const state = readWorkspaceState$1(root);
177
- const gateway = hostedMetroGateways(state)[session];
156
+ const links = hostedMetroLinks(state)[session];
178
157
  const supervisor = state?.supervisor;
179
- if (!gateway?.port || !supervisor || gateway.processToken !== supervisor.processToken) return true;
158
+ if (!links?.ready || !supervisor || links.processToken !== supervisor.processToken) return true;
180
159
  return (0, process_identity_exports.inspectProcessIdentity)(supervisor) === "gone" ? true : null;
181
160
  }, {
182
161
  waitMs: 5e3,
183
162
  signal,
184
163
  what: "close hosted Metro"
185
- })) throw new Error("The Metro supervisor did not close its private gateway. Restart Metro, then retry stim stop.");
164
+ })) throw new Error("The Metro supervisor did not close its Metro links. Restart Metro, then retry stim stop.");
186
165
  }
187
166
  function hostedMetroSettings(settings, hosted) {
188
167
  return hosted ? {
@@ -1,6 +1,6 @@
1
1
  import { S as process_identity_exports, t as getExecutor, u as withWorkspaceProcessLock } from "./exec-aULwtNly.mjs";
2
- import { C as saveConfig, O as withConfigLockAsync, _ as loadConfig, c as ensureConfig, d as getConfigDir, p as getProject } from "./config-Cn94Jc0g.mjs";
3
- import { f as signalProcessTree, m as createPortProbe, s as parseNetstatPids } from "./metro-CvyD-xwe.mjs";
2
+ import { C as saveConfig, O as withConfigLockAsync, _ as loadConfig, c as ensureConfig, d as getConfigDir, p as getProject } from "./config-AbUjIBOQ.mjs";
3
+ import { f as signalProcessTree, m as createPortProbe, s as parseNetstatPids } from "./metro-BMQHczcf.mjs";
4
4
  import { realpathSync } from "node:fs";
5
5
  //#region src/named-ports.ts
6
6
  const FIRST_PORT = 8900;
@@ -1,20 +1,20 @@
1
1
  import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, y as sharedBuildCache } from "./workspace-state-BjqdjnJR.mjs";
3
- import { H as deviceSlotPlatforms, p as getProject, q as validateDeviceSlot } from "./config-Cn94Jc0g.mjs";
4
- import { it as settingValueAt } from "./settings-BDVI8Ivc.mjs";
5
- import { B as ownedAvdDeviceProfile, E as findBuildTool, I as listInstalledSystemImages, K as ownedAvdSystemImage, V as ownedAvdDirectory, X as pickDefaultSystemImage, l as androidSystemImageAbi, o as androidHome } from "./android-DriNoAVy.mjs";
6
- import { s as resolveCcache } from "./ccache-BWTze1Ls.mjs";
7
- import { r as register } from "./cache-manifest-DEjqGGat.mjs";
8
- import { ot as statsProjectKey } from "./workspaces-DFbj07jp.mjs";
9
- import { ot as runCancellationSignal, r as androidToolchainAsync } from "./toolchain-CbCG6C5Z.mjs";
10
- import { C as resolveBuild, s as entryDir, t as artifactIn } from "./build-cache-gBJ-WKzA.mjs";
11
- import { h as gradleOffloadInputs, y as nativeGradleTransfer } from "./client-xsdxrhWA.mjs";
12
- import { d as buildGradle, l as androidSdkRefusal } from "./react-native-build-DaK2IFyP.mjs";
13
- import { s as explainBuildMiss, u as skippedMissReason } from "./prebuild-BDpToDgR.mjs";
14
- import { u as resolveAndroidRunPlan } from "./result-CTqBw2Te.mjs";
15
- import { n as androidProcessRuntime } from "./launch-CRyBeNsA.mjs";
16
- import { n as planFlagRefusal, r as planPayload } from "./build-plan-CBqYbzYM.mjs";
17
- import { a as nativeGradleWorkerArtifactIdentity, n as gradleArtifactInputs, r as nativeGradleArtifactSnapshot, t as NATIVE_GRADLE_CACHE_LIMIT } from "./native-gradle-artifact-inputs-C13qT7R_.mjs";
2
+ import { E as workspaceDir, y as sharedBuildCache } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { H as deviceSlotPlatforms, p as getProject, q as validateDeviceSlot } from "./config-AbUjIBOQ.mjs";
4
+ import { it as settingValueAt } from "./settings-D776ygML.mjs";
5
+ import { B as ownedAvdDeviceProfile, E as findBuildTool, I as listInstalledSystemImages, K as ownedAvdSystemImage, V as ownedAvdDirectory, X as pickDefaultSystemImage, l as androidSystemImageAbi, o as androidHome } from "./android-BHKgeOuq.mjs";
6
+ import { s as resolveCcache } from "./ccache-DsDkdP72.mjs";
7
+ import { r as register } from "./cache-manifest-evF_zJ9U.mjs";
8
+ import { lt as statsProjectKey } from "./workspaces-CvSYD_78.mjs";
9
+ import { ot as runCancellationSignal, r as androidToolchainAsync } from "./toolchain-CLGnEUgT.mjs";
10
+ import { C as resolveBuild, s as entryDir, t as artifactIn } from "./build-cache-BGwTsIEa.mjs";
11
+ import { h as gradleOffloadInputs, y as nativeGradleTransfer } from "./client-BTUH8TF1.mjs";
12
+ import { d as buildGradle, l as androidSdkRefusal } from "./react-native-build-D58bIqV9.mjs";
13
+ import { s as explainBuildMiss, u as skippedMissReason } from "./prebuild-Bqp0LFGN.mjs";
14
+ import { u as resolveAndroidRunPlan } from "./result-9fqcJ90W.mjs";
15
+ import { n as androidProcessRuntime } from "./launch-D798aSm8.mjs";
16
+ import { n as planFlagRefusal, r as planPayload } from "./build-plan-CWyjMPKo.mjs";
17
+ import { a as nativeGradleWorkerArtifactIdentity, n as gradleArtifactInputs, r as nativeGradleArtifactSnapshot, t as NATIVE_GRADLE_CACHE_LIMIT } from "./native-gradle-artifact-inputs-Cw4P6Gyr.mjs";
18
18
  import { createHash } from "node:crypto";
19
19
  import { createReadStream, createWriteStream, existsSync, readFileSync, statSync } from "node:fs";
20
20
  import { tmpdir } from "node:os";
@@ -1,8 +1,8 @@
1
1
  import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
2
  import { r as childEnvironment } from "./operation-exec-Dp4FuIGR.mjs";
3
- import { o as androidHome } from "./android-DriNoAVy.mjs";
4
- import { n as buildCacheKey } from "./build-cache-gBJ-WKzA.mjs";
5
- import { _ as nativeGradleLocalSourceDigest, h as gradleOffloadInputs } from "./client-xsdxrhWA.mjs";
3
+ import { o as androidHome } from "./android-BHKgeOuq.mjs";
4
+ import { n as buildCacheKey } from "./build-cache-BGwTsIEa.mjs";
5
+ import { _ as nativeGradleLocalSourceDigest, h as gradleOffloadInputs } from "./client-BTUH8TF1.mjs";
6
6
  import { n as fingerprintNativeInputs } from "./native-inputs-TRTTTRxt.mjs";
7
7
  import { createHash } from "node:crypto";
8
8
  import { homedir } from "node:os";
@@ -1,9 +1,9 @@
1
- import { r as readWorkspaceState$1, v as ensureWorkspaceStorageAsync } from "./workspace-state-BjqdjnJR.mjs";
2
- import { l as phaseLine } from "./command-output-Dj-WT4BP.mjs";
3
- import { N as metroPortSetting } from "./settings-BDVI8Ivc.mjs";
4
- import { d as resolveProjectMetro } from "./metro-CvyD-xwe.mjs";
5
- import { It as LAUNCH_BUNDLING, Rt as LAUNCH_UNVERIFIED } from "./ccache-BWTze1Ls.mjs";
6
- import { c as startDevServer } from "./start-DrPwER_2.mjs";
1
+ import { r as readWorkspaceState$1, v as ensureWorkspaceStorageAsync } from "./workspace-state-DGwkPXwq.mjs";
2
+ import { l as phaseLine } from "./command-output-DjCsmzLZ.mjs";
3
+ import { N as metroPortSetting } from "./settings-D776ygML.mjs";
4
+ import { d as resolveProjectMetro } from "./metro-BMQHczcf.mjs";
5
+ import { It as LAUNCH_BUNDLING, Rt as LAUNCH_UNVERIFIED } from "./ccache-DsDkdP72.mjs";
6
+ import { c as startDevServer } from "./start-Dlv4XXTP.mjs";
7
7
  import { readIdleStop } from "@stim-cli/core/state";
8
8
  import chalk from "chalk";
9
9
  //#region src/commands/native-runtime.ts
@@ -1,6 +1,6 @@
1
- import { E as workspaceDir, T as workspaceDerivedData } from "./workspace-state-BjqdjnJR.mjs";
1
+ import { E as workspaceDir, T as workspaceDerivedData } from "./workspace-state-DGwkPXwq.mjs";
2
2
  import { a as killOnAbort, l as gitQuietAsync, r as childEnvironment } from "./operation-exec-Dp4FuIGR.mjs";
3
- import { h as pbxString, m as pbxReferences } from "./project-DYj-HVx6.mjs";
3
+ import { h as pbxString, m as pbxReferences } from "./project-D1n0K4yg.mjs";
4
4
  import { n as fingerprintNativeInputs, t as NativeInputError } from "./native-inputs-TRTTTRxt.mjs";
5
5
  import { createHash } from "node:crypto";
6
6
  import { existsSync, readFileSync, realpathSync } from "node:fs";
@@ -1,21 +1,21 @@
1
1
  import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { x as sharedCompilationCache } from "./workspace-state-BjqdjnJR.mjs";
3
- import { G as remoteIosSetting, J as resolveCacheProviderConfig, Lt as repoRootAsync, rt as settingShapeErrors } from "./settings-BDVI8Ivc.mjs";
4
- import { g as selectNativeXcodeProject, h as pbxString, p as NativeXcodeError } from "./project-DYj-HVx6.mjs";
5
- import { Tn as processContext } from "./ccache-BWTze1Ls.mjs";
6
- import { r as register } from "./cache-manifest-DEjqGGat.mjs";
7
- import { ot as statsProjectKey } from "./workspaces-DFbj07jp.mjs";
8
- import { D as runCaptured, F as compilationCacheSettings, L as parseSwiftVersion, N as buildXcode, O as runPodInstall, R as parseXcodeMajor, T as readPodState, V as readBundleId, j as HEARTBEAT_INTERVAL_MS, ot as runCancellationSignal, s as iosToolchainAsync, w as podsAreStale } from "./toolchain-CbCG6C5Z.mjs";
9
- import { d as filesystemBuildCapability, n as buildCacheKey } from "./build-cache-gBJ-WKzA.mjs";
2
+ import { x as sharedCompilationCache } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { G as remoteIosSetting, J as resolveCacheProviderConfig, Vt as repoRootAsync, rt as settingShapeErrors } from "./settings-D776ygML.mjs";
4
+ import { g as selectNativeXcodeProject, h as pbxString, p as NativeXcodeError } from "./project-D1n0K4yg.mjs";
5
+ import { Tn as processContext } from "./ccache-DsDkdP72.mjs";
6
+ import { r as register } from "./cache-manifest-evF_zJ9U.mjs";
7
+ import { lt as statsProjectKey } from "./workspaces-CvSYD_78.mjs";
8
+ import { D as runCaptured, F as compilationCacheSettings, L as parseSwiftVersion, N as buildXcode, O as runPodInstall, R as parseXcodeMajor, T as readPodState, V as readBundleId, j as HEARTBEAT_INTERVAL_MS, ot as runCancellationSignal, s as iosToolchainAsync, w as podsAreStale } from "./toolchain-CLGnEUgT.mjs";
9
+ import { d as filesystemBuildCapability, n as buildCacheKey } from "./build-cache-BGwTsIEa.mjs";
10
10
  import { l as artifactCachePolicy, p as resolveOptimizations } from "./errors-DHm_U5gv.mjs";
11
- import { a as nativeTransferRefusal } from "./client-xsdxrhWA.mjs";
12
- import { a as deviceModelRefusal, h as resolveDeviceType, m as resolveConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-Be0UeVZU.mjs";
11
+ import { a as nativeTransferRefusal } from "./client-BTUH8TF1.mjs";
12
+ import { a as deviceModelRefusal, h as resolveDeviceType, m as resolveConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-BMpQIug0.mjs";
13
13
  import { r as gateProfileForDevice } from "./ios-signing-BJzvDPfU.mjs";
14
- import { s as explainBuildMiss, u as skippedMissReason } from "./prebuild-BDpToDgR.mjs";
15
- import { n as planFlagRefusal, t as planCachedBuild } from "./build-plan-CBqYbzYM.mjs";
16
- import { t as IosRecipeRefusal } from "./ios-project-D8Jcy_br.mjs";
17
- import { c as iosProcessRuntime, t as DEFAULT_DEPS } from "./dependencies-BGokZ-Ng.mjs";
18
- import { a as nativeXcodeSources, i as nativeXcodePackages, n as nativeXcodeInputSnapshot, t as nativeXcodeHasPackages } from "./native-xcode-inputs-B1W8SrxB.mjs";
14
+ import { a as nativeXcodeSources, i as nativeXcodePackages, n as nativeXcodeInputSnapshot, t as nativeXcodeHasPackages } from "./native-xcode-inputs-DV8jr3kJ.mjs";
15
+ import { s as explainBuildMiss, u as skippedMissReason } from "./prebuild-Bqp0LFGN.mjs";
16
+ import { n as planFlagRefusal, t as planCachedBuild } from "./build-plan-CWyjMPKo.mjs";
17
+ import { t as IosRecipeRefusal } from "./ios-project-DJYptOCh.mjs";
18
+ import { c as iosProcessRuntime, t as DEFAULT_DEPS } from "./dependencies-CHNqX6Pr.mjs";
19
19
  import { existsSync } from "node:fs";
20
20
  import { join } from "node:path";
21
21
  //#region src/integrations/native-xcode-ios.ts
@@ -1,5 +1,5 @@
1
1
  import { ensurePrivateDir, rotateLog } from "@stim-cli/core";
2
- import { LEVELS as LEVELS$1, SOURCES as SOURCES$1, createNdjsonTail, levelRank, parseNdjsonLine, parseNdjsonText, readNdjsonGenerations as readNdjsonGenerations$1, runId } from "@stim-cli/core/state";
2
+ import { LEVELS as LEVELS$1, SOURCES as SOURCES$1, createNdjsonTail, levelRank, parseNdjsonLine, parseNdjsonText as parseNdjsonText$1, readNdjsonGenerations as readNdjsonGenerations$1, runId } from "@stim-cli/core/state";
3
3
  import { dirname } from "path";
4
4
  import { closeSync, openSync, writeSync } from "fs";
5
5
  //#region src/ndjson.ts
@@ -115,4 +115,4 @@ function stamp(record) {
115
115
  };
116
116
  }
117
117
  //#endregion
118
- export { levelRank as a, readNdjsonGenerations$1 as c, createNdjsonWriter as i, SOURCES$1 as n, parseNdjsonLine as o, createNdjsonTail as r, parseNdjsonText as s, LEVELS$1 as t };
118
+ export { levelRank as a, readNdjsonGenerations$1 as c, createNdjsonWriter as i, SOURCES$1 as n, parseNdjsonLine as o, createNdjsonTail as r, parseNdjsonText$1 as s, LEVELS$1 as t };
@@ -1,4 +1,4 @@
1
- import { c as IosToolchain, g as CompilationCacheActivity, h as CcacheActivity, i as AndroidBuildOptions, l as WorkerToolchain, p as Optimizations, r as SwiftpmArtifactToolchain, t as NativeGradleArtifactReceipt } from "./android-project-DUGMbq28.mjs";
1
+ import { _ as CompilationCacheActivity, g as CcacheActivity, i as AndroidBuildOptions, l as IosToolchain, m as Optimizations, r as SwiftpmArtifactToolchain, t as NativeGradleArtifactReceipt, u as WorkerToolchain } from "./android-project-CCEQyYJK.mjs";
2
2
  import { StimContext } from "@stim-cli/core";
3
3
  import { BuildFingerprintSource, BuildReactNativeArtifactQuery, BuildStartParams, BuildSwiftpmArtifactQuery } from "@stim-cli/core/protocol";
4
4
  //#region src/offload/react-native-artifact.d.ts
@@ -1,28 +1,28 @@
1
1
  import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, k as workspaceLogsDir$1 } from "./workspace-state-BjqdjnJR.mjs";
3
- import { k as writeConfigSetting } from "./config-Cn94Jc0g.mjs";
2
+ import { E as workspaceDir, k as workspaceLogsDir$1 } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { k as writeConfigSetting } from "./config-AbUjIBOQ.mjs";
4
4
  import { n as stripAnsi } from "./process-output-Fpl8PYi8.mjs";
5
5
  import { o as git, s as gitAsync } from "./operation-exec-Dp4FuIGR.mjs";
6
- import { b as iosProjectDirSetting, d as androidLayoutSetting } from "./settings-BDVI8Ivc.mjs";
7
- import { f as projectRegistry, g as selectNativeXcodeProject } from "./project-DYj-HVx6.mjs";
8
- import { s as parseNdjsonText } from "./ndjson-Dy2W4vRa.mjs";
9
- import { Tn as processContext, n as CCACHE_UNAVAILABLE, s as resolveCcache } from "./ccache-BWTze1Ls.mjs";
10
- import { O as runPodInstall, T as readPodState, b as useJdkMajor, i as availableIphone, w as podsAreStale, x as workerToolchain } from "./toolchain-CbCG6C5Z.mjs";
11
- import { S as refingerprintAfterMutation, i as compareSourceLists, m as fingerprintProject } from "./build-cache-gBJ-WKzA.mjs";
12
- import { _ as unmetNodePin, g as projectNodeLine, h as pathNodeVersion, v as withProjectNode } from "./server-expo-ABQs2XFA.mjs";
13
- import { C as COMPILATION_CACHE_CORRUPT, b as validateGradleManifest, f as reactNativeArtifactReceipt, g as gradleStateDirectories, h as gradleOffloadInputs, m as reactNativeBuildQuery, p as reactNativeArtifactToolchain, v as nativeGradleOutputs, w as clearCorruptCompilationCache, x as verifyGradleTransfer } from "./client-xsdxrhWA.mjs";
6
+ import { b as iosProjectDirSetting, d as androidLayoutSetting } from "./settings-D776ygML.mjs";
7
+ import { f as projectRegistry, g as selectNativeXcodeProject } from "./project-D1n0K4yg.mjs";
8
+ import { s as parseNdjsonText$1 } from "./ndjson-CrjIsGzw.mjs";
9
+ import { Tn as processContext, n as CCACHE_UNAVAILABLE, s as resolveCcache } from "./ccache-DsDkdP72.mjs";
10
+ import { O as runPodInstall, T as readPodState, b as useJdkMajor, i as availableIphone, w as podsAreStale, x as workerToolchain } from "./toolchain-CLGnEUgT.mjs";
11
+ import { S as refingerprintAfterMutation, i as compareSourceLists, m as fingerprintProject } from "./build-cache-BGwTsIEa.mjs";
12
+ import { _ as unmetNodePin, g as projectNodeLine, h as pathNodeVersion, v as withProjectNode } from "./server-expo-bB1VV2k-.mjs";
13
+ import { C as COMPILATION_CACHE_CORRUPT, b as validateGradleManifest, f as reactNativeArtifactReceipt, g as gradleStateDirectories, h as gradleOffloadInputs, m as reactNativeBuildQuery, p as reactNativeArtifactToolchain, v as nativeGradleOutputs, w as clearCorruptCompilationCache, x as verifyGradleTransfer } from "./client-BTUH8TF1.mjs";
14
14
  import { n as fingerprintNativeInputs, r as manifestDigest } from "./native-inputs-TRTTTRxt.mjs";
15
15
  import { a as sourceManifest, o as verifyNativeTransfer } from "./native-source-D1AzWiuP.mjs";
16
- import { n as buildAndroid, o as gradlewPath, r as buildIos, u as assembleTaskFor } from "./react-native-build-DaK2IFyP.mjs";
17
- import { f as podAction } from "./support-Be0UeVZU.mjs";
18
- import { a as runPrebuild, r as recordPrebuild, t as planPrebuild } from "./prebuild-BDpToDgR.mjs";
19
- import { g as dumpApkManifest, p as apkPackage } from "./support-CNg_YsOk.mjs";
20
- import { n as buildAndroidOperation, t as buildIosOperation } from "./build-hS0QyFlQ.mjs";
21
- import { i as stageBundle, n as resolveBundleExtras } from "./stage-F4cAfJGi.mjs";
22
- import { t as logLines } from "./run-DaCeNKRm.mjs";
23
- import { r as nativeXcodeMetadataDirectories } from "./native-xcode-inputs-B1W8SrxB.mjs";
24
- import { n as swiftpmArtifactInputs, r as swiftpmArtifactSnapshot, t as readSwiftpmArtifactToolchain } from "./swiftpm-artifact-inputs-uPqYvGBv.mjs";
25
- import { a as nativeGradleWorkerArtifactIdentity, i as nativeGradleArtifactSnapshotFromReceipt, o as nativeGradleWorkerScope } from "./native-gradle-artifact-inputs-C13qT7R_.mjs";
16
+ import { n as buildAndroid, o as gradlewPath, r as buildIos, u as assembleTaskFor } from "./react-native-build-D58bIqV9.mjs";
17
+ import { f as podAction } from "./support-BMpQIug0.mjs";
18
+ import { r as nativeXcodeMetadataDirectories } from "./native-xcode-inputs-DV8jr3kJ.mjs";
19
+ import { a as runPrebuild, r as recordPrebuild, t as planPrebuild } from "./prebuild-Bqp0LFGN.mjs";
20
+ import { g as dumpApkManifest, p as apkPackage } from "./support-PFyTkrnr.mjs";
21
+ import { n as buildAndroidOperation, t as buildIosOperation } from "./build-DtCU9Kim.mjs";
22
+ import { i as stageBundle, n as resolveBundleExtras } from "./stage-BuHuRj1y.mjs";
23
+ import { t as logLines } from "./run-BQAmrohh.mjs";
24
+ import { n as swiftpmArtifactInputs, r as swiftpmArtifactSnapshot, t as readSwiftpmArtifactToolchain } from "./swiftpm-artifact-inputs-Cddq6jN2.mjs";
25
+ import { a as nativeGradleWorkerArtifactIdentity, i as nativeGradleArtifactSnapshotFromReceipt, o as nativeGradleWorkerScope } from "./native-gradle-artifact-inputs-Cw4P6Gyr.mjs";
26
26
  import { createHash } from "node:crypto";
27
27
  import { chmodSync, constants, copyFileSync, cpSync, createReadStream, createWriteStream, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, readlinkSync, realpathSync, renameSync, rmSync, statSync, symlinkSync, writeFileSync } from "node:fs";
28
28
  import { isDeepStrictEqual } from "node:util";
@@ -970,7 +970,7 @@ async function compileNativeIos(job, root, log, time) {
970
970
  message: error.message
971
971
  };
972
972
  } finally {
973
- if (existsSync(logFile)) for (const record of parseNdjsonText(readFileSync(logFile, "utf8"))) log.write(record);
973
+ if (existsSync(logFile)) for (const record of parseNdjsonText$1(readFileSync(logFile, "utf8"))) log.write(record);
974
974
  }
975
975
  }
976
976
  async function validateNativeAndroidOutputs(job, root) {
@@ -1069,7 +1069,7 @@ async function compileNativeAndroid(job, root, log, time) {
1069
1069
  } finally {
1070
1070
  process.off("SIGTERM", stop);
1071
1071
  if (idleMs <= 0) stopGradleDaemons(gradlew, 6e4);
1072
- if (existsSync(logFile)) for (const record of parseNdjsonText(readFileSync(logFile, "utf8"))) log.write(record);
1072
+ if (existsSync(logFile)) for (const record of parseNdjsonText$1(readFileSync(logFile, "utf8"))) log.write(record);
1073
1073
  }
1074
1074
  }
1075
1075
  async function compileMacos(context, job, root, log, time) {
@@ -1,6 +1,6 @@
1
1
  import { S as process_identity_exports } from "./exec-aULwtNly.mjs";
2
- import { c as withWorkspaceStateLock, d as writeWorkspaceState, r as readWorkspaceState } from "./workspace-state-BjqdjnJR.mjs";
3
- import { c as pidExists } from "./metro-CvyD-xwe.mjs";
2
+ import { c as withWorkspaceStateLock, d as writeWorkspaceState, r as readWorkspaceState } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { c as pidExists } from "./metro-BMQHczcf.mjs";
4
4
  import { realpathSync } from "node:fs";
5
5
  //#region src/collector/state.ts
6
6
  function collectorRoot(root) {
@@ -1,7 +1,7 @@
1
- import { r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-BjqdjnJR.mjs";
2
- import { U as parseDeviceSlotKey, V as deviceSlotKey } from "./config-Cn94Jc0g.mjs";
3
- import { $ as removeMetroReverses } from "./android-DriNoAVy.mjs";
4
- import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-CdgaiuyP.mjs";
1
+ import { r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-DGwkPXwq.mjs";
2
+ import { U as parseDeviceSlotKey, V as deviceSlotKey } from "./config-AbUjIBOQ.mjs";
3
+ import { $ as removeMetroReverses } from "./android-BHKgeOuq.mjs";
4
+ import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-DvZENAL-.mjs";
5
5
  import { isJsonObject } from "@stim-cli/core/state";
6
6
  //#region src/device-host/hosted-ios.ts
7
7
  async function prepareHostedIos(machine, selectors, recorded, mode) {
@@ -1,4 +1,4 @@
1
- import { r as buildPlacementSettings } from "./selection-Bs8phwhN.mjs";
1
+ import { r as buildPlacementSettings } from "./selection-D1ZDzHFX.mjs";
2
2
  //#region src/placement-log.ts
3
3
  /** `machine` is `local` when the run stays on this machine. */
4
4
  function placementRecord(input) {
@@ -1,9 +1,9 @@
1
- import { _ as loadConfig$1 } from "./config-Cn94Jc0g.mjs";
2
- import { Tn as processContext } from "./ccache-BWTze1Ls.mjs";
3
- import { _ as hostingMachines } from "./selection-Bs8phwhN.mjs";
4
- import { r as readHostedNative } from "./ios-state-BZ03NFgF.mjs";
5
- import { n as buildPreferenceRefusal } from "./settings-payload-cm60Zhib.mjs";
6
- import { r as probeHost, t as automaticDevicePlacement } from "./auto-placement-z-H5pJza.mjs";
1
+ import { _ as loadConfig$1 } from "./config-AbUjIBOQ.mjs";
2
+ import { Tn as processContext } from "./ccache-DsDkdP72.mjs";
3
+ import { _ as hostingMachines } from "./selection-D1ZDzHFX.mjs";
4
+ import { r as readHostedNative } from "./ios-state-Ce_dystM.mjs";
5
+ import { n as buildPreferenceRefusal } from "./settings-payload-_aatELz2.mjs";
6
+ import { r as probeHost, t as automaticDevicePlacement } from "./auto-placement-C8sJsyMN.mjs";
7
7
  import { automaticMachineEnabled } from "@stim-cli/core/state";
8
8
  //#region src/device-host/plan-placement.ts
9
9
  const DOCTOR_REMEDY = "Run `stim doctor` to check the hosts and settings placement uses.";
@@ -1,6 +1,6 @@
1
- import { p as getProject } from "./config-Cn94Jc0g.mjs";
2
- import { n as findCommandWorkspace } from "./project-DYj-HVx6.mjs";
3
- import { n as getNamedPort, t as clearNamedPorts } from "./named-ports-BCyMWA6b.mjs";
1
+ import { p as getProject } from "./config-AbUjIBOQ.mjs";
2
+ import { n as findCommandWorkspace } from "./project-D1n0K4yg.mjs";
3
+ import { n as getNamedPort, t as clearNamedPorts } from "./named-ports-DcktE2Pw.mjs";
4
4
  //#region src/commands/ports.ts
5
5
  async function inProject(action) {
6
6
  try {
@@ -1,15 +1,15 @@
1
1
  import { E as debugLog, _ as spawnDeclared, t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { M as withDirLock$1, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, y as sharedBuildCache } from "./workspace-state-BjqdjnJR.mjs";
2
+ import { M as withDirLock$1, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, y as sharedBuildCache } from "./workspace-state-DGwkPXwq.mjs";
3
3
  import { n as stripAnsi, r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
4
- import { m as shortHash } from "./command-output-Dj-WT4BP.mjs";
4
+ import { m as shortHash } from "./command-output-DjCsmzLZ.mjs";
5
5
  import { o as git, s as gitAsync } from "./operation-exec-Dp4FuIGR.mjs";
6
- import { St as gitCommonDirOnDisk } from "./settings-BDVI8Ivc.mjs";
7
- import { v as detectIsExpo } from "./project-DYj-HVx6.mjs";
8
- import { Vn as remoteCliInvocation } from "./ccache-BWTze1Ls.mjs";
9
- import { r as register } from "./cache-manifest-DEjqGGat.mjs";
10
- import { $ as STIM_VERSION } from "./workspaces-DFbj07jp.mjs";
11
- import { D as storedSources, m as fingerprintProject, o as diffFingerprintSources, p as fingerprintOptions, u as expoEnvFiles, v as packageIn } from "./build-cache-gBJ-WKzA.mjs";
12
- import { i as expoBinRefusal, o as expoSdkMajor, r as expoBinPath, s as expoTelemetryEnv } from "./server-expo-ABQs2XFA.mjs";
6
+ import { Ct as gitCommonDirOnDisk } from "./settings-D776ygML.mjs";
7
+ import { v as detectIsExpo } from "./project-D1n0K4yg.mjs";
8
+ import { Vn as remoteCliInvocation } from "./ccache-DsDkdP72.mjs";
9
+ import { r as register } from "./cache-manifest-evF_zJ9U.mjs";
10
+ import { nt as STIM_VERSION } from "./workspaces-CvSYD_78.mjs";
11
+ import { D as storedSources, m as fingerprintProject, o as diffFingerprintSources, p as fingerprintOptions, u as expoEnvFiles, v as packageIn } from "./build-cache-BGwTsIEa.mjs";
12
+ import { i as expoBinRefusal, o as expoSdkMajor, r as expoBinPath, s as expoTelemetryEnv } from "./server-expo-bB1VV2k-.mjs";
13
13
  import { t as readDoctorFingerprint } from "./doctor-fingerprint-o7ZI9YLn.mjs";
14
14
  import { createRequire } from "node:module";
15
15
  import { createHash } from "node:crypto";