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,8 +1,8 @@
1
1
  import { o as cancellableSleep, t as getExecutor } from "./exec-aULwtNly.mjs";
2
2
  import { n as stripAnsi, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
- import { X as resolveProjectSettings } from "./settings-CY5JZlNN.mjs";
4
- import { C as resolvePackageJson } from "./project-Sui52ywT.mjs";
5
- import { i as createNdjsonWriter } from "./ndjson-Dy2W4vRa.mjs";
3
+ import { X as resolveProjectSettings } from "./settings-D776ygML.mjs";
4
+ import { C as resolvePackageJson } from "./project-DPQjnpcI.mjs";
5
+ import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
6
6
  import { a as expoMetroStoreEnv, c as registerMetroStore, f as resolveMetroSharedCache, i as expoMetroConfigPath, n as supervisorError, o as metroStoreConfirmedRoot, s as metroStoreRoot } from "./errors-DHm_U5gv.mjs";
7
7
  import { accessSync, constants, existsSync, readFileSync } from "node:fs";
8
8
  import { delimiter, dirname, join } from "node:path";
@@ -249,7 +249,8 @@ function recordFromLine(line, { stream = "stdout", source = "expo" } = {}) {
249
249
  if (!msg.trim()) return null;
250
250
  if (stream === "stderr" && msg.startsWith("stim-bundle-response: ")) try {
251
251
  const record = JSON.parse(msg.slice(22));
252
- if (record.src === "metro" && /^(?:bundle_(?:response|prefetch)_(?:started|progress|finished|failed)|manifest_request_(?:started|finished|failed))$/.test(record.event) && ["ios", "android"].includes(record.platform) && typeof record.requestId === "string" && Number.isFinite(record.ts)) return record;
252
+ const request = /^(?:bundle_(?:response|prefetch)_(?:started|progress|finished|failed)|manifest_request_(?:started|finished|failed))$/.test(record.event) && ["ios", "android"].includes(record.platform) && typeof record.requestId === "string";
253
+ if (record.src === "metro" && (request || record.event === "hmr_update") && Number.isFinite(record.ts)) return record;
253
254
  } catch {}
254
255
  const confirmed = metroStoreConfirmedRoot(msg);
255
256
  if (confirmed) return {
@@ -380,7 +381,7 @@ async function startExpoServer({ root, port, logsDir, writer = null, spawnFn = n
380
381
  }
381
382
  });
382
383
  let tunnelUrlSeen = false;
383
- return superviseChildServer({
384
+ const handle = superviseChildServer({
384
385
  mode: "expo-child",
385
386
  child,
386
387
  log,
@@ -396,6 +397,8 @@ async function startExpoServer({ root, port, logsDir, writer = null, spawnFn = n
396
397
  }
397
398
  }
398
399
  });
400
+ handle.observesRequests = storeEnv !== null;
401
+ return handle;
399
402
  }
400
403
  //#endregion
401
404
  export { unmetNodePin as _, expoProxyEnv as a, findBinUpward as c, isDevClientNavigationNotice as d, parseExpoWaitingOnUrl as f, projectNodeLine as g, pathNodeVersion as h, expoBinRefusal as i, inferLevel as l, startExpoServer as m, expoBinFromPackage as n, expoSdkMajor as o, recordFromLine as p, expoBinPath as r, expoTelemetryEnv as s, cleanLine as t, isBundleMarker as u, withProjectNode as v, superviseChildServer as y };
@@ -1,5 +1,5 @@
1
- import { c as readSettingsPayload, l as settingEntry, o as layerFile, s as readSettingsContext, t as SettingsRefusal } from "./settings-payload-DwQiEMCn.mjs";
2
- import { i as unsetReplacedSetting, n as readScope, r as requireSetting, t as mutateSetting } from "./settings-write-CJpjkeAd.mjs";
1
+ import { c as readSettingsPayload, l as settingEntry, o as layerFile, s as readSettingsContext, t as SettingsRefusal } from "./settings-payload-CE-NZ6Lq.mjs";
2
+ import { i as unsetReplacedSetting, n as readScope, r as requireSetting, t as mutateSetting } from "./settings-write-D7Xwa_-M.mjs";
3
3
  import { REPLACED_SETTINGS, SETTING_SCOPES } from "@stim-cli/core/state";
4
4
  import chalk from "chalk";
5
5
  //#region src/commands/settings.ts
@@ -1,5 +1,5 @@
1
1
  import { D as ownership_claim_exports, c as throwIfCancelled, l as WorkspaceProcessCleanupError, n as isTimeoutError, t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { _ as loadConfig$1, d as getConfigDir, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-Cn94Jc0g.mjs";
2
+ import { _ as loadConfig$1, d as getConfigDir, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-AbUjIBOQ.mjs";
3
3
  import { c as gitQuiet, l as gitQuietAsync, n as runOperationFileQuiet, o as git, r as childEnvironment, s as gitAsync, t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
4
4
  import { accessSync, chmodSync, constants, existsSync, lstatSync, mkdirSync, mkdtempSync, readdirSync, realpathSync, rmSync, statSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
@@ -1,10 +1,11 @@
1
1
  import { SETTINGS, coerceSettingText, loadConfig, settingValueError } from "@stim-cli/core/state";
2
2
  //#region src/maintenance/settings.ts
3
+ const PER_WORKSPACE = /* @__PURE__ */ new Set(["maintenance.keep", "maintenance.idleStopHours"]);
3
4
  function resolveMaintenanceSettings(config = loadConfig(), env = process.env) {
4
5
  const result = {};
5
6
  const invalid = [];
6
7
  let disabled = false;
7
- for (const setting of SETTINGS.filter((entry) => entry.key.startsWith("maintenance.") && entry.key !== "maintenance.keep" || /^caches\..*MaxGb$/.test(entry.key))) {
8
+ for (const setting of SETTINGS.filter((entry) => entry.key.startsWith("maintenance.") && !PER_WORKSPACE.has(entry.key) || /^caches\..*MaxGb$/.test(entry.key))) {
8
9
  const [group, name] = setting.key.split(".");
9
10
  const rawEnv = setting.env ? env[setting.env] : void 0;
10
11
  const layer = config?.[group];
@@ -1,8 +1,8 @@
1
- import { _ as loadConfig$1, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-Cn94Jc0g.mjs";
1
+ import { _ as loadConfig$1, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-AbUjIBOQ.mjs";
2
2
  import { a as killOnAbort, i as gitPath } from "./operation-exec-Dp4FuIGR.mjs";
3
- import { K as removedMachineSettings, V as readCommittedSettings, st as unknownSettingKeys } from "./settings-CY5JZlNN.mjs";
4
- import { r as findCommandWorkspaceAsync } from "./project-Sui52ywT.mjs";
5
- import { i as stimDesktopInstalledAsync, n as settingDefault, r as stimDesktopInstalled } from "./stim-desktop-CbWo21kb.mjs";
3
+ import { K as removedMachineSettings, V as readCommittedSettings, st as unknownSettingKeys } from "./settings-D776ygML.mjs";
4
+ import { r as findCommandWorkspaceAsync } from "./project-DPQjnpcI.mjs";
5
+ import { i as stimDesktopInstalledAsync, n as settingDefault, r as stimDesktopInstalled } from "./stim-desktop-CYXLFpFS.mjs";
6
6
  import { join } from "node:path";
7
7
  import { SETTINGS, SETTING_SCOPES, coerceSettingText, isJsonObject, replacementAdvice, settingDefinition, settingValueError } from "@stim-cli/core/state";
8
8
  //#region src/workspace/settings-payload.ts
@@ -1,9 +1,9 @@
1
1
  import { u as withWorkspaceProcessLock } from "./exec-aULwtNly.mjs";
2
- import { A as writeConfigSettingAsync, O as withConfigLockAsync$1, f as getConfigPath$1 } from "./config-Cn94Jc0g.mjs";
3
- import { t as NO_PROJECT_REFUSAL } from "./project-Sui52ywT.mjs";
4
- import { i as stimDesktopInstalledAsync } from "./stim-desktop-CbWo21kb.mjs";
5
- import { n as recordingLayers, t as deleteTurnedOffRecordings } from "./recordings-iy0mkm7b.mjs";
6
- import { d as unknownEntries, l as settingEntry, o as layerFile, r as committedDirectory, s as readSettingsContext, t as SettingsRefusal, u as settingExample } from "./settings-payload-DwQiEMCn.mjs";
2
+ import { A as writeConfigSettingAsync, O as withConfigLockAsync$1, f as getConfigPath$1 } from "./config-AbUjIBOQ.mjs";
3
+ import { t as NO_PROJECT_REFUSAL } from "./project-DPQjnpcI.mjs";
4
+ import { i as stimDesktopInstalledAsync } from "./stim-desktop-CYXLFpFS.mjs";
5
+ import { n as recordingLayers, t as deleteTurnedOffRecordings } from "./recordings-CHMaF73C.mjs";
6
+ import { d as unknownEntries, l as settingEntry, o as layerFile, r as committedDirectory, s as readSettingsContext, t as SettingsRefusal, u as settingExample } from "./settings-payload-CE-NZ6Lq.mjs";
7
7
  import { existsSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
8
8
  import { join } from "node:path";
9
9
  import { configDir } from "@stim-cli/core";
@@ -289,7 +289,7 @@
289
289
  "remote": {
290
290
  "description": "Where the iOS simulator runs: local here (overriding a lower layer); auto here first, then a remote.machines entry when this machine is full or busy; remote on a remote.machines entry in order, here only when none takes it; remote-only the same but never here; a machine name exactly that machine; eas or proxy a remote device backend",
291
291
  "type": "string",
292
- "pattern": "^[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
292
+ "pattern": "^(?:local:)?[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
293
293
  "x-stim": {
294
294
  "key": "ios.remote",
295
295
  "kind": "string",
@@ -566,7 +566,7 @@
566
566
  "remote": {
567
567
  "description": "Where the Android emulator runs: local here (overriding a lower layer); auto here first, then a remote.machines entry when this machine is full or busy; remote on a remote.machines entry in order, here only when none takes it; remote-only the same but never here; a machine name exactly that machine; eas or proxy a remote device backend",
568
568
  "type": "string",
569
- "pattern": "^[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
569
+ "pattern": "^(?:local:)?[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
570
570
  "x-stim": {
571
571
  "key": "android.remote",
572
572
  "kind": "string",
@@ -814,7 +814,7 @@
814
814
  "remote": {
815
815
  "description": "Where stim macos launches the app: local here; auto here unless this machine is busy, then a remote.machines entry; remote on a remote.machines entry in order, here only when none takes it; remote-only the same but never here; a machine name exactly that machine. The --remote flag overrides it",
816
816
  "type": "string",
817
- "pattern": "^(?![Ee][Aa][Ss]$|[Pp][Rr][Oo][Xx][Yy]$)[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
817
+ "pattern": "^(?![Ee][Aa][Ss]$|[Pp][Rr][Oo][Xx][Yy]$)(?:local:)?[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
818
818
  "x-stim": {
819
819
  "key": "macos.remote",
820
820
  "kind": "string",
@@ -1000,6 +1000,23 @@
1000
1000
  "maintenance": {
1001
1001
  "type": "object",
1002
1002
  "properties": {
1003
+ "idleStopHours": {
1004
+ "description": "Hours with no native run, Metro bundle or HMR request, agent-device command, Stim command or live view before automatic maintenance and gc --delete stop a workspace's dev server and shut down its owned simulators and emulators, as stim stop does; device and app log lines do not count; 0 never",
1005
+ "type": "number",
1006
+ "minimum": 0,
1007
+ "default": 6,
1008
+ "x-stim": {
1009
+ "key": "maintenance.idleStopHours",
1010
+ "kind": "number",
1011
+ "scopes": [
1012
+ "machine",
1013
+ "workspace",
1014
+ "repo",
1015
+ "committed"
1016
+ ],
1017
+ "env": "STIM_MAINTENANCE_IDLE_STOP_HOURS"
1018
+ }
1019
+ },
1003
1020
  "keep": {
1004
1021
  "description": "Pin this workspace: automatic maintenance never clears its build outputs, deletes its owned devices or removes its worktree",
1005
1022
  "type": "boolean",
@@ -1305,7 +1322,7 @@
1305
1322
  "remote": {
1306
1323
  "description": "Where the iOS simulator runs: local here (overriding a lower layer); auto here first, then a remote.machines entry when this machine is full or busy; remote on a remote.machines entry in order, here only when none takes it; remote-only the same but never here; a machine name exactly that machine; eas or proxy a remote device backend",
1307
1324
  "type": "string",
1308
- "pattern": "^[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
1325
+ "pattern": "^(?:local:)?[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
1309
1326
  "x-stim": {
1310
1327
  "key": "ios.remote",
1311
1328
  "kind": "string",
@@ -1415,7 +1432,7 @@
1415
1432
  "remote": {
1416
1433
  "description": "Where the Android emulator runs: local here (overriding a lower layer); auto here first, then a remote.machines entry when this machine is full or busy; remote on a remote.machines entry in order, here only when none takes it; remote-only the same but never here; a machine name exactly that machine; eas or proxy a remote device backend",
1417
1434
  "type": "string",
1418
- "pattern": "^[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
1435
+ "pattern": "^(?:local:)?[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
1419
1436
  "x-stim": {
1420
1437
  "key": "android.remote",
1421
1438
  "kind": "string",
@@ -1474,7 +1491,7 @@
1474
1491
  "remote": {
1475
1492
  "description": "Where stim macos launches the app: local here; auto here unless this machine is busy, then a remote.machines entry; remote on a remote.machines entry in order, here only when none takes it; remote-only the same but never here; a machine name exactly that machine. The --remote flag overrides it",
1476
1493
  "type": "string",
1477
- "pattern": "^(?![Ee][Aa][Ss]$|[Pp][Rr][Oo][Xx][Yy]$)[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
1494
+ "pattern": "^(?![Ee][Aa][Ss]$|[Pp][Rr][Oo][Xx][Yy]$)(?:local:)?[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
1478
1495
  "x-stim": {
1479
1496
  "key": "macos.remote",
1480
1497
  "kind": "string",
@@ -1968,7 +1985,7 @@
1968
1985
  }
1969
1986
  },
1970
1987
  "idleCheckMinutes": {
1971
- "description": "Interval in minutes of the check that shuts down owned simulators and emulators idle for devices.idleShutdownMinutes, also with no dev server running",
1988
+ "description": "Interval in minutes of the check that shuts down owned simulators and emulators idle for devices.idleShutdownMinutes, also with no dev server running, and stops workspaces idle for maintenance.idleStopHours",
1972
1989
  "type": "integer",
1973
1990
  "minimum": 1,
1974
1991
  "default": 5,
@@ -1981,6 +1998,23 @@
1981
1998
  "env": "STIM_MAINTENANCE_IDLE_CHECK_MINUTES"
1982
1999
  }
1983
2000
  },
2001
+ "idleStopHours": {
2002
+ "description": "Hours with no native run, Metro bundle or HMR request, agent-device command, Stim command or live view before automatic maintenance and gc --delete stop a workspace's dev server and shut down its owned simulators and emulators, as stim stop does; device and app log lines do not count; 0 never",
2003
+ "type": "number",
2004
+ "minimum": 0,
2005
+ "default": 6,
2006
+ "x-stim": {
2007
+ "key": "maintenance.idleStopHours",
2008
+ "kind": "number",
2009
+ "scopes": [
2010
+ "machine",
2011
+ "workspace",
2012
+ "repo",
2013
+ "committed"
2014
+ ],
2015
+ "env": "STIM_MAINTENANCE_IDLE_STOP_HOURS"
2016
+ }
2017
+ },
1984
2018
  "sweepHours": {
1985
2019
  "description": "Age sweep interval in hours; 0 turns the age sweep off",
1986
2020
  "type": "integer",
@@ -2358,6 +2392,21 @@
2358
2392
  ]
2359
2393
  }
2360
2394
  },
2395
+ "lanAddresses": {
2396
+ "description": "IPv4 addresses or network interface names (such as en0) on which stim-server also accepts machines and phones on the local network, without Tailscale, on its own port. Empty listens on no local network address. Wildcard addresses are refused. Connections there run protocol 2's Noise authentication and encryption, without TLS",
2397
+ "type": "array",
2398
+ "items": {
2399
+ "type": "string"
2400
+ },
2401
+ "default": [],
2402
+ "x-stim": {
2403
+ "key": "server.lanAddresses",
2404
+ "kind": "strings",
2405
+ "scopes": [
2406
+ "machine"
2407
+ ]
2408
+ }
2409
+ },
2361
2410
  "maxLoadPerCore": {
2362
2411
  "description": "Load per core (5-minute load average divided by the CPU count) at which this machine counts as saturated: it declines builds other machines send it, reports the limit in its device offers so other machines skip it like a full one, stops preferring itself for automatic placement, and automatic iOS, Android and macOS placement treats it as busy",
2363
2412
  "type": "number",
@@ -2404,7 +2453,7 @@
2404
2453
  "type": "object",
2405
2454
  "properties": {
2406
2455
  "machines": {
2407
- "description": "Tailscale names of the remote machines this machine may build on and host owned simulators, emulators and macOS apps on, each optionally with :<port> of its tailscale serve route (default 7443). The order is the placement priority: each workload goes to the first machine with room and a load under its own limit. What each is used for follows the build and device-host approvals it grants, which doctor --fix asks for separately",
2456
+ "description": "The remote machines this machine may build on and host owned simulators, emulators and macOS apps on: a Tailscale name, optionally with :<port> of its tailscale serve route (default 7443), or local: and a host name or IPv4 address on the local network, optionally with :<port> of its stim-server (default 7787), whose server key doctor --fix pins after a person confirms its fingerprint. The order is the placement priority: each workload goes to the first machine with room and a load under its own limit. What each is used for follows the build and device-host approvals it grants, which doctor --fix asks for separately",
2408
2457
  "type": "array",
2409
2458
  "items": {
2410
2459
  "type": "string"
@@ -2478,7 +2527,7 @@
2478
2527
  "build": {
2479
2528
  "description": "Where iOS simulator Debug, Android emulator debug and macOS SwiftPM Debug builds run: local here; auto here while it has a free concurrency.maxBuilds slot and load under server.maxLoadPerCore, otherwise on a remote.machines entry; remote on a remote.machines entry in order, here only when none takes the build; remote-only the same but never here; a machine name exactly that machine without fallback. The ios, android and macos --remote-build flag overrides this setting and its environment override",
2480
2529
  "type": "string",
2481
- "pattern": "^[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
2530
+ "pattern": "^(?:local:)?[A-Za-z0-9][A-Za-z0-9.-]*(?::(?!0+$)(?:[0-5]?[0-9]{1,4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?$",
2482
2531
  "default": "auto",
2483
2532
  "x-stim": {
2484
2533
  "key": "remote.build",
@@ -1,5 +1,5 @@
1
1
  import { D as ownership_claim_exports, S as process_identity_exports, b as operationState, t as getExecutor, y as isTermination } from "./exec-aULwtNly.mjs";
2
- import { d as getConfigDir } from "./config-Cn94Jc0g.mjs";
2
+ import { d as getConfigDir } from "./config-AbUjIBOQ.mjs";
3
3
  import { n as stripAnsi, r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
4
4
  import { join } from "node:path";
5
5
  //#region src/engine/simslim.ts
@@ -1,9 +1,9 @@
1
- import { r as readWorkspaceState$1 } from "./workspace-state-kIZrdlSg.mjs";
2
- import { G as projectDeviceSlots, U as parseDeviceSlotKey, p as getProject } from "./config-Cn94Jc0g.mjs";
3
- import { O as getAvdNameForSerialAsync, j as listAdbDevicesAsync } from "./android-CsPs-7Mg.mjs";
4
- import { on as deviceShellArg } from "./ccache-Bm_A1xX9.mjs";
5
- import { y as fileLeaseIo } from "./activity-DRMg4_mD.mjs";
6
- import { f as listAllIosSimsAsync } from "./ios-B1DYuOjh.mjs";
1
+ import { r as readWorkspaceState$1 } from "./workspace-state-DGwkPXwq.mjs";
2
+ import { G as projectDeviceSlots, U as parseDeviceSlotKey, p as getProject } from "./config-AbUjIBOQ.mjs";
3
+ import { M as listAdbDevicesAsync, k as getAvdNameForSerialAsync } from "./android-DdKG6lyD.mjs";
4
+ import { on as deviceShellArg } from "./ccache-B8gY50-h.mjs";
5
+ import { y as fileLeaseIo } from "./activity-BTaUf0tc.mjs";
6
+ import { f as listAllIosSimsAsync } from "./ios-CXnoVO_z.mjs";
7
7
  import { hostedNativeRecords } from "@stim-cli/core/state";
8
8
  //#region src/engine/slot-launch.ts
9
9
  function launchSlotScope(root, slot = "default") {
@@ -1,5 +1,5 @@
1
1
  import { c as throwIfCancelled, t as getExecutor, x as withDrainingCancellation } from "./exec-aULwtNly.mjs";
2
- import { ot as runCancellationSignal } from "./toolchain-mLA_km-b.mjs";
2
+ import { st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
3
3
  import { existsSync, lstatSync, promises, readdirSync, realpathSync, statSync } from "node:fs";
4
4
  import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
5
5
  import { validMacosResourceDestination } from "@stim-cli/core";
@@ -1,15 +1,15 @@
1
1
  import { D as ownership_claim_exports, S as process_identity_exports, a as waitForGroupExit, c as throwIfCancelled, d as workspaceProcessLockError, l as WorkspaceProcessCleanupError, o as cancellableSleep, r as groupExitBudgetMs, t as getExecutor, u as withWorkspaceProcessLock, x as withDrainingCancellation } from "./exec-aULwtNly.mjs";
2
- import { S as supervisorLogFile, _ as ensureWorkspaceStorage, i as recordWorkspaceUse, k as workspaceLogsDir$1, l as withWorkspaceStateLockAsync, n as clearWorkspaceStateKeys, r as readWorkspaceState$1, s as updateWorkspaceStateAsync, w as workspaceAgentDeviceDir } from "./workspace-state-kIZrdlSg.mjs";
3
- import { E as upsertProject, O as withConfigLockAsync$1, p as getProject, x as releaseMetroPort } from "./config-Cn94Jc0g.mjs";
4
- import { _ as stepTimer, l as phaseLine } from "./command-output-C8R1KIvi.mjs";
5
- import { A as metroCommandSetting, B as publicUrlSetting, G as remoteIosSetting, I as ngrokUrlSetting, J as resolveCacheProviderConfig, M as metroIdleStopMinutesSetting, N as metroPortSetting, P as metroTunnelSettingError, U as remoteAndroidSetting, Y as resolveIosProjectDir, Z as resolveProjectSettingsAsync, _ as inertSettingWarning, a as SETTING_SHAPE_REMEDY, dt as detectProviders, ft as planMetroReach, h as deviceIdleShutdownMinutesSetting, j as metroCommandSettingError, m as defaultAndroidLayout, ot as tunnelModeSetting, p as cacheProviderSettingError, q as resolveAndroidLayout, rt as settingShapeErrors, st as unknownSettingKeys, ut as PUBLIC_METRO_ENV } from "./settings-CY5JZlNN.mjs";
6
- import { E as MODE_EXPO, M as readMetroTunnel, O as clearManagedMetroTunnel, S as readAppJson, T as MODE_COMMAND, c as projectProblem, i as findProjectRoot$1, t as NO_PROJECT_REFUSAL, v as detectIsExpo, w as MODE_BARE, x as readAppConfigText } from "./project-Sui52ywT.mjs";
7
- import { a as workspaceLinkLine, o as workspaceLinks } from "./stim-desktop-CbWo21kb.mjs";
8
- import { _ as PORT_INSPECTION_REMEDY, a as listeningPidsAsync, c as pidExists, d as resolveProjectMetro, f as signalProcessTree, g as reserveMetroPort, h as isMetroRunning, m as createPortProbe, u as processCwds, v as PortInspectionError } from "./metro-BnhXV2Mj.mjs";
9
- import { a as levelRank } from "./ndjson-Dy2W4vRa.mjs";
10
- import { En as runProcessOperation, In as readProjectConfig, Vn as remoteCliInvocation, b as stopOwnedMetroForReset, c as budgetGate, wn as exitAfterFlush } from "./ccache-Bm_A1xX9.mjs";
11
- import { C as stopTunnel, D as withManagedTunnelLock, S as startTunnelSequence, T as withManagedRemoteWorktreeLock, w as terminateChild, x as resolveSupervisorTarget } from "./workspaces-CmOcceDN.mjs";
12
- import { i as restoreLightenedDependencies } from "./lightened-DFAJgfIk.mjs";
2
+ import { S as supervisorLogFile, _ as ensureWorkspaceStorage, i as recordWorkspaceUse, k as workspaceLogsDir$1, l as withWorkspaceStateLockAsync, n as clearWorkspaceStateKeys, r as readWorkspaceState$1, s as updateWorkspaceStateAsync, w as workspaceAgentDeviceDir } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { E as upsertProject, O as withConfigLockAsync$1, p as getProject, x as releaseMetroPort } from "./config-AbUjIBOQ.mjs";
4
+ import { _ as stepTimer, l as phaseLine } from "./command-output-BBW8eWPL.mjs";
5
+ import { A as metroCommandSetting, B as publicUrlSetting, G as remoteIosSetting, I as ngrokUrlSetting, J as resolveCacheProviderConfig, M as metroIdleStopMinutesSetting, N as metroPortSetting, P as metroTunnelSettingError, U as remoteAndroidSetting, Y as resolveIosProjectDir, Z as resolveProjectSettingsAsync, _ as inertSettingWarning, a as SETTING_SHAPE_REMEDY, dt as detectProviders, ft as planMetroReach, h as deviceIdleShutdownMinutesSetting, j as metroCommandSettingError, m as defaultAndroidLayout, ot as tunnelModeSetting, p as cacheProviderSettingError, q as resolveAndroidLayout, rt as settingShapeErrors, st as unknownSettingKeys, ut as PUBLIC_METRO_ENV } from "./settings-D776ygML.mjs";
6
+ import { E as MODE_EXPO, M as readMetroTunnel, O as clearManagedMetroTunnel, S as readAppJson, T as MODE_COMMAND, c as projectProblem, i as findProjectRoot$1, t as NO_PROJECT_REFUSAL, v as detectIsExpo, w as MODE_BARE, x as readAppConfigText } from "./project-DPQjnpcI.mjs";
7
+ import { a as workspaceLinkLine, o as workspaceLinks } from "./stim-desktop-CYXLFpFS.mjs";
8
+ import { _ as PORT_INSPECTION_REMEDY, a as listeningPidsAsync, c as pidExists, d as resolveProjectMetro, f as signalProcessTree, g as reserveMetroPort, h as isMetroRunning, m as createPortProbe, u as processCwds, v as PortInspectionError } from "./metro-BMQHczcf.mjs";
9
+ import { a as levelRank } from "./ndjson-CrjIsGzw.mjs";
10
+ import { En as runProcessOperation, In as readProjectConfig, Vn as remoteCliInvocation, b as stopOwnedMetroForReset, c as budgetGate, wn as exitAfterFlush } from "./ccache-B8gY50-h.mjs";
11
+ import { C as stopTunnel, D as withManagedTunnelLock, S as startTunnelSequence, T as withManagedRemoteWorktreeLock, w as terminateChild, x as resolveSupervisorTarget } from "./workspaces-7_RWoi6c.mjs";
12
+ import { i as restoreLightenedDependencies } from "./lightened-23pqe7LS.mjs";
13
13
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
14
14
  import { n as windowsLauncherArgs } from "./detached-entry-BPlSaCwC.mjs";
15
15
  import { appendFileSync, closeSync, mkdirSync, openSync, readFileSync } from "node:fs";
@@ -1,2 +1,2 @@
1
- import { a as registerStart, c as startDevServer, d as supervisorSignalable, f as tailLines, i as readLogTail, l as startFacts, n as liveSupervisor, o as resolveWorkspaceMetroPort, p as wantsExpoOwnTunnel, r as parseWait, s as startCommand, t as failureEvidence, u as supervisorEntry } from "./start-DYLk6GXn.mjs";
1
+ import { a as registerStart, c as startDevServer, d as supervisorSignalable, f as tailLines, i as readLogTail, l as startFacts, n as liveSupervisor, o as resolveWorkspaceMetroPort, p as wantsExpoOwnTunnel, r as parseWait, s as startCommand, t as failureEvidence, u as supervisorEntry } from "./start-B7J5a9nS.mjs";
2
2
  export { startCommand as default, failureEvidence, liveSupervisor, parseWait, readLogTail, registerStart, resolveWorkspaceMetroPort, startDevServer, startFacts, supervisorEntry, supervisorSignalable, tailLines, wantsExpoOwnTunnel };
@@ -1,5 +1,5 @@
1
1
  import { S as process_identity_exports } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, k as workspaceLogsDir$1, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-kIZrdlSg.mjs";
2
+ import { E as workspaceDir, k as workspaceLogsDir$1, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-DGwkPXwq.mjs";
3
3
  import { existsSync } from "node:fs";
4
4
  import { join } from "node:path";
5
5
  import { readMacosRecord } from "@stim-cli/core/state";
@@ -1,7 +1,7 @@
1
1
  import { D as ownership_claim_exports, S as process_identity_exports, l as WorkspaceProcessCleanupError, t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, d as writeWorkspaceState, k as workspaceLogsDir$1, o as updateWorkspaceState, r as readWorkspaceState$1, t as clearWorkspaceStateKey } from "./workspace-state-kIZrdlSg.mjs";
2
+ import { E as workspaceDir, d as writeWorkspaceState, k as workspaceLogsDir$1, o as updateWorkspaceState, r as readWorkspaceState$1, t as clearWorkspaceStateKey } from "./workspace-state-DGwkPXwq.mjs";
3
3
  import { t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
4
- import { c as pidExists } from "./metro-BnhXV2Mj.mjs";
4
+ import { c as pidExists } from "./metro-BMQHczcf.mjs";
5
5
  import { readFileSync, readlinkSync, rmSync } from "node:fs";
6
6
  import { hostname } from "node:os";
7
7
  import { join } from "node:path";
@@ -1,7 +1,7 @@
1
- import { P as formatBytes } from "./config-Cn94Jc0g.mjs";
2
- import { o as formatLongDuration } from "./command-output-C8R1KIvi.mjs";
3
- import { i as findProjectRoot$1 } from "./project-Sui52ywT.mjs";
4
- import { i as getSwiftpmCacheUsage, n as swiftpmCacheLines, r as getAgentDeviceUsage, t as agentDeviceLines } from "./agent-device-usage-output-tE90fDdo.mjs";
1
+ import { P as formatBytes } from "./config-AbUjIBOQ.mjs";
2
+ import { o as formatLongDuration } from "./command-output-BBW8eWPL.mjs";
3
+ import { i as findProjectRoot$1 } from "./project-DPQjnpcI.mjs";
4
+ import { i as getSwiftpmCacheUsage, n as swiftpmCacheLines, r as getAgentDeviceUsage, t as agentDeviceLines } from "./agent-device-usage-output-DYBpO17K.mjs";
5
5
  import { t as readProjectStats } from "./stats-report-B86Cv7Uc.mjs";
6
6
  import { archivedUsage, readArchives } from "@stim-cli/core/state";
7
7
  import chalk from "chalk";
@@ -1,5 +1,5 @@
1
- import { P as formatBytes } from "./config-Cn94Jc0g.mjs";
2
- import { t as resolveMaintenanceSettings } from "./settings-Djl-mpjX.mjs";
1
+ import { P as formatBytes } from "./config-AbUjIBOQ.mjs";
2
+ import { t as resolveMaintenanceSettings } from "./settings-D9LtQaUw.mjs";
3
3
  import { claimRemoveCommand, readClaimSet } from "@stim-cli/core/ownership-claim";
4
4
  import { maintenanceRunClaims, readMaintenanceState } from "@stim-cli/core/state";
5
5
  //#region src/maintenance/status.ts
@@ -1,2 +1,2 @@
1
- import { n as runStatusWatch, r as statusCommand, t as readVolumes } from "./status-BHCkOZga.mjs";
1
+ import { n as runStatusWatch, r as statusCommand, t as readVolumes } from "./status-_rWXFSO7.mjs";
2
2
  export { statusCommand as default, readVolumes, runStatusWatch };
@@ -1,29 +1,29 @@
1
1
  import { S as process_identity_exports, t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { O as workspaceLogErrorIndex, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-kIZrdlSg.mjs";
3
- import { G as projectDeviceSlots, P as formatBytes, R as volumeRootFor, U as parseDeviceSlotKey, V as deviceSlotKey, _ as loadConfig$1, d as getConfigDir, u as getConcurrencyLimits } from "./config-Cn94Jc0g.mjs";
4
- import { a as formatElapsed, i as formatDuration, r as clockTime, u as plural } from "./command-output-C8R1KIvi.mjs";
2
+ import { O as workspaceLogErrorIndex, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { G as projectDeviceSlots, P as formatBytes, R as volumeRootFor, U as parseDeviceSlotKey, V as deviceSlotKey, _ as loadConfig$1, d as getConfigDir, u as getConcurrencyLimits } from "./config-AbUjIBOQ.mjs";
4
+ import { a as formatElapsed, i as formatDuration, r as clockTime, u as plural } from "./command-output-BBW8eWPL.mjs";
5
5
  import { s as gitAsync } from "./operation-exec-Dp4FuIGR.mjs";
6
- import { Bt as repoRoot, Ct as gitCommonDirOnDisk, Ot as linkedWorktreesOnDisk, Q as resolveSettings, lt as workspaceHiddenSetting, xt as gitCommonDir } from "./settings-CY5JZlNN.mjs";
7
- import { I as readWorkspaceLaunches, M as readMetroTunnel, P as readRemoteSession, S as readAppJson, a as findServerWorkspace, l as projectShortcut, u as detectPlatforms, v as detectIsExpo, y as detectTutorial } from "./project-Sui52ywT.mjs";
8
- import { A as listAdbDevices, B as ownedAvdDeviceProfile, W as ownedAvdSerialResolver, ft as POOL_SETTING_REMEDY, j as listAdbDevicesAsync, vt as parkedMaxSetting, yt as readParked } from "./android-CsPs-7Mg.mjs";
9
- import { c as pidExists, d as resolveProjectMetro, h as isMetroRunning, i as listeningPids, l as processCwd, o as listeningPidsByPort, u as processCwds } from "./metro-BnhXV2Mj.mjs";
10
- import { o as parseNdjsonLine } from "./ndjson-Dy2W4vRa.mjs";
11
- import { E as metroLastStop, S as describeMetroLastStop, cn as hasMetroReverse, cr as attributeMachineUsage, lr as readFootprints, p as machineNumber } from "./ccache-Bm_A1xX9.mjs";
12
- import { a as readWebPage, o as readWebRecord, u as webFacts } from "./state-B2QJbDwz.mjs";
13
- import { A as poolLine, C as diskLine, D as loadLine, E as gitSummaryText, F as tightVolumes, I as unprovisionedWorktrees, L as withWebFacts, M as remoteDeviceState, N as slotUsageLines, O as metroReverseTargets, P as statusActivity, S as deviceLeaseStates, _ as addReverseMissingIssue, b as capacityLoad, g as activityLabel, j as remoteDeviceLine, k as parseDfFree, r as readEasSessionLedger$1, v as applyMachineMemory, w as environmentState, x as deviceLeaseLines, y as capacity } from "./eas-session-ledger-CBFo_Uo1.mjs";
14
- import { Ct as buildSlotUsage, G as buildStatusLine, J as parseActiveBuild, K as bundlingActivity, U as activeBuildState, V as ACTIVE_BUILD_KEY, W as buildReport, at as readStats$1, lt as statsProjectKey$1, x as resolveSupervisorTarget } from "./workspaces-CmOcceDN.mjs";
15
- import { a as createDeviceProcessTables, b as leaseIsExpired, h as tailLines, m as readWebActivity, r as createActivityReader, w as parseWorkspaceLeases, x as listLeaseFiles } from "./activity-DRMg4_mD.mjs";
16
- import { b as parseSimctlList, f as listAllIosSimsAsync } from "./ios-B1DYuOjh.mjs";
17
- import { p as probeHostedSession } from "./hosted-client-DDRm9hPJ.mjs";
18
- import "./hosted-macos-B7-8Pv4H.mjs";
19
- import { i as readSupervisorState } from "./stop-D-dGE9gh.mjs";
20
- import { l as applyStatusMeasures, n as workspacePhase, s as mergeState, u as createStatusMeasurer } from "./warm-progress-B0Vpuvpl.mjs";
21
- import { r as workspaceRecordingEnabled } from "./recordings-iy0mkm7b.mjs";
22
- import { n as maintenanceLines, r as maintenanceStatus } from "./status-7ULDEJ1e.mjs";
23
- import { s as deviceSlotUsage } from "./device-capacity-Cd8lMSn3.mjs";
24
- import { d as readIosDevices, s as isReachable } from "./ios-device-B4elVFKi.mjs";
25
- import { t as triggerMaintenance } from "./trigger-DMou-X7j.mjs";
26
- import { a as createRefreshScheduler, c as watchStatusSources, n as WATCH_LIGHT_INTERVAL_MS, o as watchChangeKey, r as WATCH_MACHINE_INTERVAL_MS, s as watchPayload, t as WATCH_FALLBACK_MS } from "./status-watch-BmsPqYSU.mjs";
6
+ import { Bt as repoRoot, Ct as gitCommonDirOnDisk, Ot as linkedWorktreesOnDisk, Q as resolveSettings, lt as workspaceHiddenSetting, xt as gitCommonDir } from "./settings-D776ygML.mjs";
7
+ import { I as readWorkspaceLaunches, M as readMetroTunnel, P as readRemoteSession, S as readAppJson, a as findServerWorkspace, l as projectShortcut, u as detectPlatforms, v as detectIsExpo, y as detectTutorial } from "./project-DPQjnpcI.mjs";
8
+ import { B as ownedAvdDeviceProfile, M as listAdbDevicesAsync, W as ownedAvdSerialResolver, ft as POOL_SETTING_REMEDY, j as listAdbDevices, vt as parkedMaxSetting, yt as readParked } from "./android-DdKG6lyD.mjs";
9
+ import { c as pidExists, d as resolveProjectMetro, h as isMetroRunning, i as listeningPids, l as processCwd, o as listeningPidsByPort, u as processCwds } from "./metro-BMQHczcf.mjs";
10
+ import { o as parseNdjsonLine } from "./ndjson-CrjIsGzw.mjs";
11
+ import { E as metroLastStop, S as describeMetroLastStop, cn as hasMetroReverse, cr as attributeMachineUsage, lr as readFootprints, p as machineNumber } from "./ccache-B8gY50-h.mjs";
12
+ import { a as readWebPage, o as readWebRecord, u as webFacts } from "./state-D5ZxwCGJ.mjs";
13
+ import { A as poolLine, C as diskLine, D as loadLine, E as gitSummaryText, F as tightVolumes, I as unprovisionedWorktrees, L as withWebFacts, M as remoteDeviceState, N as slotUsageLines, O as metroReverseTargets, P as statusActivity, S as deviceLeaseStates, _ as addReverseMissingIssue, b as capacityLoad, g as activityLabel, j as remoteDeviceLine, k as parseDfFree, r as readEasSessionLedger$1, v as applyMachineMemory, w as environmentState, x as deviceLeaseLines, y as capacity } from "./eas-session-ledger-CW3l-inB.mjs";
14
+ import { Ct as buildSlotUsage, G as buildStatusLine, J as parseActiveBuild, K as bundlingActivity, U as activeBuildState, V as ACTIVE_BUILD_KEY, W as buildReport, at as readStats$1, lt as statsProjectKey$1, x as resolveSupervisorTarget } from "./workspaces-7_RWoi6c.mjs";
15
+ import { a as createDeviceProcessTables, b as leaseIsExpired, h as tailLines, m as readWebActivity, r as createActivityReader, w as parseWorkspaceLeases, x as listLeaseFiles } from "./activity-BTaUf0tc.mjs";
16
+ import { b as parseSimctlList, f as listAllIosSimsAsync } from "./ios-CXnoVO_z.mjs";
17
+ import { p as probeHostedSession } from "./hosted-client-Cect92SZ.mjs";
18
+ import "./hosted-macos-BP9Kucat.mjs";
19
+ import { i as readSupervisorState } from "./stop-CnF9ixYe.mjs";
20
+ import { l as applyStatusMeasures, n as workspacePhase, s as mergeState, u as createStatusMeasurer } from "./warm-progress-DQ2wQZKp.mjs";
21
+ import { r as workspaceRecordingEnabled } from "./recordings-CHMaF73C.mjs";
22
+ import { n as maintenanceLines, r as maintenanceStatus } from "./status-CK7ZoEhV.mjs";
23
+ import { s as deviceSlotUsage } from "./device-capacity-C5C_jOQd.mjs";
24
+ import { d as readIosDevices, s as isReachable } from "./ios-device-ClSfuu-_.mjs";
25
+ import { t as triggerMaintenance } from "./trigger-CfnOfpDd.mjs";
26
+ import { a as createRefreshScheduler, c as watchStatusSources, n as WATCH_LIGHT_INTERVAL_MS, o as watchChangeKey, r as WATCH_MACHINE_INTERVAL_MS, s as watchPayload, t as WATCH_FALLBACK_MS } from "./status-watch-CnSyXUmj.mjs";
27
27
  import { t as watchStdoutReader } from "./stdout-reader-C8yjre1x.mjs";
28
28
  import { createHash, randomUUID } from "node:crypto";
29
29
  import { mkdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
@@ -1,8 +1,8 @@
1
1
  import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { d as androidToolPath } from "./android-CsPs-7Mg.mjs";
3
- import { c as pidExists } from "./metro-BnhXV2Mj.mjs";
4
- import { n as easMachineStateRoot } from "./eas-session-ledger-CBFo_Uo1.mjs";
5
- import { b as parseSimctlList } from "./ios-B1DYuOjh.mjs";
2
+ import { d as androidToolPath } from "./android-DdKG6lyD.mjs";
3
+ import { c as pidExists } from "./metro-BMQHczcf.mjs";
4
+ import { n as easMachineStateRoot } from "./eas-session-ledger-CW3l-inB.mjs";
5
+ import { b as parseSimctlList } from "./ios-CXnoVO_z.mjs";
6
6
  import { existsSync, readdirSync, statSync, watch } from "node:fs";
7
7
  import { basename, dirname, join } from "node:path";
8
8
  //#region src/status-watch.ts
@@ -1,4 +1,4 @@
1
- import { n as runStatusWatch } from "./status-BHCkOZga.mjs";
1
+ import { n as runStatusWatch } from "./status-_rWXFSO7.mjs";
2
2
  import { parentPort, workerData } from "node:worker_threads";
3
3
  //#region src/status-worker.ts
4
4
  const STOP_EXIT_MS = 500;
@@ -1,5 +1,5 @@
1
1
  import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { C as saveConfig, c as ensureConfig } from "./config-Cn94Jc0g.mjs";
2
+ import { C as saveConfig, c as ensureConfig } from "./config-AbUjIBOQ.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { workspaceId } from "@stim-cli/core";
5
5
  import { readHomeIdentity, withConfigLockAsync } from "@stim-cli/core/state";
@@ -1,3 +1,3 @@
1
- import { x as resolveSupervisorTarget } from "./workspaces-CmOcceDN.mjs";
2
- import { a as resolveCollectorTargets, c as stopWorkspaceNow, i as readSupervisorState, n as clearSupervisorState, o as runStop, r as readCollectorState, s as stopCommand, t as clearCollectorState } from "./stop-D-dGE9gh.mjs";
1
+ import { x as resolveSupervisorTarget } from "./workspaces-7_RWoi6c.mjs";
2
+ import { a as resolveCollectorTargets, c as stopWorkspaceNow, i as readSupervisorState, n as clearSupervisorState, o as runStop, r as readCollectorState, s as stopCommand, t as clearCollectorState } from "./stop-CnF9ixYe.mjs";
3
3
  export { clearCollectorState, clearSupervisorState, stopCommand as default, readCollectorState, readSupervisorState, resolveCollectorTargets, resolveSupervisorTarget, runStop, stopWorkspaceNow };
@@ -1,8 +1,8 @@
1
1
  import { D as ownership_claim_exports, S as process_identity_exports, u as withWorkspaceProcessLock } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, d as writeWorkspaceState, l as withWorkspaceStateLockAsync } from "./workspace-state-kIZrdlSg.mjs";
3
- import { a as macosRuntimeClaim, o as requiredMacosRecord } from "./state-BXC1Lfxw.mjs";
4
- import { A as runningBundleInstancesAsync, j as runningInstancesInAsync, k as hostedBundleDirs } from "./workspaces-CmOcceDN.mjs";
5
- import { n as stopHostedMacos } from "./hosted-macos-B7-8Pv4H.mjs";
2
+ import { E as workspaceDir, d as writeWorkspaceState, l as withWorkspaceStateLockAsync } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { a as macosRuntimeClaim, o as requiredMacosRecord } from "./state-C2AUjjhg.mjs";
4
+ import { A as runningBundleInstancesAsync, j as runningInstancesInAsync, k as hostedBundleDirs } from "./workspaces-7_RWoi6c.mjs";
5
+ import { n as stopHostedMacos } from "./hosted-macos-BP9Kucat.mjs";
6
6
  import { readMacosRecord } from "@stim-cli/core/state";
7
7
  //#region src/macos/stop.ts
8
8
  const APP_EXIT_MS = 5e3;
@@ -1,19 +1,19 @@
1
1
  import { D as ownership_claim_exports, E as debugLog, S as process_identity_exports, l as WorkspaceProcessCleanupError, u as withWorkspaceProcessLock } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, c as withWorkspaceStateLock, d as writeWorkspaceState, l as withWorkspaceStateLockAsync, n as clearWorkspaceStateKeys, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-kIZrdlSg.mjs";
3
- import { E as upsertProject, G as projectDeviceSlots, H as deviceSlotPlatforms, O as withConfigLockAsync$1, U as parseDeviceSlotKey, W as parseDeviceSlotOption, o as clearSupervisor, p as getProject, q as validateDeviceSlot } from "./config-Cn94Jc0g.mjs";
4
- import { f as refuseNoProject, l as phaseLine, p as releasedLeaseFact, u as plural } from "./command-output-C8R1KIvi.mjs";
5
- import { A as clearWorkspaceLaunches, M as readMetroTunnel, O as clearManagedMetroTunnel, P as readRemoteSession, T as MODE_COMMAND, j as clearWorkspaceSupervisor, k as clearRemoteSession, n as findCommandWorkspace } from "./project-Sui52ywT.mjs";
6
- import { t as macosAppPresent } from "./state-BXC1Lfxw.mjs";
7
- import { et as removeOwnedEmulatorMetroReverses } from "./android-CsPs-7Mg.mjs";
8
- import { a as listeningPidsAsync, c as pidExists, d as resolveProjectMetro, h as isMetroRunning, p as signalProcessTreeAsync, r as killMetroTreeAsync, u as processCwds } from "./metro-BnhXV2Mj.mjs";
9
- import { D as requestDevServerStop, Ln as resolveEasCliBin, Ot as endRecordedSession, T as logVanishedSupervisor, k as withdrawDevServerStopRequest } from "./ccache-Bm_A1xX9.mjs";
10
- import { C as stopTunnel, ht as teardownOwnedIosSim, mt as teardownOwnedBrowser, pt as teardownOwnedAvd, x as resolveSupervisorTarget } from "./workspaces-CmOcceDN.mjs";
11
- import { $ as clearNativeRunCancel, X as NATIVE_RUN_LOCK, Z as NATIVE_RUN_WAIT_MS, et as decideStopAction, it as requestNativeRunCancel, nt as nativeRunHolder, rt as nativeRunWaitNotice, tt as describeNativeRunHolder } from "./toolchain-mLA_km-b.mjs";
12
- import { O as releaseWorkspaceLeasesAsync, y as fileLeaseIo } from "./activity-DRMg4_mD.mjs";
13
- import { i as stopHostedAndroid } from "./hosted-android-DlaKLbW0.mjs";
14
- import { a as stopHostedIos, n as removePhoneReverses } from "./phone-reverses-BzTa8g1F.mjs";
15
- import { r as stopMacosApp } from "./stop-DQvE-P76.mjs";
16
- import { n as verifyCollectorOwnership } from "./ownership-DJCq48IJ.mjs";
2
+ import { E as workspaceDir, c as withWorkspaceStateLock, d as writeWorkspaceState, l as withWorkspaceStateLockAsync, n as clearWorkspaceStateKeys, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-DGwkPXwq.mjs";
3
+ import { E as upsertProject, G as projectDeviceSlots, H as deviceSlotPlatforms, O as withConfigLockAsync$1, U as parseDeviceSlotKey, W as parseDeviceSlotOption, o as clearSupervisor, p as getProject, q as validateDeviceSlot } from "./config-AbUjIBOQ.mjs";
4
+ import { f as refuseNoProject, l as phaseLine, p as releasedLeaseFact, u as plural } from "./command-output-BBW8eWPL.mjs";
5
+ import { A as clearWorkspaceLaunches, M as readMetroTunnel, O as clearManagedMetroTunnel, P as readRemoteSession, T as MODE_COMMAND, j as clearWorkspaceSupervisor, k as clearRemoteSession, n as findCommandWorkspace } from "./project-DPQjnpcI.mjs";
6
+ import { t as macosAppPresent } from "./state-C2AUjjhg.mjs";
7
+ import { et as removeOwnedEmulatorMetroReverses } from "./android-DdKG6lyD.mjs";
8
+ import { a as listeningPidsAsync, c as pidExists, d as resolveProjectMetro, h as isMetroRunning, p as signalProcessTreeAsync, r as killMetroTreeAsync, u as processCwds } from "./metro-BMQHczcf.mjs";
9
+ import { D as requestDevServerStop, Ln as resolveEasCliBin, Ot as endRecordedSession, T as logVanishedSupervisor, k as withdrawDevServerStopRequest } from "./ccache-B8gY50-h.mjs";
10
+ import { C as stopTunnel, ht as teardownOwnedIosSim, mt as teardownOwnedBrowser, pt as teardownOwnedAvd, x as resolveSupervisorTarget } from "./workspaces-7_RWoi6c.mjs";
11
+ import { Q as NATIVE_RUN_WAIT_MS, Z as NATIVE_RUN_LOCK, at as requestNativeRunCancel, et as clearNativeRunCancel, it as nativeRunWaitNotice, nt as describeNativeRunHolder, rt as nativeRunHolder, tt as decideStopAction } from "./toolchain-DLdoyxIt.mjs";
12
+ import { O as releaseWorkspaceLeasesAsync, y as fileLeaseIo } from "./activity-BTaUf0tc.mjs";
13
+ import { i as stopHostedAndroid } from "./hosted-android-Du7NxufJ.mjs";
14
+ import { a as stopHostedIos, n as removePhoneReverses } from "./phone-reverses-CvhhkGMH.mjs";
15
+ import { r as stopMacosApp } from "./stop-CMVfaA-6.mjs";
16
+ import { n as verifyCollectorOwnership } from "./ownership-Dtz9G5Gl.mjs";
17
17
  import { hostedAndroidDeviceName, hostedAndroidRecords, hostedIosRecords, hostedNativeRecords, isJsonObject, parseHostedNativePlacement } from "@stim-cli/core/state";
18
18
  import chalk from "chalk";
19
19
  //#region src/commands/stop.ts
@@ -267,7 +267,7 @@ async function stopWorkspace({ root, operation, project = void 0, state = void 0
267
267
  probe: (candidatePort) => isMetroRunning(candidatePort, operation?.signal),
268
268
  pidsOf: listeningPidsAsync,
269
269
  cwdOf: async (pid) => (await processCwds([pid])).get(pid) ?? null
270
- }), teardownIos = teardownOwnedIosSim, teardownAvd = teardownOwnedAvd, teardownBrowser = (projectRoot) => teardownOwnedBrowser(projectRoot), stopMacos, hostedSlot, remoteDevice = void 0, teardownRemoteSession = (projectRoot, id) => defaultTeardownRemoteSession(projectRoot, id, operation), metroTunnel = void 0, stopMetroTunnel = stopTunnel, releaseLeases = releaseWorkspaceLeasesAsync, freePort = defaultFreePort, clearRegistration = (projectRoot, expected) => defaultClearRegistration(projectRoot, expected, report), clearState = (projectRoot, expected) => withWorkspaceStateLockAsync(projectRoot, () => clearSupervisorState(projectRoot, expected)), report = (line) => console.error(line) }) {
270
+ }), teardownIos = teardownOwnedIosSim, teardownAvd = teardownOwnedAvd, teardownBrowser = (projectRoot) => teardownOwnedBrowser(projectRoot), stopMacos, hostedSlot, remoteDevice = void 0, teardownRemoteSession = (projectRoot, id) => defaultTeardownRemoteSession(projectRoot, id, operation), metroTunnel = void 0, stopMetroTunnel = stopTunnel, releaseLeases = releaseWorkspaceLeasesAsync, freePort = defaultFreePort, clearRegistration = (projectRoot, expected) => defaultClearRegistration(projectRoot, expected, report), clearState = (projectRoot, expected) => withWorkspaceStateLockAsync(projectRoot, () => clearSupervisorState(projectRoot, expected)), report = (line) => console.error(line), requester }) {
271
271
  const proj = project === void 0 ? getProject(root) : project;
272
272
  const sup = state === void 0 ? readSupervisorState(root) : state;
273
273
  const collectorRecords = collectors === void 0 ? readCollectorState(root) : collectors;
@@ -347,7 +347,8 @@ async function stopWorkspace({ root, operation, project = void 0, state = void 0
347
347
  killGroup,
348
348
  waiter,
349
349
  report,
350
- releaseReverses
350
+ releaseReverses,
351
+ requester
351
352
  });
352
353
  if (outcomes.supervisor.status !== "stopped") {
353
354
  ok = false;
@@ -648,11 +649,11 @@ async function reapCollectors(root, collectors, { isAlive, signal, report, verif
648
649
  entries
649
650
  };
650
651
  }
651
- async function stopSupervisor(target, { root, killGroup, waiter, report, releaseReverses }) {
652
+ async function stopSupervisor(target, { root, killGroup, waiter, report, releaseReverses, requester }) {
652
653
  await releaseReverses();
653
654
  report(chalk.dim(phaseLine("stop", `sending SIGTERM to supervisor process group ${target.pid}`)));
654
655
  try {
655
- await withWorkspaceStateLockAsync(root, () => requestDevServerStop(root, target.processToken, { by: "stim stop" }));
656
+ await withWorkspaceStateLockAsync(root, () => requestDevServerStop(root, target.processToken, requester ?? { by: "stim stop" }));
656
657
  } catch {}
657
658
  let signalled = false;
658
659
  try {
@@ -16,6 +16,7 @@ interface ServerHandle {
16
16
  close(): Promise<void> | void;
17
17
  onExit?(cb: (info?: ServerExitInfo | null) => void): void;
18
18
  serverPid?: number | null;
19
+ observesRequests?: boolean;
19
20
  }
20
21
  type ServerStarter = (opts: {
21
22
  root: string;