stim 1.27.0 → 1.28.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 (137) hide show
  1. package/dist/{acquire-artifact-BKN2Yuhg.mjs → acquire-artifact-CKByBnTD.mjs} +1 -1
  2. package/dist/{act-ROviTF_t.mjs → act-8iswyfRa.mjs} +36 -18
  3. package/dist/{activity-Cd-ysFes.mjs → activity-DRMg4_mD.mjs} +3 -3
  4. package/dist/{agent-device-usage-output-C5nCKWp9.mjs → agent-device-usage-output-tE90fDdo.mjs} +3 -3
  5. package/dist/{android-Cd6w7_qw.mjs → android-CHmSU4B4.mjs} +40 -37
  6. package/dist/{android-DriNoAVy.mjs → android-CsPs-7Mg.mjs} +3 -3
  7. package/dist/{android-Deb9X3_Y.mjs → android-D577ApKG.mjs} +1 -1
  8. package/dist/{android--HBgpvpW.mjs → android-YWCbmkVK.mjs} +5 -5
  9. package/dist/{android-cas-D5e6ecUg.mjs → android-cas-_aDifWW0.mjs} +2 -2
  10. package/dist/api.d.mts +1 -1
  11. package/dist/api.mjs +24 -24
  12. package/dist/{apk-signed-tail-BHQHx3Rm.mjs → apk-signed-tail-CQbwM0qO.mjs} +2 -2
  13. package/dist/{artifact-faemIZv5.mjs → artifact-DYtHjxsn.mjs} +12 -12
  14. package/dist/{artifact-0AGJYB9O.mjs → artifact-bFkfD3vf.mjs} +12 -12
  15. package/dist/{auto-placement-z-H5pJza.mjs → auto-placement-BVqs8AJi.mjs} +7 -7
  16. package/dist/{browser-web-slD8AvLp.mjs → browser-web-BUaLcafY.mjs} +10 -10
  17. package/dist/{build-hS0QyFlQ.mjs → build-cQURy_KW.mjs} +20 -20
  18. package/dist/{build-cache-gBJ-WKzA.mjs → build-cache-CZULpXVl.mjs} +3 -3
  19. package/dist/{build-plan-CBqYbzYM.mjs → build-plan-CxoYfxsc.mjs} +6 -6
  20. package/dist/{ccache-BWTze1Ls.mjs → ccache-Bm_A1xX9.mjs} +15 -14
  21. package/dist/{cli-ftXDLto1.mjs → cli-CpbaLDa7.mjs} +17 -17
  22. package/dist/cli.mjs +1 -1
  23. package/dist/{client-xsdxrhWA.mjs → client-YxCer6ab.mjs} +39 -6
  24. package/dist/collector-run.mjs +3 -3
  25. package/dist/{command-output-Dj-WT4BP.mjs → command-output-C8R1KIvi.mjs} +1 -1
  26. package/dist/{dependencies-BGokZ-Ng.mjs → dependencies-DKeMzwXY.mjs} +35 -35
  27. package/dist/{dependency-state-C3OtgG94.mjs → dependency-state-CojA2o0t.mjs} +1 -1
  28. package/dist/{dev-client-BMca82xo.mjs → dev-client-D-BW5uiq.mjs} +2 -2
  29. package/dist/{device-tM41-TUq.mjs → device-CgXfbcz5.mjs} +11 -11
  30. package/dist/{device-capacity-6LP7QsaA.mjs → device-capacity-Cd8lMSn3.mjs} +85 -17
  31. package/dist/{device-BJm0irrq.mjs → device-eeK95Lir.mjs} +13 -13
  32. package/dist/device-host-worker.mjs +13 -11
  33. package/dist/{device-ios-534c14fz.mjs → device-ios-Cc9ulihb.mjs} +7 -7
  34. package/dist/{device-lease-run-DwsGfjUN.mjs → device-lease-run-Mtzp4THX.mjs} +3 -3
  35. package/dist/{device-pool-BnQqvs6o.mjs → device-pool-eRz6DtCg.mjs} +2 -2
  36. package/dist/{doctor-DyqE9n1J.mjs → doctor-Bz_ouYAW.mjs} +12 -12
  37. package/dist/{doctor-Dbx1ZpD2.mjs → doctor-C2QyhejJ.mjs} +1 -1
  38. package/dist/doctor-fingerprint.mjs +1 -1
  39. package/dist/{doctor-watchman-CxDbyrrt.mjs → doctor-watchman-BTW82PDC.mjs} +3 -3
  40. package/dist/{doctor-F-3VUUyN.mjs → doctor-xf7ht-5n.mjs} +17 -17
  41. package/dist/{eas-build-CjNSWmjo.mjs → eas-build-Dm6q68QY.mjs} +2 -2
  42. package/dist/{eas-fallback-9fqb46kW.mjs → eas-fallback-DajNpxf-.mjs} +3 -3
  43. package/dist/{eas-session-ledger-DrP4OuuM.mjs → eas-session-ledger-CBFo_Uo1.mjs} +35 -6
  44. package/dist/{error-diagnostics-snej9k4j.mjs → error-diagnostics-D1QfyJzQ.mjs} +7 -7
  45. package/dist/{gc-CGZ1Yg88.mjs → gc-DM5oMm-J.mjs} +17 -16
  46. package/dist/{gc-BRwAY3qT.mjs → gc-PLFwb0k4.mjs} +2 -2
  47. package/dist/{guide-_rfEh_zM.mjs → guide-C4I46XAk.mjs} +106 -42
  48. package/dist/{hosted-android-BMKzUNnY.mjs → hosted-android-DlaKLbW0.mjs} +5 -6
  49. package/dist/{hosted-client-D7Pk_Oo1.mjs → hosted-client-DDRm9hPJ.mjs} +43 -16
  50. package/dist/{hosted-logs-B1gqQuva.mjs → hosted-logs-bSebOKbz.mjs} +5 -5
  51. package/dist/{hosted-logs-sync-Dg3qrZmV.mjs → hosted-logs-sync-B0c53W_c.mjs} +5 -5
  52. package/dist/{hosted-macos-B9w4H8hc.mjs → hosted-macos-B7-8Pv4H.mjs} +5 -5
  53. package/dist/{hosted-native-CdgaiuyP.mjs → hosted-native-CDe33CSr.mjs} +11 -8
  54. package/dist/{idle-shutdown-Cbvo5KEh.mjs → idle-shutdown-CQ0QwU9J.mjs} +5 -5
  55. package/dist/{ios-E26qSpkb.mjs → ios-B1DYuOjh.mjs} +2 -2
  56. package/dist/{ios-Bk4mWbtS.mjs → ios-B1HvafEG.mjs} +8 -8
  57. package/dist/{ios-device-C_QkIf1Z.mjs → ios-device-B4elVFKi.mjs} +1 -1
  58. package/dist/{ios-project-D8Jcy_br.mjs → ios-project-CR4mZ7CH.mjs} +6 -6
  59. package/dist/{ios-state-BZ03NFgF.mjs → ios-state-BPHqMDdZ.mjs} +1 -1
  60. package/dist/{ios-B5HlVMhQ.mjs → ios-tg4tp3q1.mjs} +30 -28
  61. package/dist/{js-swap-Dg2a945i.mjs → js-swap-CVpSW1fn.mjs} +4 -4
  62. package/dist/{launch-CRyBeNsA.mjs → launch-DoySmhjz.mjs} +17 -17
  63. package/dist/{lightened-BCsdAGj_.mjs → lightened-DFAJgfIk.mjs} +4 -4
  64. package/dist/{logs-aJQb-RDg.mjs → logs-BGsW7iPe.mjs} +6 -6
  65. package/dist/{logs-CC_-ZzEE.mjs → logs-DI5ILkYB.mjs} +4 -4
  66. package/dist/{macos-DlCBhMw5.mjs → macos-Bo9st9Di.mjs} +18 -18
  67. package/dist/{macos-BGmTpnv9.mjs → macos-C12RMJQF.mjs} +1 -1
  68. package/dist/macos-run.mjs +1 -1
  69. package/dist/maintenance-run.mjs +4 -4
  70. package/dist/{metro-CvyD-xwe.mjs → metro-BnhXV2Mj.mjs} +1 -1
  71. package/dist/{metro-gateway-BnHdqMO_.mjs → metro-request-DXyKjVDF.mjs} +25 -46
  72. package/dist/{named-ports-BCyMWA6b.mjs → named-ports-Phoi2POD.mjs} +1 -1
  73. package/dist/{native-android-DlpxCyOP.mjs → native-android-vxgtLD7w.mjs} +14 -14
  74. package/dist/{native-gradle-artifact-inputs-C13qT7R_.mjs → native-gradle-artifact-inputs-BN96IVw8.mjs} +3 -3
  75. package/dist/{native-runtime-DqaIBO5w.mjs → native-runtime-DG4Rodzj.mjs} +6 -6
  76. package/dist/{native-xcode-inputs-B1W8SrxB.mjs → native-xcode-inputs-BKarCoKg.mjs} +2 -2
  77. package/dist/{native-xcode-ios-QPP0Rm68.mjs → native-xcode-ios-8A-efGa5.mjs} +14 -14
  78. package/dist/offload-worker.mjs +18 -18
  79. package/dist/{ownership-Bx-0cku-.mjs → ownership-DJCq48IJ.mjs} +2 -2
  80. package/dist/{phone-reverses-C9yAaKEv.mjs → phone-reverses-BzTa8g1F.mjs} +3 -3
  81. package/dist/{placement-log-BXUbiZM6.mjs → placement-log-Cvhta5ib.mjs} +1 -1
  82. package/dist/{plan-placement-UxnQjv5Z.mjs → plan-placement-WkZdccuN.mjs} +5 -5
  83. package/dist/{ports-uUrghqWN.mjs → ports-UV4mJgyC.mjs} +2 -2
  84. package/dist/{prebuild-BDpToDgR.mjs → prebuild-k8d_tqOq.mjs} +8 -8
  85. package/dist/{project-DYj-HVx6.mjs → project-Sui52ywT.mjs} +14 -14
  86. package/dist/{react-native-android-DDBccgJw.mjs → react-native-android-DANlGGQf.mjs} +21 -21
  87. package/dist/{react-native-build-DaK2IFyP.mjs → react-native-build-jUHnIfZ9.mjs} +6 -6
  88. package/dist/{react-native-doctor-B-Mw6DcR.mjs → react-native-doctor-DCWRjS7K.mjs} +5 -5
  89. package/dist/{react-native-ios-DjYwUF9U.mjs → react-native-ios-BwMsFMXi.mjs} +14 -14
  90. package/dist/{recordings-C20iUZfp.mjs → recordings-iy0mkm7b.mjs} +1 -1
  91. package/dist/{reload-DJBeF_rC.mjs → reload-Bj7QyuDy.mjs} +1 -1
  92. package/dist/{reload-fUdkH2_p.mjs → reload-c_uEyc_X.mjs} +13 -13
  93. package/dist/{remote-y6n99WMW.mjs → remote-DFlpAqdV.mjs} +8 -8
  94. package/dist/{result-CTqBw2Te.mjs → result-BIcXREyC.mjs} +14 -14
  95. package/dist/{run-DaCeNKRm.mjs → run-y2HwyNvg.mjs} +1 -1
  96. package/dist/{selection-Bs8phwhN.mjs → selection-CXgM_VK_.mjs} +2 -2
  97. package/dist/{server-bare-BOh-iZEj.mjs → server-bare-2N4vSRZG.mjs} +1 -1
  98. package/dist/{server-command-8CuA51Cv.mjs → server-command-qneHPcRI.mjs} +4 -4
  99. package/dist/{server-expo-ABQs2XFA.mjs → server-expo-Ccm9zB0o.mjs} +2 -2
  100. package/dist/server-expo-WulkyAwT.mjs +2 -0
  101. package/dist/{settings-BDVI8Ivc.mjs → settings-CY5JZlNN.mjs} +46 -2
  102. package/dist/{settings-CMHhQNwI.mjs → settings-Cfd_Q6ys.mjs} +2 -2
  103. package/dist/{settings-payload-cm60Zhib.mjs → settings-payload-DwQiEMCn.mjs} +2 -2
  104. package/dist/{settings-write-BdNRLlBn.mjs → settings-write-CJpjkeAd.mjs} +3 -3
  105. package/dist/{slot-launch-0l7RqSpr.mjs → slot-launch-BpmanOnk.mjs} +5 -5
  106. package/dist/{stage-F4cAfJGi.mjs → stage-CmugrSG5.mjs} +1 -1
  107. package/dist/{start-DcqnF9p8.mjs → start-CHH3zgIU.mjs} +1 -1
  108. package/dist/{start-DrPwER_2.mjs → start-DYLk6GXn.mjs} +8 -8
  109. package/dist/{state-BX1y5syV.mjs → state-B2QJbDwz.mjs} +2 -2
  110. package/dist/{state-CZxLyetD.mjs → state-BXC1Lfxw.mjs} +1 -1
  111. package/dist/{stats-GxuCbles.mjs → stats-DxKqhcGp.mjs} +3 -3
  112. package/dist/{status-BfnK9pUd.mjs → status-BHCkOZga.mjs} +46 -23
  113. package/dist/{status-Bj7ZYvvc.mjs → status-D_Ljc89p.mjs} +1 -1
  114. package/dist/{status-watch-BfabQn03.mjs → status-watch-BmsPqYSU.mjs} +17 -6
  115. package/dist/status-worker.mjs +1 -1
  116. package/dist/{stop-D-EAr25B.mjs → stop-D-dGE9gh.mjs} +14 -14
  117. package/dist/{stop-CH79S3IZ.mjs → stop-DQvE-P76.mjs} +9 -5
  118. package/dist/{stop-x1Yu3He4.mjs → stop-b2pouxAO.mjs} +2 -2
  119. package/dist/supervisor-run.mjs +232 -58
  120. package/dist/{support-CNg_YsOk.mjs → support-04IhBUTT.mjs} +4 -4
  121. package/dist/{support-Be0UeVZU.mjs → support-BtlJKjyQ.mjs} +11 -10
  122. package/dist/{swiftpm-artifact-inputs-uPqYvGBv.mjs → swiftpm-artifact-inputs-Cj2UpmPN.mjs} +1 -1
  123. package/dist/{swiftpm-macos-Ch4YjY_A.mjs → swiftpm-macos-BhF2stxY.mjs} +7 -7
  124. package/dist/{toolchain-CbCG6C5Z.mjs → toolchain-mLA_km-b.mjs} +4 -4
  125. package/dist/{toolchain-JYAOquPg.mjs → toolchain-qktiV8xc.mjs} +1 -1
  126. package/dist/{warm-progress-C0RsbngN.mjs → warm-progress-B0Vpuvpl.mjs} +3 -3
  127. package/dist/{web-Cq_AQ4DK.mjs → web-BYmK0TjL.mjs} +6 -6
  128. package/dist/web-CrVLVQZY.mjs +2 -0
  129. package/dist/web-run.mjs +4 -4
  130. package/dist/{workspace-state-BjqdjnJR.mjs → workspace-state-kIZrdlSg.mjs} +1 -1
  131. package/dist/{workspaces-DFbj07jp.mjs → workspaces-CmOcceDN.mjs} +105 -25
  132. package/dist/{worktree-COAJ3-OD.mjs → worktree-2dk5edza.mjs} +23 -44
  133. package/dist/worktree-nliAoHxB.mjs +2 -0
  134. package/package.json +7 -7
  135. package/dist/server-expo-Ba_Y21vB.mjs +0 -2
  136. package/dist/web-Je6abcpz.mjs +0 -2
  137. package/dist/worktree-JGUd_53L.mjs +0 -2
@@ -5,7 +5,7 @@ import { accessSync, chmodSync, constants, existsSync, lstatSync, mkdirSync, mkd
5
5
  import { tmpdir } from "node:os";
6
6
  import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
7
7
  import { ambientEnv, buildCacheRoot, compiledHelper, configDir } from "@stim-cli/core";
8
- import { REMOTE_DEVICE_BACKENDS, REPLACED_SETTINGS, SETTINGS, SETTING_GROUPS, TUNNEL_MODES, WEB_VIEWPORTS, acceptsShape, coerceSettingText, expectedShape, isLayeredSetting, placementWord, replacementAdvice, settingDefinition, settingValueError, trashRoot } from "@stim-cli/core/state";
8
+ import { REMOTE_DEVICE_BACKENDS, REPLACED_SETTINGS, SETTINGS, SETTING_GROUPS, TUNNEL_MODES, WEB_VIEWPORTS, acceptsShape, coerceSettingText, expectedShape, isLayeredSetting, isPathPrefix, placementWord, replacementAdvice, settingDefinition, settingValueError, trashRoot } from "@stim-cli/core/state";
9
9
  import { basename as basename$1, dirname as dirname$1, isAbsolute as isAbsolute$1, join as join$1, normalize, relative as relative$1, resolve as resolve$1, sep as sep$1 } from "path";
10
10
  import { fileURLToPath } from "node:url";
11
11
  import { captureProcessIdentity } from "@stim-cli/core/process-identity";
@@ -1062,6 +1062,32 @@ async function deleteBranchAsync(cwd, branch, expectedSha, options = {}) {
1062
1062
  write: true
1063
1063
  });
1064
1064
  }
1065
+ function nativeCanonicalPath(path) {
1066
+ const missing = [];
1067
+ for (let existing = resolve$1(path);; existing = dirname$1(existing)) try {
1068
+ return resolve$1(realpathSync$1.native(existing), ...missing);
1069
+ } catch {
1070
+ if (dirname$1(existing) === existing) return resolve$1(path);
1071
+ missing.unshift(basename$1(existing));
1072
+ }
1073
+ }
1074
+ function matchWorktreeEntry(entries, path) {
1075
+ let best = null;
1076
+ const target = nativeCanonicalPath(path);
1077
+ (entries || []).forEach((entry, index) => {
1078
+ if (!entry?.path || !isPathPrefix(nativeCanonicalPath(entry.path), target)) return;
1079
+ if (!best || entry.path.length > best.path.length) best = {
1080
+ ...entry,
1081
+ index
1082
+ };
1083
+ });
1084
+ return best;
1085
+ }
1086
+ const LOCKED_REASON = "locked with git worktree lock";
1087
+ const LOCK_UNKNOWN_REASON = "git could not tell whether its worktree is locked";
1088
+ function lockReason(lock) {
1089
+ return lock === "locked" ? LOCKED_REASON : LOCK_UNKNOWN_REASON;
1090
+ }
1065
1091
  function parseWorktrees(out) {
1066
1092
  const entries = [];
1067
1093
  let current = {};
@@ -1107,6 +1133,24 @@ async function listWorktreesAsync(cwd, options = {}) {
1107
1133
  ], options);
1108
1134
  return out ? parseWorktrees(out) : [];
1109
1135
  }
1136
+ function insideGitCheckout(root) {
1137
+ for (let dir = resolve$1(root);; dir = dirname$1(dir)) {
1138
+ if (existsSync$1(join$1(dir, ".git"))) return true;
1139
+ if (dirname$1(dir) === dir) return false;
1140
+ }
1141
+ }
1142
+ function lockOf(entries, root) {
1143
+ const entry = matchWorktreeEntry(entries, root);
1144
+ if (entry) return entry.locked ? "locked" : null;
1145
+ return existsSync$1(root) && insideGitCheckout(root) ? "unknown" : null;
1146
+ }
1147
+ /** Null when `root` is not in a locked worktree; 'unknown' when git lists nothing for a path inside a git checkout. */
1148
+ function worktreeLock(root) {
1149
+ return lockOf(listWorktrees(root), root);
1150
+ }
1151
+ async function worktreeLockAsync(root, options = {}) {
1152
+ return lockOf(await listWorktreesAsync(root, options), root);
1153
+ }
1110
1154
  function branchOf(head) {
1111
1155
  return head.startsWith("ref: refs/heads/") ? head.slice(16) : void 0;
1112
1156
  }
@@ -2011,4 +2055,4 @@ function webSettings(settings) {
2011
2055
  };
2012
2056
  }
2013
2057
  //#endregion
2014
- export { runnableMetroCommand as $, makeTemporaryDirectory as $t, metroCommandSetting as A, listWorktreesAsync as At, publicUrlSetting as B, resolveSourceCheckoutAsync as Bt, iosSigningIdentitySettingError as C, hasPopulatedSubmodulesAsync as Ct, iosSimSlimProfileSetting as D, linkedWorktreesOnDisk as Dt, iosSimSlimDefaultSetting as E, isPodInstallChurn as Et, metroWarmupUrlSetting as F, removeWorktreeAsync as Ft, remoteIosSetting as G, TRASH_CLAIMS as Gt, realpathInside as H, sourceCheckoutOf as Ht, ngrokUrlSetting as I, repoRoot as It, resolveCacheProviderConfig as J, deleteTrashEntry as Jt, removedMachineSettings as K, TRASH_ENTRY_PREFIX as Kt, parseIosRemote as L, repoRootAsync as Lt, metroIdleStopMinutesSetting as M, locallyKnownUpstreamAsync as Mt, metroPortSetting as N, podsOutOfSync as Nt, maintenanceKeepSetting as O, listCarryableIgnoredEntries as Ot, metroTunnelSettingError as P, readWorktreeExclude as Pt, resolveSettings as Q, filesystemDevice as Qt, projectSettingsContext as R, resolveFullRef as Rt, iosSigningIdentitySetting as S, gitCommonDirOnDisk as St, iosSigningIdentitySha1SettingError as T, hasUncommittedWorkAsync as Tt, remoteAndroidSetting as U, unpushedCommitsAsync as Ut, readCommittedSettings as V, restoreFileAsync as Vt, remoteEasFallbackSetting as W, warmWorktreePaths as Wt, resolveProjectSettings as X, moveIgnoredTreesToTrash as Xt, resolveIosProjectDir as Y, disposeTrash as Yt, resolveProjectSettingsAsync as Z, restoreTrashedTrees as Zt, inertSettingWarning as _, depsOutOfSync as _t, SETTING_SHAPE_REMEDY as a, settingsLayers as at, iosProjectDirSetting as b, gitCommonDir as bt, androidDataPartitionSizeBytes as c, webSettings as ct, androidLayoutSetting as d, detectProviders as dt, removeTemporaryEntry as en, settingFile as et, androidLayoutSettingError as f, planMetroReach as ft, deviceReclaimIdleMinutesSetting as g, deleteBranchAsync as gt, deviceIdleShutdownMinutesSetting as h, cloneIgnoredEntries as ht, SETTINGS_WITH_RESOLVE_TIME_FALLBACK as i, settingValueAt as it, metroCommandSettingError as j, locallyKnownUpstream as jt, mergeSettingsLayers as k, listWorktrees as kt, androidDataPartitionSizeGbSetting as l, workspaceHiddenSetting as lt, defaultAndroidLayout as m, branchExistsAsync as mt, METRO_COMMAND_PORT as n, temporaryRoot as nn, settingOriginScope as nt, androidAvdConfigSetting as o, tunnelModeSetting as ot, cacheProviderSettingError as p, resolveTailscaleBinary as pt, resolveAndroidLayout as q, TRASH_MANIFEST as qt, PATH_SETTINGS as r, settingShapeErrors as rt, androidAvdConfigSettingError as s, unknownSettingKeys as st, ANDROID_AVD_CONFIG_HELP as t, removeTemporaryEntryAsync as tn, settingOrigin as tt, androidDataPartitionSizeGbSettingError as u, PUBLIC_METRO_ENV as ut, iosLanHostSetting as v, dirtyFingerprintFiles as vt, iosSigningIdentitySha1Setting as w, hasRemoteAsync as wt, iosProjectDirSettingError as x, gitCommonDirAsync as xt, iosLanHostSettingError as y, dirtyPathsAsync as yt, projectSettingsContextAsync as z, resolveFullRefAsync as zt };
2058
+ export { runnableMetroCommand as $, TRASH_MANIFEST as $t, metroCommandSetting as A, listWorktrees as At, publicUrlSetting as B, repoRoot as Bt, iosSigningIdentitySettingError as C, gitCommonDirOnDisk as Ct, iosSimSlimProfileSetting as D, isPodInstallChurn as Dt, iosSimSlimDefaultSetting as E, hasUncommittedWorkAsync as Et, metroWarmupUrlSetting as F, matchWorktreeEntry as Ft, remoteIosSetting as G, restoreFileAsync as Gt, realpathInside as H, resolveFullRef as Ht, ngrokUrlSetting as I, nativeCanonicalPath as It, resolveCacheProviderConfig as J, warmWorktreePaths as Jt, removedMachineSettings as K, sourceCheckoutOf as Kt, parseIosRemote as L, podsOutOfSync as Lt, metroIdleStopMinutesSetting as M, locallyKnownUpstream as Mt, metroPortSetting as N, locallyKnownUpstreamAsync as Nt, maintenanceKeepSetting as O, linkedWorktreesOnDisk as Ot, metroTunnelSettingError as P, lockReason as Pt, resolveSettings as Q, TRASH_ENTRY_PREFIX as Qt, projectSettingsContext as R, readWorktreeExclude as Rt, iosSigningIdentitySetting as S, gitCommonDirAsync as St, iosSigningIdentitySha1SettingError as T, hasRemoteAsync as Tt, remoteAndroidSetting as U, resolveFullRefAsync as Ut, readCommittedSettings as V, repoRootAsync as Vt, remoteEasFallbackSetting as W, resolveSourceCheckoutAsync as Wt, resolveProjectSettings as X, worktreeLockAsync as Xt, resolveIosProjectDir as Y, worktreeLock as Yt, resolveProjectSettingsAsync as Z, TRASH_CLAIMS as Zt, inertSettingWarning as _, deleteBranchAsync as _t, SETTING_SHAPE_REMEDY as a, makeTemporaryDirectory as an, settingsLayers as at, iosProjectDirSetting as b, dirtyPathsAsync as bt, androidDataPartitionSizeBytes as c, temporaryRoot as cn, webSettings as ct, androidLayoutSetting as d, detectProviders as dt, deleteTrashEntry as en, settingFile as et, androidLayoutSettingError as f, planMetroReach as ft, deviceReclaimIdleMinutesSetting as g, cloneIgnoredEntries as gt, deviceIdleShutdownMinutesSetting as h, branchExistsAsync as ht, SETTINGS_WITH_RESOLVE_TIME_FALLBACK as i, filesystemDevice as in, settingValueAt as it, metroCommandSettingError as j, listWorktreesAsync as jt, mergeSettingsLayers as k, listCarryableIgnoredEntries as kt, androidDataPartitionSizeGbSetting as l, workspaceHiddenSetting as lt, defaultAndroidLayout as m, LOCKED_REASON as mt, METRO_COMMAND_PORT as n, moveIgnoredTreesToTrash as nn, settingOriginScope as nt, androidAvdConfigSetting as o, removeTemporaryEntry as on, tunnelModeSetting as ot, cacheProviderSettingError as p, resolveTailscaleBinary as pt, resolveAndroidLayout as q, unpushedCommitsAsync as qt, PATH_SETTINGS as r, restoreTrashedTrees as rn, settingShapeErrors as rt, androidAvdConfigSettingError as s, removeTemporaryEntryAsync as sn, unknownSettingKeys as st, ANDROID_AVD_CONFIG_HELP as t, disposeTrash as tn, settingOrigin as tt, androidDataPartitionSizeGbSettingError as u, PUBLIC_METRO_ENV as ut, iosLanHostSetting as v, depsOutOfSync as vt, iosSigningIdentitySha1Setting as w, hasPopulatedSubmodulesAsync as wt, iosProjectDirSettingError as x, gitCommonDir as xt, iosLanHostSettingError as y, dirtyFingerprintFiles as yt, projectSettingsContextAsync as z, removeWorktreeAsync as zt };
@@ -1,5 +1,5 @@
1
- import { c as readSettingsPayload, l as settingEntry, o as layerFile, s as readSettingsContext, t as SettingsRefusal } from "./settings-payload-cm60Zhib.mjs";
2
- import { i as unsetReplacedSetting, n as readScope, r as requireSetting, t as mutateSetting } from "./settings-write-BdNRLlBn.mjs";
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";
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,7 +1,7 @@
1
1
  import { _ as loadConfig$1, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-Cn94Jc0g.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-BDVI8Ivc.mjs";
4
- import { r as findCommandWorkspaceAsync } from "./project-DYj-HVx6.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
5
  import { i as stimDesktopInstalledAsync, n as settingDefault, r as stimDesktopInstalled } from "./stim-desktop-CbWo21kb.mjs";
6
6
  import { join } from "node:path";
7
7
  import { SETTINGS, SETTING_SCOPES, coerceSettingText, isJsonObject, replacementAdvice, settingDefinition, settingValueError } from "@stim-cli/core/state";
@@ -1,9 +1,9 @@
1
1
  import { u as withWorkspaceProcessLock } from "./exec-aULwtNly.mjs";
2
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-DYj-HVx6.mjs";
3
+ import { t as NO_PROJECT_REFUSAL } from "./project-Sui52ywT.mjs";
4
4
  import { i as stimDesktopInstalledAsync } from "./stim-desktop-CbWo21kb.mjs";
5
- import { n as recordingLayers, t as deleteTurnedOffRecordings } from "./recordings-C20iUZfp.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-cm60Zhib.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";
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";
@@ -1,9 +1,9 @@
1
- import { r as readWorkspaceState$1 } from "./workspace-state-BjqdjnJR.mjs";
1
+ import { r as readWorkspaceState$1 } from "./workspace-state-kIZrdlSg.mjs";
2
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-DriNoAVy.mjs";
4
- import { on as deviceShellArg } from "./ccache-BWTze1Ls.mjs";
5
- import { y as fileLeaseIo } from "./activity-Cd-ysFes.mjs";
6
- import { f as listAllIosSimsAsync } from "./ios-E26qSpkb.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";
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-CbCG6C5Z.mjs";
2
+ import { ot as runCancellationSignal } from "./toolchain-mLA_km-b.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,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-DrPwER_2.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-DYLk6GXn.mjs";
2
2
  export { startCommand as default, failureEvidence, liveSupervisor, parseWait, readLogTail, registerStart, resolveWorkspaceMetroPort, startDevServer, startFacts, supervisorEntry, supervisorSignalable, tailLines, wantsExpoOwnTunnel };
@@ -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-BjqdjnJR.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
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-Dj-WT4BP.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-BDVI8Ivc.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-DYj-HVx6.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
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-CvyD-xwe.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
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-BWTze1Ls.mjs";
11
- import { C as terminateChild, E as withManagedTunnelLock, S as stopTunnel, b as resolveSupervisorTarget, w as withManagedRemoteWorktreeLock, x as startTunnelSequence } from "./workspaces-DFbj07jp.mjs";
12
- import { i as restoreLightenedDependencies } from "./lightened-BCsdAGj_.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";
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,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-BjqdjnJR.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";
3
3
  import { t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
4
- import { c as pidExists } from "./metro-CvyD-xwe.mjs";
4
+ import { c as pidExists } from "./metro-BnhXV2Mj.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,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-BjqdjnJR.mjs";
2
+ import { E as workspaceDir, k as workspaceLogsDir$1, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-kIZrdlSg.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 { P as formatBytes } from "./config-Cn94Jc0g.mjs";
2
- import { o as formatLongDuration } from "./command-output-Dj-WT4BP.mjs";
3
- import { i as findProjectRoot$1 } from "./project-DYj-HVx6.mjs";
4
- import { i as getSwiftpmCacheUsage, n as swiftpmCacheLines, r as getAgentDeviceUsage, t as agentDeviceLines } from "./agent-device-usage-output-C5nCKWp9.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";
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,34 +1,35 @@
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-BjqdjnJR.mjs";
3
- import { G as projectDeviceSlots, P as formatBytes, R as volumeRootFor, U as parseDeviceSlotKey, V as deviceSlotKey, _ as loadConfig$1, d as getConfigDir } from "./config-Cn94Jc0g.mjs";
4
- import { a as formatElapsed, i as formatDuration, r as clockTime, u as plural } from "./command-output-Dj-WT4BP.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";
5
5
  import { s as gitAsync } from "./operation-exec-Dp4FuIGR.mjs";
6
- import { Dt as linkedWorktreesOnDisk, It as repoRoot, Q as resolveSettings, St as gitCommonDirOnDisk, bt as gitCommonDir, lt as workspaceHiddenSetting } from "./settings-BDVI8Ivc.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-DYj-HVx6.mjs";
8
- import { A as listAdbDevices, B as ownedAvdDeviceProfile, W as ownedAvdSerialResolver, ft as POOL_SETTING_REMEDY, vt as parkedMaxSetting, yt as readParked } from "./android-DriNoAVy.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-CvyD-xwe.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
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-BWTze1Ls.mjs";
12
- import { a as readWebPage, o as readWebRecord, u as webFacts } from "./state-BX1y5syV.mjs";
13
- import { A as remoteDeviceState, C as environmentState, D as parseDfFree, E as metroReverseTargets, M as tightVolumes, N as unprovisionedWorktrees, O as poolLine, P as withWebFacts, S as diskLine, T as gitSummaryText, _ as addReverseMissingIssue, b as deviceLeaseLines, g as activityLabel, j as statusActivity, k as remoteDeviceLine, r as readEasSessionLedger$1, v as applyMachineMemory, x as deviceLeaseStates, y as capacity } from "./eas-session-ledger-DrP4OuuM.mjs";
14
- import { B as activeBuildState, G as parseActiveBuild, H as buildStatusLine, R as ACTIVE_BUILD_KEY, U as bundlingActivity, V as buildReport, b as resolveSupervisorTarget, nt as readStats$1, ot as statsProjectKey$1 } from "./workspaces-DFbj07jp.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-Cd-ysFes.mjs";
16
- import { b as parseSimctlList, f as listAllIosSimsAsync } from "./ios-E26qSpkb.mjs";
17
- import { f as probeHostedSession } from "./hosted-client-D7Pk_Oo1.mjs";
18
- import "./hosted-macos-B9w4H8hc.mjs";
19
- import { i as readSupervisorState } from "./stop-D-EAr25B.mjs";
20
- import { l as applyStatusMeasures, n as workspacePhase, s as mergeState, u as createStatusMeasurer } from "./warm-progress-C0RsbngN.mjs";
21
- import { r as workspaceRecordingEnabled } from "./recordings-C20iUZfp.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
22
  import { n as maintenanceLines, r as maintenanceStatus } from "./status-7ULDEJ1e.mjs";
23
- import { d as readIosDevices, s as isReachable } from "./ios-device-C_QkIf1Z.mjs";
23
+ import { s as deviceSlotUsage } from "./device-capacity-Cd8lMSn3.mjs";
24
+ import { d as readIosDevices, s as isReachable } from "./ios-device-B4elVFKi.mjs";
24
25
  import { t as triggerMaintenance } from "./trigger-DMou-X7j.mjs";
25
- 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-BfabQn03.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";
26
27
  import { t as watchStdoutReader } from "./stdout-reader-C8yjre1x.mjs";
27
28
  import { createHash, randomUUID } from "node:crypto";
28
29
  import { mkdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
29
30
  import { join, posix, resolve } from "node:path";
30
31
  import { rotatedLogPath } from "@stim-cli/core";
31
- import { DEVICE_RECLAIM_REASON, ERROR_SOURCES, archiveRoot, archivedUsage, bundleMarkerPlatform, countErrorEntries, gitMergeCacheDir, hostedAndroidPlacements, hostedAndroidRecords, hostedAndroidStatus, hostedIosPlacements, hostedIosRecords, hostedIosStatus, linkReplacedArchives, logFiles, macosAppState, parseHostedAndroidPlacement, parseHostedIosPlacement, queryLogs, readArchives, readBuildDetail, readBuildHistory, readDeviceIdleShutdowns, readDevicePlacement, readIdleStop, readLastBuilds, readMacosRecord, recordMatches, sortByTs, unreadableHostedAndroid, unreadableHostedIos, withDerivedFacts, withGitChip, withStateReadCache } from "@stim-cli/core/state";
32
+ import { DEVICE_RECLAIM_REASON, ERROR_SOURCES, archiveRoot, archivedUsage, bundleMarkerPlatform, countErrorEntries, gitMergeCacheDir, hostedAndroidPlacements, hostedAndroidRecords, hostedAndroidStatus, hostedIosPlacements, hostedIosRecords, hostedIosStatus, linkReplacedArchives, loadPerCore, logFiles, macosAppState, maxLoadPerCore, parseHostedAndroidPlacement, parseHostedIosPlacement, queryLogs, readArchives, readBuildDetail, readBuildHistory, readDeviceIdleShutdowns, readDevicePlacement, readIdleStop, readLastBuilds, readMacosRecord, recordMatches, sortByTs, unreadableHostedAndroid, unreadableHostedIos, withDerivedFacts, withGitChip, withStateReadCache } from "@stim-cli/core/state";
32
33
  import { basename as basename$1, dirname as dirname$1, join as join$1 } from "path";
33
34
  import chalk from "chalk";
34
35
  import { closeSync as closeSync$1, existsSync as existsSync$1, fstatSync as fstatSync$1, openSync as openSync$1, readFileSync as readFileSync$1, readSync as readSync$1, renameSync as renameSync$1, rmSync as rmSync$1, statSync as statSync$1, writeFileSync as writeFileSync$1 } from "fs";
@@ -880,10 +881,12 @@ async function readStatusFacts(probes, gitScope, cwd) {
880
881
  const simsByUdid = {};
881
882
  let simsAvailable = true;
882
883
  let simctlError = null;
884
+ let simctlFailure = null;
883
885
  try {
884
886
  for (const sim of await simsRead) simsByUdid[sim.udid] = sim;
885
887
  } catch (e) {
886
888
  simsAvailable = false;
889
+ simctlFailure = e;
887
890
  simctlError = String(e?.message || e).split("\n")[0] ?? "";
888
891
  }
889
892
  const running = await processes;
@@ -1034,6 +1037,17 @@ async function readStatusFacts(probes, gitScope, cwd) {
1034
1037
  busy: sims.some((sim) => sim.state === "Booted"),
1035
1038
  probes
1036
1039
  });
1040
+ const { maxBuilds, maxDevices } = getConcurrencyLimits();
1041
+ const slotUsage = {
1042
+ ...maxBuilds > 0 ? { builds: buildSlotUsage(maxBuilds) } : {},
1043
+ ...maxDevices > 0 ? { devices: await deviceSlotUsage(maxDevices, {
1044
+ config: cfg,
1045
+ sims: process.platform !== "darwin" ? [] : simsAvailable ? sims : () => {
1046
+ throw simctlFailure;
1047
+ },
1048
+ adb: () => listAdbDevicesAsync({ timeoutMs: PHYSICAL_DEVICE_LIST_TIMEOUT_MS })
1049
+ }) } : {}
1050
+ };
1037
1051
  const archives = probes.archives();
1038
1052
  const maxCount = machineNumber("archive.maxCount", cfg, process.env);
1039
1053
  return {
@@ -1051,6 +1065,7 @@ async function readStatusFacts(probes, gitScope, cwd) {
1051
1065
  cwdRoot,
1052
1066
  tables,
1053
1067
  machine,
1068
+ slotUsage,
1054
1069
  roots,
1055
1070
  simNames,
1056
1071
  probes,
@@ -1431,10 +1446,14 @@ function statusCommand(program) {
1431
1446
  for (const line of renderStatus(await readStatus(), json)) console.log(line);
1432
1447
  });
1433
1448
  }
1434
- function renderStatus({ archived, archivedUsage: usage, projects, states, labelOnlyRoots, leases, leaseNow, orphanWorktrees, simsAvailable, simctlError, cwdRoot, machine }, json, settle = (payload) => payload, cwd = process.cwd()) {
1449
+ function renderStatus({ archived, archivedUsage: usage, projects, states, labelOnlyRoots, leases, leaseNow, orphanWorktrees, simsAvailable, simctlError, cwdRoot, machine, slotUsage }, json, settle = (payload) => payload, cwd = process.cwd()) {
1435
1450
  const out = [];
1436
1451
  const totalMemoryMb = Math.round(totalmem() / 1048576);
1437
- const cap = capacity(states, totalMemoryMb);
1452
+ const cap = {
1453
+ ...capacity(states, totalMemoryMb),
1454
+ ...slotUsage,
1455
+ load: capacityLoad(loadPerCore(), maxLoadPerCore(), null)
1456
+ };
1438
1457
  const pools = ["ios", "android"].map((platform) => {
1439
1458
  const { max, error } = parkedMaxSetting(platform);
1440
1459
  return {
@@ -1474,6 +1493,8 @@ function renderStatus({ archived, archivedUsage: usage, projects, states, labelO
1474
1493
  if (pool.line) out.push(chalk.dim(pool.line));
1475
1494
  }
1476
1495
  for (const line of deviceLeaseLines(leases, leaseNow)) out.push(line);
1496
+ out.push(chalk.dim(loadLine(cap.load)));
1497
+ for (const line of slotUsageLines(cap)) out.push(chalk.dim(line));
1477
1498
  return out;
1478
1499
  }
1479
1500
  if (!simsAvailable) out.push(chalk.yellow(`simctl could not be read (${simctlError}), so no iOS sim below could be checked.`));
@@ -1552,6 +1573,8 @@ function renderStatus({ archived, archivedUsage: usage, projects, states, labelO
1552
1573
  for (const w of orphanWorktrees) out.push(chalk.dim(` ${orphanWorktreeLine(w)}`));
1553
1574
  }
1554
1575
  out.push(chalk.dim(machine?.memorySource === "footprint" ? `\n${cap.liveCount} active environment(s) use ${formatGb(cap.committedMb)} of ${formatGb(cap.totalMemoryMb)}.` : `\n${cap.liveCount} active environment(s), roughly ${formatGb(cap.committedMb)} of ${formatGb(cap.totalMemoryMb)} committed.`));
1576
+ out.push(chalk.dim(loadLine(cap.load)));
1577
+ for (const line of slotUsageLines(cap)) out.push(chalk.dim(line));
1555
1578
  const volumes = readVolumes(cwdRoot || cwd);
1556
1579
  const line = diskLine(volumes);
1557
1580
  if (line) {
@@ -1,2 +1,2 @@
1
- import { n as runStatusWatch, r as statusCommand, t as readVolumes } from "./status-BfnK9pUd.mjs";
1
+ import { n as runStatusWatch, r as statusCommand, t as readVolumes } from "./status-BHCkOZga.mjs";
2
2
  export { statusCommand as default, readVolumes, runStatusWatch };
@@ -1,8 +1,8 @@
1
1
  import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { d as androidToolPath } from "./android-DriNoAVy.mjs";
3
- import { c as pidExists } from "./metro-CvyD-xwe.mjs";
4
- import { n as easMachineStateRoot } from "./eas-session-ledger-DrP4OuuM.mjs";
5
- import { b as parseSimctlList } from "./ios-E26qSpkb.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";
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
@@ -417,9 +417,13 @@ function ownerKey(owner) {
417
417
  function ownerSteady(before, after) {
418
418
  return Math.abs(after.cpuPercent - before.cpuPercent) < 5 && Math.abs(after.memoryMb - before.memoryMb) < 16;
419
419
  }
420
+ function loadSteady(before, after) {
421
+ return before.state === after.state && before.limit === after.limit && before.busyAt === after.busyAt && before.cpus === after.cpus && Math.abs(Math.round((after.loadPerCore - before.loadPerCore) * 10)) < 10;
422
+ }
420
423
  /**
421
424
  * The payload `status --watch --json` prints. A usage figure keeps its value from the `previous` printed payload until it moves by a step: an owner's `cpuPercent`
422
- * and `memoryMb`, an environment's `memoryMb` and `capacity.committedMb`. An owner's row is kept whole, `residentMb`
425
+ * and `memoryMb`, an environment's `memoryMb`, `capacity.committedMb`, and `capacity.load` while its `state`, `limit`,
426
+ * `busyAt` and `cpus` stay the same and its `loadPerCore` moves less than a step. An owner's row is kept whole, `residentMb`
423
427
  * and `processes` included, until one of its two figures moves, so a machine whose processes only jitter prints no new line.
424
428
  */
425
429
  function watchPayload(previous, next) {
@@ -444,7 +448,14 @@ function watchPayload(previous, next) {
444
448
  } : env;
445
449
  });
446
450
  const { capacity } = previous;
447
- if (capacity.overCapacity === next.capacity.overCapacity && capacity.liveCount === next.capacity.liveCount && capacity.totalMemoryMb === next.capacity.totalMemoryMb && Math.abs(next.capacity.committedMb - capacity.committedMb) < 16) payload.capacity = capacity;
451
+ if (capacity.overCapacity === next.capacity.overCapacity && capacity.liveCount === next.capacity.liveCount && capacity.totalMemoryMb === next.capacity.totalMemoryMb && Math.abs(next.capacity.committedMb - capacity.committedMb) < 16) payload.capacity = {
452
+ ...payload.capacity,
453
+ committedMb: capacity.committedMb
454
+ };
455
+ if (capacity.load && next.capacity.load && loadSteady(capacity.load, next.capacity.load)) payload.capacity = {
456
+ ...payload.capacity,
457
+ load: capacity.load
458
+ };
448
459
  return payload;
449
460
  }
450
461
  const holdPullRequest = (worktree) => worktree.pullRequest ? {
@@ -1,4 +1,4 @@
1
- import { n as runStatusWatch } from "./status-BfnK9pUd.mjs";
1
+ import { n as runStatusWatch } from "./status-BHCkOZga.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,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-BjqdjnJR.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
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-Dj-WT4BP.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-DYj-HVx6.mjs";
6
- import { t as macosAppPresent } from "./state-CZxLyetD.mjs";
7
- import { et as removeOwnedEmulatorMetroReverses } from "./android-DriNoAVy.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-CvyD-xwe.mjs";
9
- import { D as requestDevServerStop, Ln as resolveEasCliBin, Ot as endRecordedSession, T as logVanishedSupervisor, k as withdrawDevServerStopRequest } from "./ccache-BWTze1Ls.mjs";
10
- import { S as stopTunnel, b as resolveSupervisorTarget, dt as teardownOwnedBrowser, ft as teardownOwnedIosSim, ut as teardownOwnedAvd } from "./workspaces-DFbj07jp.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-CbCG6C5Z.mjs";
12
- import { O as releaseWorkspaceLeasesAsync, y as fileLeaseIo } from "./activity-Cd-ysFes.mjs";
13
- import { i as stopHostedAndroid } from "./hosted-android-BMKzUNnY.mjs";
14
- import { a as stopHostedIos, n as removePhoneReverses } from "./phone-reverses-C9yAaKEv.mjs";
15
- import { n as stopMacosApp } from "./stop-CH79S3IZ.mjs";
16
- import { n as verifyCollectorOwnership } from "./ownership-Bx-0cku-.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";
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
@@ -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-BjqdjnJR.mjs";
3
- import { a as macosRuntimeClaim, o as requiredMacosRecord } from "./state-CZxLyetD.mjs";
4
- import { O as runningBundleInstancesAsync } from "./workspaces-DFbj07jp.mjs";
5
- import { n as stopHostedMacos } from "./hosted-macos-B9w4H8hc.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";
6
6
  import { readMacosRecord } from "@stim-cli/core/state";
7
7
  //#region src/macos/stop.ts
8
8
  const APP_EXIT_MS = 5e3;
@@ -40,6 +40,10 @@ async function stopBundleInstances(root, operation) {
40
40
  await stopProcesses(instances, void 0, operation);
41
41
  return instances.length > 0;
42
42
  }
43
+ /** Stops every running copy of a hosted session's app bundles, including copies LaunchServices started from an earlier attempt. */
44
+ async function stopHostedBundleInstances(area, operation) {
45
+ await stopProcesses(await runningInstancesInAsync(hostedBundleDirs(area), operation), void 0, operation);
46
+ }
43
47
  async function stopMacosAppHeld(root, operation) {
44
48
  operation?.signal.throwIfAborted();
45
49
  const record = requiredMacosRecord(root);
@@ -78,4 +82,4 @@ function stopMacosApp(root, operation) {
78
82
  });
79
83
  }
80
84
  //#endregion
81
- export { stopMacosApp as n, stopMacosAppHeld as r, stopBundleInstances as t };
85
+ export { stopMacosAppHeld as i, stopHostedBundleInstances as n, stopMacosApp as r, stopBundleInstances as t };
@@ -1,3 +1,3 @@
1
- import { b as resolveSupervisorTarget } from "./workspaces-DFbj07jp.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-EAr25B.mjs";
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";
3
3
  export { clearCollectorState, clearSupervisorState, stopCommand as default, readCollectorState, readSupervisorState, resolveCollectorTargets, resolveSupervisorTarget, runStop, stopWorkspaceNow };