stim 1.28.0 → 1.30.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 (155) hide show
  1. package/dist/{acquire-artifact-CKByBnTD.mjs → acquire-artifact-CrZ4rEbI.mjs} +1 -1
  2. package/dist/{act-8iswyfRa.mjs → act-BaKjDWGw.mjs} +479 -29
  3. package/dist/{activity-DRMg4_mD.mjs → activity-BTaUf0tc.mjs} +6 -5
  4. package/dist/{agent-device-usage-output-tE90fDdo.mjs → agent-device-usage-output-DYBpO17K.mjs} +4 -4
  5. package/dist/{android-YWCbmkVK.mjs → android-BCYLwmH6.mjs} +5 -5
  6. package/dist/{android-D577ApKG.mjs → android-BEQUDpOg.mjs} +1 -1
  7. package/dist/{android-CHmSU4B4.mjs → android-BWqdDK6R.mjs} +44 -42
  8. package/dist/{android-CsPs-7Mg.mjs → android-DdKG6lyD.mjs} +44 -35
  9. package/dist/{android-cas-_aDifWW0.mjs → android-cas-BH6K12__.mjs} +4 -4
  10. package/dist/{android-project-DUGMbq28.d.mts → android-project-CCEQyYJK.d.mts} +6 -2
  11. package/dist/api.d.mts +7 -4
  12. package/dist/api.mjs +27 -27
  13. package/dist/{apk-signed-tail-CQbwM0qO.mjs → apk-signed-tail-B8kw4a8K.mjs} +2 -2
  14. package/dist/{artifact-DYtHjxsn.mjs → artifact-DTHXcmQ3.mjs} +12 -12
  15. package/dist/{artifact-bFkfD3vf.mjs → artifact-M6W2l-xh.mjs} +12 -12
  16. package/dist/{auto-placement-BVqs8AJi.mjs → auto-placement-CZaWDmcY.mjs} +10 -10
  17. package/dist/{browser-web-BUaLcafY.mjs → browser-web-JQ7lFej3.mjs} +12 -12
  18. package/dist/{build-cQURy_KW.mjs → build-C2ZWoCmg.mjs} +23 -23
  19. package/dist/{build-cache-CZULpXVl.mjs → build-cache-DlC3owap.mjs} +4 -4
  20. package/dist/{build-plan-CxoYfxsc.mjs → build-plan-J3iRR3gI.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-Bm_A1xX9.mjs → ccache-B8gY50-h.mjs} +18 -18
  24. package/dist/{cli-CpbaLDa7.mjs → cli-xRPXJPtA.mjs} +19 -19
  25. package/dist/cli.mjs +1 -1
  26. package/dist/{client-YxCer6ab.mjs → client-DrHykA24.mjs} +5 -5
  27. package/dist/collector-run.mjs +5 -5
  28. package/dist/{command-output-C8R1KIvi.mjs → command-output-BBW8eWPL.mjs} +1 -1
  29. package/dist/{config-Cn94Jc0g.mjs → config-AbUjIBOQ.mjs} +121 -19
  30. package/dist/{dependencies-DKeMzwXY.mjs → dependencies-vUh9mp5z.mjs} +39 -38
  31. package/dist/{dependency-state-CojA2o0t.mjs → dependency-state-CPKAKCZ8.mjs} +1 -1
  32. package/dist/{dev-client-D-BW5uiq.mjs → dev-client-CASgAOu7.mjs} +2 -2
  33. package/dist/device-ChnO7bR9.mjs +761 -0
  34. package/dist/device-CsIdRXfm.mjs +175 -0
  35. package/dist/{device-CgXfbcz5.mjs → device-android-CcdQqQWg.mjs} +28 -195
  36. package/dist/{device-capacity-Cd8lMSn3.mjs → device-capacity-C5C_jOQd.mjs} +11 -11
  37. package/dist/device-host-worker.mjs +44 -35
  38. package/dist/{device-ios-Cc9ulihb.mjs → device-ios-DbmtPIiw.mjs} +28 -18
  39. package/dist/{device-lease-run-Mtzp4THX.mjs → device-lease-run-Do6zYA7y.mjs} +4 -4
  40. package/dist/{device-pool-eRz6DtCg.mjs → device-pool-CpoYiCGO.mjs} +3 -3
  41. package/dist/{device-eeK95Lir.mjs → device-provision-B5Ms94qY.mjs} +11 -302
  42. package/dist/{doctor-xf7ht-5n.mjs → doctor-CJSB5q-s.mjs} +20 -20
  43. package/dist/{doctor-Bz_ouYAW.mjs → doctor-CLE4AZEI.mjs} +20 -15
  44. package/dist/{doctor-C2QyhejJ.mjs → doctor-CpfbYh3Q.mjs} +1 -1
  45. package/dist/doctor-fingerprint.mjs +1 -1
  46. package/dist/{doctor-watchman-BTW82PDC.mjs → doctor-watchman-D1IyMle9.mjs} +4 -4
  47. package/dist/{eas-build-Dm6q68QY.mjs → eas-build-DIDOHw2P.mjs} +2 -2
  48. package/dist/{eas-fallback-DajNpxf-.mjs → eas-fallback-DVS9oBSc.mjs} +4 -4
  49. package/dist/{eas-session-ledger-CBFo_Uo1.mjs → eas-session-ledger-CW3l-inB.mjs} +5 -5
  50. package/dist/{error-diagnostics-D1QfyJzQ.mjs → error-diagnostics-XJ9eWdtq.mjs} +8 -8
  51. package/dist/{gc-PLFwb0k4.mjs → gc-BVIcxCxE.mjs} +2 -2
  52. package/dist/{gc-DM5oMm-J.mjs → gc-Co7PE36D.mjs} +80 -18
  53. package/dist/{guide-C4I46XAk.mjs → guide-DkepBgHT.mjs} +235 -34
  54. package/dist/{hosted-android-DlaKLbW0.mjs → hosted-android-Du7NxufJ.mjs} +3 -3
  55. package/dist/{hosted-client-DDRm9hPJ.mjs → hosted-client-Cect92SZ.mjs} +3 -3
  56. package/dist/{hosted-logs-bSebOKbz.mjs → hosted-logs-Opcjv1Lr.mjs} +17 -8
  57. package/dist/{hosted-logs-sync-B0c53W_c.mjs → hosted-logs-sync-wsI7N1Hv.mjs} +7 -11
  58. package/dist/{hosted-macos-B7-8Pv4H.mjs → hosted-macos-BP9Kucat.mjs} +5 -5
  59. package/dist/{hosted-native-CDe33CSr.mjs → hosted-native-DmdLSmvu.mjs} +9 -8
  60. package/dist/{idle-shutdown-CQ0QwU9J.mjs → idle-shutdown-BcMN_cLm.mjs} +7 -7
  61. package/dist/{ios-B1HvafEG.mjs → ios-BFkBHuRT.mjs} +8 -8
  62. package/dist/{ios-tg4tp3q1.mjs → ios-CG0IsLtt.mjs} +29 -29
  63. package/dist/{ios-B1DYuOjh.mjs → ios-CXnoVO_z.mjs} +4 -4
  64. package/dist/{ios-device-B4elVFKi.mjs → ios-device-ClSfuu-_.mjs} +1 -1
  65. package/dist/{ios-project-CR4mZ7CH.mjs → ios-project-BM9TbTE7.mjs} +7 -7
  66. package/dist/{ios-state-BPHqMDdZ.mjs → ios-state-Ce_dystM.mjs} +1 -1
  67. package/dist/{js-swap-CVpSW1fn.mjs → js-swap-9Rx-5Nqz.mjs} +4 -4
  68. package/dist/{launch-DoySmhjz.mjs → launch-DvJV1Mx4.mjs} +19 -19
  69. package/dist/{lightened-DFAJgfIk.mjs → lightened-23pqe7LS.mjs} +4 -4
  70. package/dist/{logs-BGsW7iPe.mjs → logs-DJgZlf2K.mjs} +9 -8
  71. package/dist/{logs-DI5ILkYB.mjs → logs-Pkeh3wZk.mjs} +7 -6
  72. package/dist/{macos-Bo9st9Di.mjs → macos-DPvPQadc.mjs} +20 -20
  73. package/dist/{macos-C12RMJQF.mjs → macos-Du07NsOB.mjs} +1 -1
  74. package/dist/macos-run.mjs +1 -1
  75. package/dist/maintenance-run.mjs +13 -9
  76. package/dist/{metro-BnhXV2Mj.mjs → metro-BMQHczcf.mjs} +2 -2
  77. package/dist/{metro-request-DXyKjVDF.mjs → metro-request-BtF7ox53.mjs} +1 -1
  78. package/dist/{named-ports-Phoi2POD.mjs → named-ports-DcktE2Pw.mjs} +2 -2
  79. package/dist/{native-android-vxgtLD7w.mjs → native-android-CBOM1_gB.mjs} +16 -16
  80. package/dist/{native-gradle-artifact-inputs-BN96IVw8.mjs → native-gradle-artifact-inputs-D_iAfPuS.mjs} +3 -3
  81. package/dist/{native-runtime-DG4Rodzj.mjs → native-runtime-D4cTwU0Z.mjs} +6 -6
  82. package/dist/{native-xcode-inputs-BKarCoKg.mjs → native-xcode-inputs-BF-ogSnG.mjs} +2 -2
  83. package/dist/{native-xcode-ios-8A-efGa5.mjs → native-xcode-ios-DwJBfMP6.mjs} +15 -15
  84. package/dist/{ndjson-Dy2W4vRa.mjs → ndjson-CrjIsGzw.mjs} +2 -2
  85. package/dist/offload-worker.d.mts +1 -1
  86. package/dist/offload-worker.mjs +22 -22
  87. package/dist/{ownership-DJCq48IJ.mjs → ownership-Dtz9G5Gl.mjs} +2 -2
  88. package/dist/{phone-reverses-BzTa8g1F.mjs → phone-reverses-CvhhkGMH.mjs} +4 -4
  89. package/dist/{placement-log-Cvhta5ib.mjs → placement-log-CRR_TE1r.mjs} +1 -1
  90. package/dist/{plan-placement-WkZdccuN.mjs → plan-placement-CdLc-pTb.mjs} +6 -6
  91. package/dist/{ports-UV4mJgyC.mjs → ports-g4N_cfyg.mjs} +3 -3
  92. package/dist/{prebuild-k8d_tqOq.mjs → prebuild-DBJMhwSS.mjs} +9 -9
  93. package/dist/{project-Sui52ywT.mjs → project-DPQjnpcI.mjs} +15 -15
  94. package/dist/{react-native-android-DANlGGQf.mjs → react-native-android-idMWOwkX.mjs} +24 -24
  95. package/dist/{react-native-build-jUHnIfZ9.mjs → react-native-build-BSoh4HkH.mjs} +7 -7
  96. package/dist/{react-native-doctor-DCWRjS7K.mjs → react-native-doctor-CYibY8-4.mjs} +9 -8
  97. package/dist/{react-native-ios-BwMsFMXi.mjs → react-native-ios-13KIIOOy.mjs} +16 -15
  98. package/dist/{recordings-iy0mkm7b.mjs → recordings-CHMaF73C.mjs} +1 -1
  99. package/dist/{reload-Bj7QyuDy.mjs → reload-B9DZOjcV.mjs} +1 -1
  100. package/dist/{reload-c_uEyc_X.mjs → reload-BUQI3dSu.mjs} +14 -14
  101. package/dist/{remote-DFlpAqdV.mjs → remote-C-RGHhAP.mjs} +8 -8
  102. package/dist/{result-BIcXREyC.mjs → result-W4HCum4A.mjs} +16 -16
  103. package/dist/{run-y2HwyNvg.mjs → run-BQAmrohh.mjs} +2 -2
  104. package/dist/{selection-CXgM_VK_.mjs → selection-PCMT97XD.mjs} +105 -62
  105. package/dist/{server-bare-2N4vSRZG.mjs → server-bare-CEQdB_F4.mjs} +37 -1
  106. package/dist/{server-command-qneHPcRI.mjs → server-command-oqi3TDy7.mjs} +5 -5
  107. package/dist/server-expo-BUFAq2In.mjs +2 -0
  108. package/dist/{server-expo-Ccm9zB0o.mjs → server-expo-C1K07shx.mjs} +8 -5
  109. package/dist/{settings-Cfd_Q6ys.mjs → settings-CKlMOmhj.mjs} +2 -2
  110. package/dist/{settings-CY5JZlNN.mjs → settings-D776ygML.mjs} +1 -1
  111. package/dist/{settings-Djl-mpjX.mjs → settings-D9LtQaUw.mjs} +2 -1
  112. package/dist/{settings-payload-DwQiEMCn.mjs → settings-payload-CE-NZ6Lq.mjs} +4 -4
  113. package/dist/{settings-write-CJpjkeAd.mjs → settings-write-D7Xwa_-M.mjs} +5 -5
  114. package/dist/settings.schema.json +58 -9
  115. package/dist/{simslim-DCQwzoPy.mjs → simslim-CbpHERcv.mjs} +1 -1
  116. package/dist/{slot-launch-BpmanOnk.mjs → slot-launch-CeIK1iUI.mjs} +6 -6
  117. package/dist/{stage-CmugrSG5.mjs → stage-Blqe6bWb.mjs} +1 -1
  118. package/dist/{start-DYLk6GXn.mjs → start-B7J5a9nS.mjs} +11 -11
  119. package/dist/{start-CHH3zgIU.mjs → start-CvP2pJjc.mjs} +1 -1
  120. package/dist/{state-BXC1Lfxw.mjs → state-C2AUjjhg.mjs} +1 -1
  121. package/dist/{state-B2QJbDwz.mjs → state-D5ZxwCGJ.mjs} +2 -2
  122. package/dist/{stats-DxKqhcGp.mjs → stats-Uo7l8OAk.mjs} +4 -4
  123. package/dist/{status-7ULDEJ1e.mjs → status-CK7ZoEhV.mjs} +2 -2
  124. package/dist/{status-D_Ljc89p.mjs → status-CqJI1TgG.mjs} +1 -1
  125. package/dist/{status-BHCkOZga.mjs → status-_rWXFSO7.mjs} +24 -24
  126. package/dist/{status-watch-BmsPqYSU.mjs → status-watch-CnSyXUmj.mjs} +4 -4
  127. package/dist/status-worker.mjs +1 -1
  128. package/dist/{stim-desktop-CbWo21kb.mjs → stim-desktop-CYXLFpFS.mjs} +1 -1
  129. package/dist/{stop-b2pouxAO.mjs → stop-Bogo9oO2.mjs} +2 -2
  130. package/dist/{stop-DQvE-P76.mjs → stop-CMVfaA-6.mjs} +4 -4
  131. package/dist/{stop-D-dGE9gh.mjs → stop-CnF9ixYe.mjs} +20 -19
  132. package/dist/supervisor-run.d.mts +1 -0
  133. package/dist/supervisor-run.mjs +23 -19
  134. package/dist/{support-04IhBUTT.mjs → support-BGqpYMV8.mjs} +15 -11
  135. package/dist/{support-BtlJKjyQ.mjs → support-DUevTPur.mjs} +9 -9
  136. package/dist/{swiftpm-artifact-inputs-Cj2UpmPN.mjs → swiftpm-artifact-inputs-BcJk6-3u.mjs} +1 -1
  137. package/dist/{swiftpm-macos-BhF2stxY.mjs → swiftpm-macos-DBrmoocG.mjs} +8 -8
  138. package/dist/toolchain-Cw9VVHOY.mjs +2 -0
  139. package/dist/{toolchain-mLA_km-b.mjs → toolchain-DLdoyxIt.mjs} +19 -11
  140. package/dist/{trigger-DMou-X7j.mjs → trigger-CfnOfpDd.mjs} +1 -1
  141. package/dist/trigger-DBZ-GBrl.mjs +2 -0
  142. package/dist/{warm-progress-B0Vpuvpl.mjs → warm-progress-DQ2wQZKp.mjs} +3 -3
  143. package/dist/web-CI_qCRPw.mjs +2 -0
  144. package/dist/{web-BYmK0TjL.mjs → web-g9U7L1sR.mjs} +8 -8
  145. package/dist/web-run.mjs +5 -5
  146. package/dist/{workspace-state-kIZrdlSg.mjs → workspace-state-DGwkPXwq.mjs} +2 -2
  147. package/dist/{workspaces-CmOcceDN.mjs → workspaces-7_RWoi6c.mjs} +11 -11
  148. package/dist/{worktree-nliAoHxB.mjs → worktree-DEet9H3p.mjs} +1 -1
  149. package/dist/{worktree-2dk5edza.mjs → worktree-qKJ3x07S.mjs} +25 -25
  150. package/package.json +7 -7
  151. package/shim/bundle-response.cjs +37 -0
  152. package/dist/server-expo-WulkyAwT.mjs +0 -2
  153. package/dist/toolchain-qktiV8xc.mjs +0 -2
  154. package/dist/trigger-qp2ji5wE.mjs +0 -2
  155. package/dist/web-CrVLVQZY.mjs +0 -2
@@ -1,11 +1,11 @@
1
1
  import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, k as workspaceLogsDir$1 } from "./workspace-state-kIZrdlSg.mjs";
3
- import { B as deviceSlotFileKey, q as validateDeviceSlot, rt as parseMachine$1 } from "./config-Cn94Jc0g.mjs";
4
- import { l as phaseLine } from "./command-output-C8R1KIvi.mjs";
5
- import { n as macosDir } from "./state-BXC1Lfxw.mjs";
6
- import { n as androidLogGroups, r as isAndroidCrashText } from "./android-D577ApKG.mjs";
7
- import { c as readNdjsonGenerations$1, i as createNdjsonWriter } from "./ndjson-Dy2W4vRa.mjs";
8
- import { c as call } from "./hosted-client-DDRm9hPJ.mjs";
2
+ import { E as workspaceDir, k as workspaceLogsDir$1 } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { B as deviceSlotFileKey, it as parseMachine$1, q as validateDeviceSlot } from "./config-AbUjIBOQ.mjs";
4
+ import { l as phaseLine } from "./command-output-BBW8eWPL.mjs";
5
+ import { n as macosDir } from "./state-C2AUjjhg.mjs";
6
+ import { n as androidLogGroups, r as isAndroidCrashText } from "./android-BEQUDpOg.mjs";
7
+ import { c as readNdjsonGenerations$1, i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
8
+ import { c as call } from "./hosted-client-Cect92SZ.mjs";
9
9
  import { mkdirSync, readFileSync, realpathSync, renameSync, rmSync, writeFileSync } from "node:fs";
10
10
  import { dirname, join } from "node:path";
11
11
  import { LOG_ROTATE_BYTES, ambientWrite, withDirLockAsync } from "@stim-cli/core";
@@ -47,11 +47,20 @@ async function removeAgentAccess(file, keep) {
47
47
  }
48
48
  }
49
49
  async function agentAccess(file, credential, grant, note, platform = "macos") {
50
+ const machine = parseMachine$1(credential.machine);
51
+ if (machine?.transport === "local") {
52
+ if (grant !== void 0) note(`Agent control of apps hosted on ${credential.machine} needs a tailnet machine; the local network does not carry it.`);
53
+ await removeAgentAccess(file);
54
+ return {
55
+ driver: "none",
56
+ setting: "hosting.agentDriver"
57
+ };
58
+ }
50
59
  const parsed = grant === void 0 ? null : parseHostedAgentGrant(grant);
51
60
  const issued = parsed && "token" in parsed ? parsed : null;
52
61
  const loaded = issued ? await agentDriverClient(issued.driver) : null;
53
62
  if (grant !== void 0 && !parsed || loaded && "unavailable" in loaded) note(`${credential.machine} offered agent control this Stim does not support.`);
54
- const port = parseMachine$1(credential.machine)?.port ?? 443;
63
+ const port = machine?.port ?? 443;
55
64
  const client = loaded && "client" in loaded ? loaded.client : null;
56
65
  const target = client ? join(dirname(file), client.configFile) : file;
57
66
  const access = client && issued ? client.access({
@@ -1,8 +1,8 @@
1
- import { n as pullHostedNativeLogs, r as readHostedNativeLogs, t as pullHostedMacosLogs } from "./hosted-logs-bSebOKbz.mjs";
2
- import { l as phaseLine } from "./command-output-C8R1KIvi.mjs";
3
- import { l as connectHost } from "./hosted-client-DDRm9hPJ.mjs";
4
- import { n as readHostedIos, t as readHostedAndroid } from "./ios-state-BPHqMDdZ.mjs";
5
- import "./hosted-macos-B7-8Pv4H.mjs";
1
+ import { n as pullHostedNativeLogs, r as readHostedNativeLogs, t as pullHostedMacosLogs } from "./hosted-logs-Opcjv1Lr.mjs";
2
+ import { l as phaseLine } from "./command-output-BBW8eWPL.mjs";
3
+ import { l as connectHost } from "./hosted-client-Cect92SZ.mjs";
4
+ import { n as readHostedIos, t as readHostedAndroid } from "./ios-state-Ce_dystM.mjs";
5
+ import "./hosted-macos-BP9Kucat.mjs";
6
6
  import { watch } from "node:fs";
7
7
  import { dirname, relative, resolve, sep } from "node:path";
8
8
  import { ambientWrite, configDir } from "@stim-cli/core";
@@ -108,14 +108,10 @@ function followHostedLaunchLogs(root, slot, platform, since, context) {
108
108
  stop
109
109
  };
110
110
  }
111
- async function syncHostedLogs(root, context) {
111
+ async function syncHostedLogs(root, context, includeSlots = true) {
112
112
  const macos = readMacosRecord(root)?.host;
113
113
  const warnings = /* @__PURE__ */ new Set();
114
- return (await Promise.all([
115
- ...macos ? [syncHostedMacosLogs(root, macos, void 0, warnings, "ios", context)] : [],
116
- ...Object.entries(readHostedIos(root)).map(([slot, placement]) => syncHostedMacosLogs(root, placement, slot, warnings, "ios", context)),
117
- ...Object.entries(readHostedAndroid(root)).map(([slot, placement]) => syncHostedMacosLogs(root, placement, slot, warnings, "android", context))
118
- ])).every(Boolean);
114
+ return (await Promise.all([...macos ? [syncHostedMacosLogs(root, macos, void 0, warnings, "ios", context)] : [], ...includeSlots ? [...Object.entries(readHostedIos(root)).map(([slot, placement]) => syncHostedMacosLogs(root, placement, slot, warnings, "ios", context)), ...Object.entries(readHostedAndroid(root)).map(([slot, placement]) => syncHostedMacosLogs(root, placement, slot, warnings, "android", context))] : []])).every(Boolean);
119
115
  }
120
116
  function followHostedLogs(root, failing, context) {
121
117
  const stops = /* @__PURE__ */ new Map();
@@ -1,9 +1,9 @@
1
1
  import { o as cancellableSleep } from "./exec-aULwtNly.mjs";
2
- import { a as agentAccess, i as closeAgentConnection, o as removeAgentAccess, t as pullHostedMacosLogs } from "./hosted-logs-bSebOKbz.mjs";
3
- import { l as phaseLine } from "./command-output-C8R1KIvi.mjs";
4
- import { n as macosDir } from "./state-BXC1Lfxw.mjs";
5
- import { ot as runCancellationSignal } from "./toolchain-mLA_km-b.mjs";
6
- import { _ as stoppedSession, a as SESSION_TIMEOUT_MS, c as call, f as hostedSession, g as sha256, h as settle, i as RESERVE_TIMEOUT_MS, l as connectHost, o as attach, r as PREPARE_TIMEOUT_MS, s as bundleManifest, t as INSTALL_TIMEOUT_MS, u as heldNoLonger, v as unknownSession, y as upload } from "./hosted-client-DDRm9hPJ.mjs";
2
+ import { a as agentAccess, i as closeAgentConnection, o as removeAgentAccess, t as pullHostedMacosLogs } from "./hosted-logs-Opcjv1Lr.mjs";
3
+ import { l as phaseLine } from "./command-output-BBW8eWPL.mjs";
4
+ import { n as macosDir } from "./state-C2AUjjhg.mjs";
5
+ import { st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
6
+ import { _ as stoppedSession, a as SESSION_TIMEOUT_MS, c as call, f as hostedSession, g as sha256, h as settle, i as RESERVE_TIMEOUT_MS, l as connectHost, o as attach, r as PREPARE_TIMEOUT_MS, s as bundleManifest, t as INSTALL_TIMEOUT_MS, u as heldNoLonger, v as unknownSession, y as upload } from "./hosted-client-Cect92SZ.mjs";
7
7
  import { randomUUID } from "node:crypto";
8
8
  import { join } from "node:path";
9
9
  import { ambientContext, ambientWrite } from "@stim-cli/core";
@@ -1,15 +1,15 @@
1
1
  import { o as cancellableSleep, x as withDrainingCancellation } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-kIZrdlSg.mjs";
3
- import { a as agentAccess, i as closeAgentConnection, n as pullHostedNativeLogs, o as removeAgentAccess } from "./hosted-logs-bSebOKbz.mjs";
4
- import { ot as runCancellationSignal } from "./toolchain-mLA_km-b.mjs";
5
- import { _ as stoppedSession, a as SESSION_TIMEOUT_MS, c as call, f as hostedSession, g as sha256, h as settle, i as RESERVE_TIMEOUT_MS, l as connectHost, m as requireHostedAppMode, n as OFFER_TIMEOUT_MS, o as attach, r as PREPARE_TIMEOUT_MS, s as bundleManifest, t as INSTALL_TIMEOUT_MS, u as heldNoLonger, v as unknownSession, y as upload } from "./hosted-client-DDRm9hPJ.mjs";
6
- import { a as requireHostedMetro, i as requestHostedMetro, n as closeHostedMetro } from "./metro-request-DXyKjVDF.mjs";
7
- import { s as writeHostedNative } from "./ios-state-BPHqMDdZ.mjs";
2
+ import { E as workspaceDir, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { a as agentAccess, i as closeAgentConnection, n as pullHostedNativeLogs, o as removeAgentAccess } from "./hosted-logs-Opcjv1Lr.mjs";
4
+ import { st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
5
+ import { _ as stoppedSession, a as SESSION_TIMEOUT_MS, c as call, f as hostedSession, g as sha256, h as settle, i as RESERVE_TIMEOUT_MS, l as connectHost, m as requireHostedAppMode, n as OFFER_TIMEOUT_MS, o as attach, r as PREPARE_TIMEOUT_MS, s as bundleManifest, t as INSTALL_TIMEOUT_MS, u as heldNoLonger, v as unknownSession, y as upload } from "./hosted-client-Cect92SZ.mjs";
6
+ import { a as requireHostedMetro, i as requestHostedMetro, n as closeHostedMetro } from "./metro-request-BtF7ox53.mjs";
7
+ import { s as writeHostedNative } from "./ios-state-Ce_dystM.mjs";
8
8
  import { randomUUID } from "node:crypto";
9
9
  import { readFileSync } from "node:fs";
10
10
  import { join } from "node:path";
11
11
  import { ambientContext, ambientWrite } from "@stim-cli/core";
12
- import { hostedNativeRecords, isJsonObject, parseHostedAndroidDevice, parseHostedChoice, parseHostedDevice, parseHostedNativeOffer, parseHostedNativePlacement, requireAutomaticMachine, unreadableHostedNative } from "@stim-cli/core/state";
12
+ import { hostedMemoryRefusal, hostedNativeRecords, isJsonObject, parseHostedAndroidDevice, parseHostedChoice, parseHostedDevice, parseHostedNativeOffer, parseHostedNativePlacement, requireAutomaticMachine, unreadableHostedNative } from "@stim-cli/core/state";
13
13
  //#region src/device-host/hosted-native.ts
14
14
  function hostingRefusal(machine, error) {
15
15
  return Object.assign(/* @__PURE__ */ new Error(`${machine}: ${error instanceof Error ? error.message : String(error)}`), {
@@ -58,7 +58,8 @@ async function prepareHostedNative(machine, selectors, recorded, platform = "ios
58
58
  if (typeof offer.declined === "string") throw new Error(offer.declined);
59
59
  if (!choice) throw new Error(platform === "ios" ? "No compatible installed iOS simulator runtime was offered." : "No compatible installed Android emulator image was offered.");
60
60
  if (!isJsonObject(offer.capacity) || offer.capacity.available === 0) throw new Error("No hosted device capacity is available.");
61
- if (!isJsonObject(offer.resources) || offer.resources.memoryPressure !== "normal") throw new Error("Host memory pressure is unknown or elevated.");
61
+ const memoryRefusal = hostedMemoryRefusal(isJsonObject(offer.resources) ? offer.resources.memoryPressure : null);
62
+ if (memoryRefusal) throw new Error(memoryRefusal);
62
63
  return {
63
64
  host,
64
65
  choice,
@@ -1,11 +1,11 @@
1
- import { k as workspaceLogsDir$1, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-kIZrdlSg.mjs";
2
- import { V as deviceSlotKey, _ as loadConfig$1 } from "./config-Cn94Jc0g.mjs";
3
- import { o as formatLongDuration } from "./command-output-C8R1KIvi.mjs";
4
- import { i as createNdjsonWriter } from "./ndjson-Dy2W4vRa.mjs";
5
- import { B as workspaceBuildInProgress, P as collectOwnedDeviceActivity, ht as teardownOwnedIosSim, pt as teardownOwnedAvd } from "./workspaces-CmOcceDN.mjs";
1
+ import { k as workspaceLogsDir$1, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-DGwkPXwq.mjs";
2
+ import { V as deviceSlotKey, _ as loadConfig$1 } from "./config-AbUjIBOQ.mjs";
3
+ import { o as formatLongDuration } from "./command-output-BBW8eWPL.mjs";
4
+ import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
5
+ import { B as workspaceBuildInProgress, P as collectOwnedDeviceActivity, ht as teardownOwnedIosSim, pt as teardownOwnedAvd } from "./workspaces-7_RWoi6c.mjs";
6
6
  import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
7
- import { _ as workspaceDeviceLastUseAt } from "./activity-DRMg4_mD.mjs";
8
- import { d as listAllIosSims } from "./ios-B1DYuOjh.mjs";
7
+ import { _ as workspaceDeviceLastUseAt } from "./activity-BTaUf0tc.mjs";
8
+ import { d as listAllIosSims } from "./ios-CXnoVO_z.mjs";
9
9
  import { join } from "node:path";
10
10
  import { LOG_ROTATE_BYTES } from "@stim-cli/core";
11
11
  import { DEVICE_IDLE_SHUTDOWN_KEY, DEVICE_RECLAIM_REASON, readDeviceIdleShutdowns } from "@stim-cli/core/state";
@@ -1,9 +1,9 @@
1
- import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-C8R1KIvi.mjs";
2
- import { xn as schemesFromInfoPlist, yn as pickDevClientScheme } from "./ccache-Bm_A1xX9.mjs";
3
- import { f as podAction, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, s as iosConfigurationSetting, t as appNameFromPath, u as isReleaseConfiguration, v as resolveRuntime } from "./support-BtlJKjyQ.mjs";
4
- import { n as ensureWorkspaceStorageSafely } from "./native-runtime-DG4Rodzj.mjs";
5
- import { t as devClientScheme } from "./dev-client-D-BW5uiq.mjs";
6
- import { c as writeLastBuild, i as iosFacts, n as cacheDescription, o as lastBuildRecord } from "./ios-project-CR4mZ7CH.mjs";
7
- import { d as replaceCollector, u as collectorEntry } from "./dependencies-DKeMzwXY.mjs";
8
- import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-tg4tp3q1.mjs";
1
+ import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-BBW8eWPL.mjs";
2
+ import { xn as schemesFromInfoPlist, yn as pickDevClientScheme } from "./ccache-B8gY50-h.mjs";
3
+ import { f as podAction, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, s as iosConfigurationSetting, t as appNameFromPath, u as isReleaseConfiguration, v as resolveRuntime } from "./support-DUevTPur.mjs";
4
+ import { n as ensureWorkspaceStorageSafely } from "./native-runtime-D4cTwU0Z.mjs";
5
+ import { t as devClientScheme } from "./dev-client-CASgAOu7.mjs";
6
+ import { c as writeLastBuild, i as iosFacts, n as cacheDescription, o as lastBuildRecord } from "./ios-project-BM9TbTE7.mjs";
7
+ import { d as replaceCollector, u as collectorEntry } from "./dependencies-vUh9mp5z.mjs";
8
+ import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-CG0IsLtt.mjs";
9
9
  export { appNameFromPath, buildLogFile, cacheDescription, collectorEntry, iosCommand as default, devClientScheme, deviceLabel, ensureWorkspaceStorageSafely, formatDuration, iosConfigurationSetting, iosFacts, isReleaseConfiguration, lastBuildRecord, phaseLine, pickDevClientScheme, podAction, registerIos, replaceCollector, resolveConfiguration, resolveDeviceType, resolveRuntime, runIosOperation, schemesFromInfoPlist, shortHash, shortUdid, writeLastBuild };
@@ -1,33 +1,33 @@
1
- import { a as recordWorkspaceUseAsync, k as workspaceLogsDir$1 } from "./workspace-state-kIZrdlSg.mjs";
2
- import { B as deviceSlotFileKey, W as parseDeviceSlotOption, q as validateDeviceSlot } from "./config-Cn94Jc0g.mjs";
3
- import { _ as stepTimer, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-C8R1KIvi.mjs";
4
- import { B as publicUrlSetting, C as iosSigningIdentitySettingError, F as metroWarmupUrlSetting, N as metroPortSetting, S as iosSigningIdentitySetting, T as iosSigningIdentitySha1SettingError, a as SETTING_SHAPE_REMEDY, g as deviceReclaimIdleMinutesSetting, ot as tunnelModeSetting, v as iosLanHostSetting, w as iosSigningIdentitySha1Setting, y as iosLanHostSettingError, z as projectSettingsContextAsync } from "./settings-CY5JZlNN.mjs";
5
- import { t as NO_PROJECT_REFUSAL } from "./project-Sui52ywT.mjs";
6
- import { ft as POOL_SETTING_REMEDY, vt as parkedMaxSetting } from "./android-CsPs-7Mg.mjs";
7
- import { En as runProcessOperation, Et as binOnPath, Qt as DEFAULT_METRO_PORT, qn as ownedSessionName, wn as exitAfterFlush } from "./ccache-Bm_A1xX9.mjs";
8
- import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, Z as runFailureRecord, et as thrownRunFailureRecord, lt as statsProjectKey$1, rt as createRunRecorder } from "./workspaces-CmOcceDN.mjs";
9
- import { Q as cancelledFailure, at as runCancellation, k as COMPILATION_CACHE_NOT_RUN, ot as runCancellationSignal, st as withNativeBuildRun } from "./toolchain-mLA_km-b.mjs";
10
- import { i as createIosSimSnapshot } from "./ios-B1DYuOjh.mjs";
1
+ import { a as recordWorkspaceUseAsync, k as workspaceLogsDir$1 } from "./workspace-state-DGwkPXwq.mjs";
2
+ import { B as deviceSlotFileKey, W as parseDeviceSlotOption, q as validateDeviceSlot } from "./config-AbUjIBOQ.mjs";
3
+ import { _ as stepTimer, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-BBW8eWPL.mjs";
4
+ import { B as publicUrlSetting, C as iosSigningIdentitySettingError, F as metroWarmupUrlSetting, N as metroPortSetting, S as iosSigningIdentitySetting, T as iosSigningIdentitySha1SettingError, a as SETTING_SHAPE_REMEDY, g as deviceReclaimIdleMinutesSetting, ot as tunnelModeSetting, v as iosLanHostSetting, w as iosSigningIdentitySha1Setting, y as iosLanHostSettingError, z as projectSettingsContextAsync } from "./settings-D776ygML.mjs";
5
+ import { t as NO_PROJECT_REFUSAL } from "./project-DPQjnpcI.mjs";
6
+ import { ft as POOL_SETTING_REMEDY, vt as parkedMaxSetting } from "./android-DdKG6lyD.mjs";
7
+ import { En as runProcessOperation, Et as binOnPath, Qt as DEFAULT_METRO_PORT, qn as ownedSessionName, wn as exitAfterFlush } from "./ccache-B8gY50-h.mjs";
8
+ import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, Z as runFailureRecord, et as thrownRunFailureRecord, lt as statsProjectKey$1, rt as createRunRecorder } from "./workspaces-7_RWoi6c.mjs";
9
+ import { $ as cancelledFailure, A as COMPILATION_CACHE_NOT_RUN, ct as withNativeBuildRun, ot as runCancellation, st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
10
+ import { i as createIosSimSnapshot } from "./ios-CXnoVO_z.mjs";
11
11
  import { d as optimizationBuildProfile, l as artifactCachePolicy } from "./errors-DHm_U5gv.mjs";
12
- import { S as setRemoteLogSink, d as simulatorRuntime } from "./client-YxCer6ab.mjs";
13
- import { s as parseBuildMachineOption } from "./selection-CXgM_VK_.mjs";
14
- import { r as hostedMetroSettings } from "./metro-request-DXyKjVDF.mjs";
15
- import { i as writeDevicePlacementAsync } from "./ios-state-BPHqMDdZ.mjs";
16
- import { t as devClientPortBusy } from "./hosted-native-CDe33CSr.mjs";
17
- import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-DFAJgfIk.mjs";
18
- import { f as waitFlagConflict, o as leaseExpiryText } from "./device-lease-run-Mtzp4THX.mjs";
19
- import { _ as resolveIosWait, a as deviceModelRefusal, b as resolveSimulatorAppFlag, c as iosProjectPathError, d as ownedSimFailure, g as resolveIosBuildSetup, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, r as createIosDeviceWaitRun, u as isReleaseConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-BtlJKjyQ.mjs";
20
- import { r as isEasBuildFailure } from "./eas-build-Dm6q68QY.mjs";
21
- import { i as launchOutcomeRecord, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-DG4Rodzj.mjs";
22
- import "./dev-client-D-BW5uiq.mjs";
23
- import { t as didSetUpDevice } from "./device-CgXfbcz5.mjs";
12
+ import { S as setRemoteLogSink, d as simulatorRuntime } from "./client-DrHykA24.mjs";
13
+ import { s as parseBuildMachineOption } from "./selection-PCMT97XD.mjs";
14
+ import { r as hostedMetroSettings } from "./metro-request-BtF7ox53.mjs";
15
+ import { i as writeDevicePlacementAsync } from "./ios-state-Ce_dystM.mjs";
16
+ import { t as devClientPortBusy } from "./hosted-native-DmdLSmvu.mjs";
17
+ import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-23pqe7LS.mjs";
18
+ import { f as waitFlagConflict, o as leaseExpiryText } from "./device-lease-run-Do6zYA7y.mjs";
19
+ import { _ as resolveIosWait, a as deviceModelRefusal, b as resolveSimulatorAppFlag, c as iosProjectPathError, d as ownedSimFailure, g as resolveIosBuildSetup, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, r as createIosDeviceWaitRun, u as isReleaseConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-DUevTPur.mjs";
20
+ import { r as isEasBuildFailure } from "./eas-build-DIDOHw2P.mjs";
21
+ import { a as iosPoolCandidates, c as isWirelessIosDevice, f as resolveIosPhysicalDevice, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds } from "./ios-device-ClSfuu-_.mjs";
22
+ import { i as launchOutcomeRecord, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-D4cTwU0Z.mjs";
23
+ import "./dev-client-CASgAOu7.mjs";
24
+ import { t as didSetUpDevice } from "./device-CsIdRXfm.mjs";
24
25
  import { t as unsupportedPlan } from "./project-plan-BPwbLwQu.mjs";
25
- import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-CxoYfxsc.mjs";
26
- import { a as iosLedgerDevice, c as writeLastBuild, o as lastBuildRecord, s as reportIosResult } from "./ios-project-CR4mZ7CH.mjs";
27
- import { t as acquireIosArtifact } from "./artifact-DYtHjxsn.mjs";
28
- import { a as hostedIosSelectors, i as hostedIosMetroNote, n as connectIosTarget, o as iosPlacementBudget, r as deviceRemoteConflict, s as selectIosPlacement, t as connectIosBackend } from "./remote-DFlpAqdV.mjs";
29
- import { a as iosPoolCandidates, c as isWirelessIosDevice, f as resolveIosPhysicalDevice, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds } from "./ios-device-B4elVFKi.mjs";
30
- import { i as lanOriginUrlFor, l as verifyIosMetroRun, n as chooseLanAddress, o as finishIosRun, t as DEFAULT_DEPS } from "./dependencies-DKeMzwXY.mjs";
26
+ import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-J3iRR3gI.mjs";
27
+ import { a as iosLedgerDevice, c as writeLastBuild, o as lastBuildRecord, s as reportIosResult } from "./ios-project-BM9TbTE7.mjs";
28
+ import { t as acquireIosArtifact } from "./artifact-DTHXcmQ3.mjs";
29
+ import { a as hostedIosSelectors, i as hostedIosMetroNote, n as connectIosTarget, o as iosPlacementBudget, r as deviceRemoteConflict, s as selectIosPlacement, t as connectIosBackend } from "./remote-C-RGHhAP.mjs";
30
+ import { i as lanOriginUrlFor, l as verifyIosMetroRun, n as chooseLanAddress, o as finishIosRun, t as DEFAULT_DEPS } from "./dependencies-vUh9mp5z.mjs";
31
31
  import { join } from "node:path";
32
32
  import { workspaceId } from "@stim-cli/core";
33
33
  import { hostedIosStatus, parseMachine } from "@stim-cli/core/state";
@@ -809,7 +809,7 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
809
809
  wireless = resolved.wireless === true;
810
810
  }
811
811
  if (checkCapacity && !hostedTarget) {
812
- const capacity = d.checkDeviceCapacity({
812
+ const capacity = await d.checkDeviceCapacity({
813
813
  platform: "ios",
814
814
  project: proj,
815
815
  max: limits.maxDevices,
@@ -1,10 +1,10 @@
1
1
  import { l as WorkspaceProcessCleanupError, n as isTimeoutError, o as cancellableSleep, t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { P as formatBytes, _ as loadConfig$1 } from "./config-Cn94Jc0g.mjs";
2
+ import { P as formatBytes, _ as loadConfig$1 } from "./config-AbUjIBOQ.mjs";
3
3
  import { n as stripAnsi, r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
4
4
  import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
5
- import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-CbWo21kb.mjs";
6
- import { Ct as forgetCreatedDeviceAsync, Et as recordCreatedDeviceAsync, dt as isStimOwnedSim } from "./android-CsPs-7Mg.mjs";
7
- import { n as signedTailFor } from "./apk-signed-tail-CQbwM0qO.mjs";
5
+ import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-CYXLFpFS.mjs";
6
+ import { Ct as forgetCreatedDeviceAsync, Et as recordCreatedDeviceAsync, dt as isStimOwnedSim } from "./android-DdKG6lyD.mjs";
7
+ import { n as signedTailFor } from "./apk-signed-tail-B8kw4a8K.mjs";
8
8
  import { createHash } from "node:crypto";
9
9
  import { closeSync, existsSync, lstatSync, mkdtempSync, openSync, readSync, readdirSync, rmSync, writeFileSync } from "node:fs";
10
10
  import { tmpdir, totalmem } from "node:os";
@@ -1,5 +1,5 @@
1
1
  import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { $t as INSTALL_ERROR, rn as appProcessFromPid } from "./ccache-Bm_A1xX9.mjs";
2
+ import { $t as INSTALL_ERROR, rn as appProcessFromPid } from "./ccache-B8gY50-h.mjs";
3
3
  import { n as TOOL_ERROR_PREFIX } from "./ios-device-CiBA-er9.mjs";
4
4
  import { mkdtempSync, readFileSync, rmSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
@@ -1,10 +1,10 @@
1
- import { w as workspaceAgentDeviceDir } from "./workspace-state-kIZrdlSg.mjs";
2
- import { i as formatDuration, l as phaseLine } from "./command-output-C8R1KIvi.mjs";
3
- import { a as workspaceLinkLine } from "./stim-desktop-CbWo21kb.mjs";
4
- import { Mn as isEasAuthFailureText, On as UPLOAD_TIMEOUT_MS, jn as easAuthNote, kn as cacheLevel } from "./ccache-Bm_A1xX9.mjs";
5
- import { X as recordFinishedBuild } from "./workspaces-CmOcceDN.mjs";
6
- import { P as compilationCacheActivityLine, k as COMPILATION_CACHE_NOT_RUN } from "./toolchain-mLA_km-b.mjs";
7
- import { i as deviceLabel } from "./support-BtlJKjyQ.mjs";
1
+ import { w as workspaceAgentDeviceDir } from "./workspace-state-DGwkPXwq.mjs";
2
+ import { i as formatDuration, l as phaseLine } from "./command-output-BBW8eWPL.mjs";
3
+ import { a as workspaceLinkLine } from "./stim-desktop-CYXLFpFS.mjs";
4
+ import { Mn as isEasAuthFailureText, On as UPLOAD_TIMEOUT_MS, jn as easAuthNote, kn as cacheLevel } from "./ccache-B8gY50-h.mjs";
5
+ import { X as recordFinishedBuild } from "./workspaces-7_RWoi6c.mjs";
6
+ import { A as COMPILATION_CACHE_NOT_RUN, F as compilationCacheActivityLine } from "./toolchain-DLdoyxIt.mjs";
7
+ import { i as deviceLabel } from "./support-DUevTPur.mjs";
8
8
  import { buildDiagnostics } from "@stim-cli/core/state";
9
9
  import chalk from "chalk";
10
10
  //#region src/commands/ios/result.ts
@@ -1,4 +1,4 @@
1
- import { l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-kIZrdlSg.mjs";
1
+ import { l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-DGwkPXwq.mjs";
2
2
  import { HOSTED_METRO_REQUESTS_KEY, hostedMetroRequests, hostedNativeRecords, isJsonObject, parseHostedNativePlacement, unreadableHostedNative } from "@stim-cli/core/state";
3
3
  //#region src/device-host/ios-state.ts
4
4
  function readHostedNative(root, platform, slot) {
@@ -1,10 +1,10 @@
1
1
  import { _ as spawnDeclared, b as operationState, c as throwIfCancelled, t as getExecutor } from "./exec-aULwtNly.mjs";
2
2
  import { r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
3
  import { a as killOnAbort, t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
4
- import { an as makeTemporaryDirectory, on as removeTemporaryEntry } from "./settings-CY5JZlNN.mjs";
5
- import { Bn as bundleInvocation } from "./ccache-Bm_A1xX9.mjs";
6
- import { G as tailLines, U as startBuildHeartbeat, j as HEARTBEAT_INTERVAL_MS } from "./toolchain-mLA_km-b.mjs";
7
- import { s as expoTelemetryEnv, t as cleanLine } from "./server-expo-Ccm9zB0o.mjs";
4
+ import { an as makeTemporaryDirectory, on as removeTemporaryEntry } from "./settings-D776ygML.mjs";
5
+ import { Bn as bundleInvocation } from "./ccache-B8gY50-h.mjs";
6
+ import { K as tailLines, M as HEARTBEAT_INTERVAL_MS, W as startBuildHeartbeat } from "./toolchain-DLdoyxIt.mjs";
7
+ import { s as expoTelemetryEnv, t as cleanLine } from "./server-expo-C1K07shx.mjs";
8
8
  import { randomUUID } from "node:crypto";
9
9
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
10
10
  import { basename, join } from "node:path";
@@ -1,24 +1,24 @@
1
1
  import { x as withDrainingCancellation } from "./exec-aULwtNly.mjs";
2
- import { k as workspaceLogsDir } from "./workspace-state-kIZrdlSg.mjs";
3
- import { B as deviceSlotFileKey, C as saveConfig, E as upsertProject, H as deviceSlotPlatforms, O as withConfigLockAsync, P as formatBytes, V as deviceSlotKey, _ as loadConfig, w as setDevice } from "./config-Cn94Jc0g.mjs";
4
- import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-C8R1KIvi.mjs";
5
- import { L as workspaceDevServerMode } from "./project-Sui52ywT.mjs";
6
- import { o as workspaceLinks } from "./stim-desktop-CbWo21kb.mjs";
7
- import { i as androidDataFreeBytes, ot as trimAndroidCaches, tt as resetAdoptedAvd, u as androidToolCwd } from "./android-CsPs-7Mg.mjs";
8
- import { c as pidExists, f as signalProcessTree } from "./metro-BnhXV2Mj.mjs";
9
- import { Bt as RELEASE_VERIFY_WAIT_MS, Gt as unattributedLaunchLines, It as LAUNCH_BUNDLING, Kt as unverifiedLaunchLines, Lt as LAUNCH_FATAL, Rt as LAUNCH_UNVERIFIED, Vt as VERIFY_TIMEOUT_MS, Zt as ADB_INSTALL_TIMEOUT_MS, gn as restartedAppNote, nn as androidDevClientUrl, tn as androidAppProcess, un as installConflictKind } from "./ccache-Bm_A1xX9.mjs";
10
- import { pt as teardownOwnedAvd } from "./workspaces-CmOcceDN.mjs";
11
- import { x as providerUploadOutcome } from "./build-cache-CZULpXVl.mjs";
12
- import { t as recordPhoneReverse } from "./phone-reverses-BzTa8g1F.mjs";
13
- import { n as verifyCollectorOwnership, r as readCollectors } from "./ownership-DJCq48IJ.mjs";
14
- import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-BpmanOnk.mjs";
2
+ import { k as workspaceLogsDir } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { B as deviceSlotFileKey, C as saveConfig, E as upsertProject, H as deviceSlotPlatforms, O as withConfigLockAsync, P as formatBytes, V as deviceSlotKey, _ as loadConfig, w as setDevice } from "./config-AbUjIBOQ.mjs";
4
+ import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-BBW8eWPL.mjs";
5
+ import { L as workspaceDevServerMode } from "./project-DPQjnpcI.mjs";
6
+ import { o as workspaceLinks } from "./stim-desktop-CYXLFpFS.mjs";
7
+ import { i as androidDataFreeBytes, ot as trimAndroidCaches, tt as resetAdoptedAvd, u as androidToolCwd } from "./android-DdKG6lyD.mjs";
8
+ import { c as pidExists, f as signalProcessTree } from "./metro-BMQHczcf.mjs";
9
+ import { Bt as RELEASE_VERIFY_WAIT_MS, Gt as unattributedLaunchLines, It as LAUNCH_BUNDLING, Kt as unverifiedLaunchLines, Lt as LAUNCH_FATAL, Rt as LAUNCH_UNVERIFIED, Vt as VERIFY_TIMEOUT_MS, Zt as ADB_INSTALL_TIMEOUT_MS, gn as restartedAppNote, nn as androidDevClientUrl, tn as androidAppProcess, un as installConflictKind } from "./ccache-B8gY50-h.mjs";
10
+ import { pt as teardownOwnedAvd } from "./workspaces-7_RWoi6c.mjs";
11
+ import { x as providerUploadOutcome } from "./build-cache-DlC3owap.mjs";
12
+ import { t as recordPhoneReverse } from "./phone-reverses-CvhhkGMH.mjs";
13
+ import { n as verifyCollectorOwnership, r as readCollectors } from "./ownership-Dtz9G5Gl.mjs";
14
+ import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-CeIK1iUI.mjs";
15
15
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
16
- import { c as lostRefusal, s as lostLine, t as DEBUG_VERIFY_STEP_MS } from "./device-lease-run-Mtzp4THX.mjs";
17
- import { a as captureNativeCrashes, r as androidCrashClockOffset, s as printNativeCrashReport, t as errorDiagnostics } from "./error-diagnostics-D1QfyJzQ.mjs";
18
- import { f as settleFingerprintCheck } from "./prebuild-k8d_tqOq.mjs";
19
- import { i as launchOutcomeRecord } from "./native-runtime-DG4Rodzj.mjs";
20
- import { a as PLATFORM, b as noDeviceDiagnostic, h as displayPath, n as LAUNCH_FAILED, r as NO_DEVICE, t as INSTALL_FAILED } from "./support-04IhBUTT.mjs";
21
- import { a as persistLastBuild, n as finishAndroidUpload, s as reportAndroidResult } from "./result-BIcXREyC.mjs";
16
+ import { c as lostRefusal, s as lostLine, t as DEBUG_VERIFY_STEP_MS } from "./device-lease-run-Do6zYA7y.mjs";
17
+ import { a as captureNativeCrashes, r as androidCrashClockOffset, s as printNativeCrashReport, t as errorDiagnostics } from "./error-diagnostics-XJ9eWdtq.mjs";
18
+ import { f as settleFingerprintCheck } from "./prebuild-DBJMhwSS.mjs";
19
+ import { i as launchOutcomeRecord } from "./native-runtime-D4cTwU0Z.mjs";
20
+ import { a as PLATFORM, b as noDeviceDiagnostic, h as displayPath, n as LAUNCH_FAILED, r as NO_DEVICE, t as INSTALL_FAILED } from "./support-BGqpYMV8.mjs";
21
+ import { a as persistLastBuild, n as finishAndroidUpload, s as reportAndroidResult } from "./result-W4HCum4A.mjs";
22
22
  import { mkdirSync, openSync, statSync } from "node:fs";
23
23
  import { basename, join } from "node:path";
24
24
  import { ambientEnv } from "@stim-cli/core";
@@ -1,9 +1,9 @@
1
1
  import { l as WorkspaceProcessCleanupError } from "./exec-aULwtNly.mjs";
2
- import { c as withWorkspaceStateLock } from "./workspace-state-kIZrdlSg.mjs";
3
- import { l as phaseLine } from "./command-output-C8R1KIvi.mjs";
4
- import { Jt as warmWorktreePaths, Lt as podsOutOfSync, Q as resolveSettings, Rt as readWorktreeExclude, kt as listCarryableIgnoredEntries, vt as depsOutOfSync } from "./settings-CY5JZlNN.mjs";
2
+ import { c as withWorkspaceStateLock } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { l as phaseLine } from "./command-output-BBW8eWPL.mjs";
4
+ import { Jt as warmWorktreePaths, Lt as podsOutOfSync, Q as resolveSettings, Rt as readWorktreeExclude, kt as listCarryableIgnoredEntries, vt as depsOutOfSync } from "./settings-D776ygML.mjs";
5
5
  import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
6
- import { m as warmWorktreeTarget } from "./worktree-2dk5edza.mjs";
6
+ import { m as warmWorktreeTarget } from "./worktree-qKJ3x07S.mjs";
7
7
  import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
8
8
  import { basename, dirname, join, relative } from "node:path";
9
9
  import { isJsonObject, readJsonObject, workspaceLightenedFile, workspaceMetadataFile } from "@stim-cli/core/state";
@@ -1,11 +1,11 @@
1
- import { k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-kIZrdlSg.mjs";
2
- import { W as parseDeviceSlotOption, _ as loadConfig$1, g as isPathPrefix$1 } from "./config-Cn94Jc0g.mjs";
3
- import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-C8R1KIvi.mjs";
4
- import { n as findCommandWorkspace } from "./project-Sui52ywT.mjs";
5
- import { n as SOURCES$1, t as LEVELS$1 } from "./ndjson-Dy2W4vRa.mjs";
6
- import { i as followAgentActions, n as openWorkspaceLogs } from "./logs-DI5ILkYB.mjs";
7
- import { t as errorDiagnostics } from "./error-diagnostics-D1QfyJzQ.mjs";
8
- import { n as followHostedLogs } from "./hosted-logs-sync-B0c53W_c.mjs";
1
+ import { i as recordWorkspaceUse, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-DGwkPXwq.mjs";
2
+ import { W as parseDeviceSlotOption, _ as loadConfig$1, g as isPathPrefix$1 } from "./config-AbUjIBOQ.mjs";
3
+ import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-BBW8eWPL.mjs";
4
+ import { n as findCommandWorkspace } from "./project-DPQjnpcI.mjs";
5
+ import { n as SOURCES$1, t as LEVELS$1 } from "./ndjson-CrjIsGzw.mjs";
6
+ import { i as followAgentActions, n as openWorkspaceLogs } from "./logs-Pkeh3wZk.mjs";
7
+ import { t as errorDiagnostics } from "./error-diagnostics-XJ9eWdtq.mjs";
8
+ import { n as followHostedLogs } from "./hosted-logs-sync-wsI7N1Hv.mjs";
9
9
  import { t as watchStdoutReader } from "./stdout-reader-C8yjre1x.mjs";
10
10
  import { realpathSync } from "node:fs";
11
11
  import { relative, sep } from "node:path";
@@ -116,6 +116,7 @@ function logsCommand(program) {
116
116
  const dir = workspaceLogsDir$1(root);
117
117
  const { sources, minLevel, tail } = validateOptions(opts);
118
118
  requireLogsWorkspace(root, dir);
119
+ recordWorkspaceUse(root);
119
120
  const query = {
120
121
  slot: opts.slot,
121
122
  dir,
@@ -1,9 +1,9 @@
1
1
  import { S as process_identity_exports } from "./exec-aULwtNly.mjs";
2
- import { k as workspaceLogsDir$1 } from "./workspace-state-kIZrdlSg.mjs";
3
- import { G as projectDeviceSlots, _ as loadConfig$1 } from "./config-Cn94Jc0g.mjs";
4
- import { f as readAgentDeviceRecordsAsync, n as agentDeviceLiveness, o as envDir } from "./activity-DRMg4_mD.mjs";
5
- import { o as captureWorkspaceCrashes } from "./error-diagnostics-D1QfyJzQ.mjs";
6
- import { n as followHostedLogs, r as syncHostedLogs } from "./hosted-logs-sync-B0c53W_c.mjs";
2
+ import { k as workspaceLogsDir$1 } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { G as projectDeviceSlots, _ as loadConfig$1 } from "./config-AbUjIBOQ.mjs";
4
+ import { f as readAgentDeviceRecordsAsync, n as agentDeviceLiveness, o as envDir } from "./activity-BTaUf0tc.mjs";
5
+ import { o as captureWorkspaceCrashes } from "./error-diagnostics-XJ9eWdtq.mjs";
6
+ import { n as followHostedLogs, r as syncHostedLogs } from "./hosted-logs-sync-wsI7N1Hv.mjs";
7
7
  import { readdirSync, statSync, watch } from "node:fs";
8
8
  import { homedir } from "node:os";
9
9
  import { dirname, join, relative, resolve, sep } from "node:path";
@@ -222,7 +222,8 @@ async function openWorkspaceLogs(context, options = {}, follow = false) {
222
222
  const root = context.projectRoot;
223
223
  const dir = workspaceLogsDir$1(root);
224
224
  if (!logFiles(dir).length) throw Object.assign(/* @__PURE__ */ new Error(`No Stim workspace has run in ${root}. Run stim start, stim ios, or stim android in the app first.`), { code: "STIM_NO_PROJECT" });
225
- const hostedReachable = await syncHostedLogs(root, context);
225
+ const readsDevice = !options.sources?.length || options.sources.includes("device");
226
+ const hostedReachable = await syncHostedLogs(root, context, readsDevice);
226
227
  context.signal.throwIfAborted();
227
228
  const initial = await openLogDir(dir, { signal: context.signal });
228
229
  let attempts;
@@ -1,24 +1,24 @@
1
1
  import { _ as spawnDeclared, c as throwIfCancelled, t as getExecutor, u as withWorkspaceProcessLock, x as withDrainingCancellation } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, a as recordWorkspaceUseAsync, f as writeWorkspaceStateAsync, k as workspaceLogsDir$1, v as ensureWorkspaceStorageAsync, w as workspaceAgentDeviceDir } from "./workspace-state-kIZrdlSg.mjs";
3
- import { E as upsertProject, O as withConfigLockAsync$1, u as getConcurrencyLimits } from "./config-Cn94Jc0g.mjs";
4
- import { l as phaseLine } from "./command-output-C8R1KIvi.mjs";
5
- import { Z as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, it as settingValueAt, rt as settingShapeErrors } from "./settings-CY5JZlNN.mjs";
6
- import { f as projectRegistry, i as findProjectRoot$1, s as ownedDeviceLabel } from "./project-Sui52ywT.mjs";
7
- import { i as macosProcess, n as macosDir, o as requiredMacosRecord, r as macosLogFile } from "./state-BXC1Lfxw.mjs";
8
- import { i as createNdjsonWriter } from "./ndjson-Dy2W4vRa.mjs";
9
- import { En as runProcessOperation, Tn as processContext } from "./ccache-Bm_A1xX9.mjs";
10
- import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, St as acquireBuildSlot, Tt as releaseBuildSlot, X as recordFinishedBuild, Y as recordBuildPhase, tt as errorRemedy } from "./workspaces-CmOcceDN.mjs";
11
- import { ot as runCancellationSignal, st as withNativeBuildRun } from "./toolchain-mLA_km-b.mjs";
12
- import { O as sanitizeDeviceLabel } from "./ios-B1DYuOjh.mjs";
13
- import { S as setRemoteLogSink, c as offloadPlacement, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText } from "./client-YxCer6ab.mjs";
14
- import { d as resolveBuildPlacement, l as requireLocalBuild, n as automaticBuild, o as namedBuildMachine, s as parseBuildMachineOption, t as OffloadRefusal } from "./selection-CXgM_VK_.mjs";
15
- import { l as connectHost } from "./hosted-client-DDRm9hPJ.mjs";
16
- import { t as placeHostedMacos } from "./hosted-macos-B7-8Pv4H.mjs";
17
- import { i as stopMacosAppHeld, t as stopBundleInstances } from "./stop-DQvE-P76.mjs";
2
+ import { E as workspaceDir, a as recordWorkspaceUseAsync, f as writeWorkspaceStateAsync, k as workspaceLogsDir$1, v as ensureWorkspaceStorageAsync, w as workspaceAgentDeviceDir } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { E as upsertProject, O as withConfigLockAsync$1, u as getConcurrencyLimits } from "./config-AbUjIBOQ.mjs";
4
+ import { l as phaseLine } from "./command-output-BBW8eWPL.mjs";
5
+ import { Z as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, it as settingValueAt, rt as settingShapeErrors } from "./settings-D776ygML.mjs";
6
+ import { f as projectRegistry, i as findProjectRoot$1, s as ownedDeviceLabel } from "./project-DPQjnpcI.mjs";
7
+ import { i as macosProcess, n as macosDir, o as requiredMacosRecord, r as macosLogFile } from "./state-C2AUjjhg.mjs";
8
+ import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
9
+ import { En as runProcessOperation, Tn as processContext } from "./ccache-B8gY50-h.mjs";
10
+ import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, St as acquireBuildSlot, Tt as releaseBuildSlot, X as recordFinishedBuild, Y as recordBuildPhase, tt as errorRemedy } from "./workspaces-7_RWoi6c.mjs";
11
+ import { ct as withNativeBuildRun, st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
12
+ import { O as sanitizeDeviceLabel } from "./ios-CXnoVO_z.mjs";
13
+ import { S as setRemoteLogSink, c as offloadPlacement, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText } from "./client-DrHykA24.mjs";
14
+ import { d as resolveBuildPlacement, l as requireLocalBuild, n as automaticBuild, o as namedBuildMachine, s as parseBuildMachineOption, t as OffloadRefusal } from "./selection-PCMT97XD.mjs";
15
+ import { l as connectHost } from "./hosted-client-Cect92SZ.mjs";
16
+ import { t as placeHostedMacos } from "./hosted-macos-BP9Kucat.mjs";
17
+ import { i as stopMacosAppHeld, t as stopBundleInstances } from "./stop-CMVfaA-6.mjs";
18
18
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
19
- import { t as buildPlacementRecord } from "./placement-log-Cvhta5ib.mjs";
20
- import { n as devicePlacementLine, t as automaticDevicePlacement } from "./auto-placement-BVqs8AJi.mjs";
21
- import { t as reidentifyBundle } from "./stage-CmugrSG5.mjs";
19
+ import { t as buildPlacementRecord } from "./placement-log-CRR_TE1r.mjs";
20
+ import { n as devicePlacementLine, t as automaticDevicePlacement } from "./auto-placement-CZaWDmcY.mjs";
21
+ import { t as reidentifyBundle } from "./stage-Blqe6bWb.mjs";
22
22
  import { t as validateMacosArtifactPlatform } from "./artifact-platform-BO2Uvk_A.mjs";
23
23
  import { t as waitForMacosRegistration } from "./registration-BwCe64PH.mjs";
24
24
  import { createHash, randomUUID } from "node:crypto";
@@ -344,7 +344,7 @@ async function planMacos(context, root, buildMachineFlag) {
344
344
  if (selected.failure) throw Object.assign(new Error(selected.failure.message), selected.failure);
345
345
  const macos = settings.macos;
346
346
  if (!macos?.product || !macos.infoPlist) throw Object.assign(/* @__PURE__ */ new Error("Set macos.product and macos.infoPlist explicitly in .stim.json. See stim guide macos."), { code: "STIM_BAD_ARG" });
347
- const { swiftpmMacosProject } = await import("./swiftpm-macos-BhF2stxY.mjs");
347
+ const { swiftpmMacosProject } = await import("./swiftpm-macos-DBrmoocG.mjs");
348
348
  const recipe = await swiftpmMacosProject(root).prepare(context, settings);
349
349
  let identity = null;
350
350
  let cacheHit = false;
@@ -1,2 +1,2 @@
1
- import { n as runMacos, r as waitForLaunchServices, t as macosCommand } from "./macos-Bo9st9Di.mjs";
1
+ import { n as runMacos, r as waitForLaunchServices, t as macosCommand } from "./macos-DPvPQadc.mjs";
2
2
  export { macosCommand as default, runMacos, waitForLaunchServices };
@@ -1,2 +1,2 @@
1
- import { n as runMacosSupervisor, t as logLines } from "./run-y2HwyNvg.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-Bm_A1xX9.mjs";
3
- import { I as memoryCulpritsUnder, V as memoryCulpritAdvice } from "./ios-B1DYuOjh.mjs";
4
- import { t as resolveMaintenanceSettings } from "./settings-Djl-mpjX.mjs";
5
- import { C as sizeScanDeferred, S as measureSizes, b as measurePressure, v as measureDisk } from "./worktree-2dk5edza.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-B8gY50-h.mjs";
3
+ import { I as memoryCulpritsUnder, V as memoryCulpritAdvice } from "./ios-CXnoVO_z.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-qKJ3x07S.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-8iswyfRa.mjs";
7
+ import { i as plannedMaintenance, n as diskRecovered, o as triggeringRoot, r as executeAction, v as measureOwnedDevices } from "./act-BaKjDWGw.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-kIZrdlSg.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";