stim 1.24.0 → 1.26.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 (162) hide show
  1. package/README.md +1 -1
  2. package/dist/{acquire-artifact-CEs02U2o.mjs → acquire-artifact-DVsvSwf7.mjs} +1 -1
  3. package/dist/{act-Cyvm8xYc.mjs → act-C-BqJEpu.mjs} +158 -36
  4. package/dist/{activity-Dq3ZcdD8.mjs → activity-Lnb_EoRY.mjs} +4 -5
  5. package/dist/{agent-device-usage-output-CccomeE0.mjs → agent-device-usage-output-DbXy5tg8.mjs} +4 -4
  6. package/dist/{android-CX5IcRuf.mjs → android-B5P81yI-.mjs} +1 -1
  7. package/dist/{android-DcztblCT.mjs → android-CSbLRD53.mjs} +5 -5
  8. package/dist/{android-BZppyPe_.mjs → android-CiNQw3kq.mjs} +81 -52
  9. package/dist/{android-882m4hxX.mjs → android-DTAcRwBC.mjs} +81 -34
  10. package/dist/{android-cas-BtCOrNqb.mjs → android-cas-BTVhZ0Qs.mjs} +4 -4
  11. package/dist/{android-project-DVWyCbWU.d.mts → android-project-DUGMbq28.d.mts} +61 -3
  12. package/dist/api.d.mts +8 -5
  13. package/dist/api.mjs +27 -27
  14. package/dist/apk-signed-tail-B46U9hXc.mjs +142 -0
  15. package/dist/{artifact-BR5VNArK.mjs → artifact-BxREhAaV.mjs} +25 -19
  16. package/dist/{artifact-Bdt_n9Jc.mjs → artifact-CsAP6AGK.mjs} +36 -21
  17. package/dist/{attempt-DW-mQqM7.mjs → attempt-ClyJlZPT.mjs} +4 -2
  18. package/dist/{browser-web-ycg9qWB8.mjs → browser-web-rYPyqhTf.mjs} +11 -12
  19. package/dist/{budget-dPGuhNai.mjs → budget-k2mZGvvk.mjs} +242 -38
  20. package/dist/{build-CaF574eS.mjs → build-DPhApsjV.mjs} +28 -24
  21. package/dist/{build-cache-HFUQ9eLz.mjs → build-cache-DrXNCy3T.mjs} +123 -23
  22. package/dist/{build-plan-JsDUq4w1.mjs → build-plan-DrMMdayj.mjs} +5 -5
  23. package/dist/{cache-manifest-BPXRONJz.mjs → cache-manifest-BEZ9Bpl1.mjs} +1 -1
  24. package/dist/cache-manifest.mjs +1 -1
  25. package/dist/{ccache-CCn1S6qG.mjs → ccache-Bx5TbxwG.mjs} +6 -6
  26. package/dist/{cli-xqAidP7O.mjs → cli-BBKFGOFl.mjs} +19 -19
  27. package/dist/cli.mjs +1 -1
  28. package/dist/{client-18-ZowoT.mjs → client-D9CaRks-.mjs} +55 -71
  29. package/dist/collector-run.mjs +4 -4
  30. package/dist/{command-output-DxC0k2rk.mjs → command-output-BF5AR2dL.mjs} +1 -1
  31. package/dist/{config-BZhXY15H.mjs → config-BktkY_zC.mjs} +321 -15
  32. package/dist/{launch-BVlyQw3T.mjs → dependencies-Dw6wfQdv.mjs} +259 -256
  33. package/dist/{dependency-state-C56ll9hY.mjs → dependency-state-DFB41vfr.mjs} +1 -1
  34. package/dist/{dev-client-w_fok0Ek.mjs → dev-client-DXR_tPVY.mjs} +2 -2
  35. package/dist/{device-BktRGdjS.mjs → device-BK-zwyd_.mjs} +64 -33
  36. package/dist/{device-4RUugw5X.mjs → device-BcYeHSFu.mjs} +14 -14
  37. package/dist/{device-capacity-Ic-kdmEV.mjs → device-capacity-DCSvUF0l.mjs} +10 -17
  38. package/dist/device-host-worker.mjs +11 -13
  39. package/dist/{device-ios-DzpSlZyd.mjs → device-ios-BLGfXQeK.mjs} +68 -25
  40. package/dist/{device-lease-run-DUtkbqBQ.mjs → device-lease-run-BmvIl7bI.mjs} +5 -5
  41. package/dist/{device-pool-CgBHk401.mjs → device-pool-Dluix4H3.mjs} +3 -3
  42. package/dist/{doctor-DZgpqR6J.mjs → doctor-Bhg1ii70.mjs} +14 -14
  43. package/dist/{doctor-BZ6oxNum.mjs → doctor-Cp-BhzTS.mjs} +1 -1
  44. package/dist/{doctor-C33AzVfR.mjs → doctor-OnwP94ne.mjs} +81 -26
  45. package/dist/{doctor-fingerprint-zlujA1Gs.mjs → doctor-fingerprint-D3a04Mhu.mjs} +8 -2
  46. package/dist/doctor-fingerprint.mjs +1 -1
  47. package/dist/{doctor-watchman-B453A231.mjs → doctor-watchman-BStK05nt.mjs} +4 -4
  48. package/dist/{eas-build-CxKUNHsb.mjs → eas-build-Dsj93iM9.mjs} +2 -2
  49. package/dist/{eas-fallback-LMxk9Kw0.mjs → eas-fallback-FwkeqqGi.mjs} +13 -12
  50. package/dist/{eas-session-ledger-Ck6YXPAO.mjs → eas-session-ledger-B5vygTiD.mjs} +5 -5
  51. package/dist/{error-diagnostics-BkKCZq4P.mjs → error-diagnostics-BOOm9Db7.mjs} +8 -8
  52. package/dist/{errors-ccaPc4ox.mjs → errors-DHm_U5gv.mjs} +2 -1
  53. package/dist/{gc-DDWEAj0w.mjs → gc-C_79zvz4.mjs} +2 -2
  54. package/dist/{gc-yVKpAOKM.mjs → gc-ldgr-hXU.mjs} +74 -43
  55. package/dist/{guide-Bggftwc5.mjs → guide-D7K0X6KG.mjs} +374 -78
  56. package/dist/{hosted-android-D4dweBof.mjs → hosted-android-Bk54ej6n.mjs} +3 -3
  57. package/dist/{hosted-client-BBTVe3X6.mjs → hosted-client-fHO8yqzc.mjs} +5 -5
  58. package/dist/{hosted-ios-Sn0djzg8.mjs → hosted-ios-D55QhYaD.mjs} +1 -1
  59. package/dist/{hosted-logs-CYIZ5ubJ.mjs → hosted-logs-BfbmDM4M.mjs} +17 -11
  60. package/dist/hosted-logs-sync-B0pvmOk-.mjs +195 -0
  61. package/dist/{hosted-macos-CXjsUNBR.mjs → hosted-macos-CPl0OZ9h.mjs} +5 -5
  62. package/dist/{hosted-native-Doxbfzem.mjs → hosted-native-CpDB3-PO.mjs} +6 -7
  63. package/dist/{idle-shutdown-BInjLKqm.mjs → idle-shutdown-FfxL1KdG.mjs} +22 -9
  64. package/dist/{ios-BItP6lkn.mjs → ios-B7-lToDu.mjs} +8 -8
  65. package/dist/{ios-CVUFFZ6C.mjs → ios-WxpDJ5T1.mjs} +129 -14
  66. package/dist/{ios-device-BI38NFFH.mjs → ios-device-CsyryvpT.mjs} +1 -1
  67. package/dist/{ios-B1FXRCMX.mjs → ios-ftxdQbJS.mjs} +84 -51
  68. package/dist/{ios-project-KYqeJURj.mjs → ios-project-Ty5pHl9O.mjs} +6 -6
  69. package/dist/{ios-state-DlElquYD.mjs → ios-state-Cw7-WQf2.mjs} +1 -1
  70. package/dist/{js-swap-BvrQvXHY.mjs → js-swap-BMhXYVDS.mjs} +4 -4
  71. package/dist/{launch-SfzGH_s9.mjs → launch-DOp8RjDz.mjs} +32 -27
  72. package/dist/{logs-DXE32kyb.mjs → logs-dQDki6Tt.mjs} +9 -173
  73. package/dist/{logs-ovlU7m7N.mjs → logs-s1dRIG1E.mjs} +85 -36
  74. package/dist/{macos-B3BveDrU.mjs → macos-B0VEV3Gf.mjs} +1 -1
  75. package/dist/{macos-CCfhb-jT.mjs → macos-DBBPNnIA.mjs} +18 -19
  76. package/dist/macos-run.mjs +1 -1
  77. package/dist/maintenance-run.mjs +28 -11
  78. package/dist/{metro-Bu8LBfzS.mjs → metro-CjC10t6E.mjs} +2 -2
  79. package/dist/{metro-gateway-DtsOy-0P.mjs → metro-gateway-B6_PgD0L.mjs} +2 -3
  80. package/dist/{named-ports-BWDuU5oQ.mjs → named-ports-BG0j1X4g.mjs} +2 -2
  81. package/dist/{native-android-96BBizbq.mjs → native-android-CL2NGiik.mjs} +17 -17
  82. package/dist/{native-gradle-artifact-inputs-BcLYBZil.mjs → native-gradle-artifact-inputs-btSUulme.mjs} +3 -3
  83. package/dist/{native-run-BmH7U8pr.mjs → native-run-BfIDFKLH.mjs} +2 -3
  84. package/dist/{native-runtime-DgtJkzIa.mjs → native-runtime-Dq3RBcON.mjs} +6 -7
  85. package/dist/{native-xcode-inputs-irplbQb0.mjs → native-xcode-inputs-BW7H8JGu.mjs} +2 -2
  86. package/dist/{native-xcode-ios-BY-6hh6M.mjs → native-xcode-ios-CBXJAxfC.mjs} +18 -18
  87. package/dist/offload-worker.d.mts +7 -2
  88. package/dist/offload-worker.mjs +34 -23
  89. package/dist/{ownership-DxlZGDcV.mjs → ownership-BjYvMNX_.mjs} +2 -2
  90. package/dist/{phone-reverses-BdsdesVF.mjs → phone-reverses-lmj6kcPm.mjs} +3 -3
  91. package/dist/{placement-log-DUvqqsB-.mjs → placement-log-DIFPQAXp.mjs} +1 -1
  92. package/dist/{plan-placement-4axc0Hs7.mjs → plan-placement-IiiSQhtz.mjs} +3 -3
  93. package/dist/{ports-D-E_OiAO.mjs → ports-C2_w1Z0Z.mjs} +3 -3
  94. package/dist/prebuild-gmouvmJZ.mjs +1247 -0
  95. package/dist/{project-Dz-hWkb-.mjs → project-BUu6Is4k.mjs} +15 -16
  96. package/dist/{react-native-android-DOinxgwB.mjs → react-native-android-Cgg99REN.mjs} +48 -33
  97. package/dist/{react-native-build-AuCu-aAP.mjs → react-native-build-oNwqF5Wb.mjs} +8 -8
  98. package/dist/{react-native-doctor-2ivJUmwZ.mjs → react-native-doctor-BhA3KUte.mjs} +49 -8
  99. package/dist/{react-native-ios-D5zTIuH8.mjs → react-native-ios-B-nf4rjN.mjs} +40 -25
  100. package/dist/{recordings-CdPwYwvs.mjs → recordings-BldzVKq0.mjs} +1 -1
  101. package/dist/{reload-Ck9RJeSq.mjs → reload-C9OduiNc.mjs} +1 -1
  102. package/dist/{reload-C1TTVesC.mjs → reload-CCR7KC_l.mjs} +14 -14
  103. package/dist/{remote-DEZ7AOVq.mjs → remote-C8S7FlPF.mjs} +16 -7
  104. package/dist/{result-DqBrb12U.mjs → result-7F5hEwQJ.mjs} +17 -17
  105. package/dist/{run-BIwoU44q.mjs → run-BqB0v3pt.mjs} +1 -1
  106. package/dist/{selection-BLtvaqxc.mjs → selection-BNPBZ6T5.mjs} +157 -44
  107. package/dist/{server-bare-Z1ToVLPn.mjs → server-bare-A75rDIdD.mjs} +55 -3
  108. package/dist/{server-command-C0pmjNdG.mjs → server-command-CssKFOD7.mjs} +4 -4
  109. package/dist/{server-expo-Tt_hLRpy.mjs → server-expo-eQfOdydb.mjs} +8 -6
  110. package/dist/server-expo-wvcj5tiZ.mjs +2 -0
  111. package/dist/{settings-RKwY33wv.mjs → settings-CosW5X-S.mjs} +59 -61
  112. package/dist/{settings-kkt0vP4w.mjs → settings-OaGQF-ri.mjs} +1 -1
  113. package/dist/{settings-write--gj6MACV.mjs → settings-write-QjYfSrjF.mjs} +5 -5
  114. package/dist/settings.schema.json +71 -6
  115. package/dist/{simslim-CdWKT3vA.mjs → simslim-Bax1qcxu.mjs} +22 -6
  116. package/dist/{slot-launch-A1BgotaM.mjs → slot-launch-CYCEhfBY.mjs} +6 -6
  117. package/dist/{stage-ERTMh88n.mjs → stage-jKQ7CP_B.mjs} +1 -1
  118. package/dist/{start-Bmg_qmHi.mjs → start-C_wefNKB.mjs} +1 -1
  119. package/dist/{start-BKGrEhzG.mjs → start-_BdJ32cZ.mjs} +9 -10
  120. package/dist/{state-B1ig0Kqy.mjs → state-C1i2nMOP.mjs} +2 -3
  121. package/dist/{state-BfAltYJP.mjs → state-C4OdpOTF.mjs} +1 -2
  122. package/dist/{stats-B-ckuiUg.mjs → stats-tEpEEH-u.mjs} +4 -4
  123. package/dist/{status-Pw-807f0.mjs → status-B9M7x4CZ.mjs} +1 -1
  124. package/dist/{status-Fect2w9R.mjs → status-CRXz-Gtj.mjs} +1 -1
  125. package/dist/{status-DfFp6a76.mjs → status-DQrqodLj.mjs} +22 -23
  126. package/dist/{status-watch-XC7F-AMf.mjs → status-watch-B5wDIH_o.mjs} +4 -4
  127. package/dist/status-worker.mjs +1 -1
  128. package/dist/{stim-desktop-DS0mzR8U.mjs → stim-desktop-6Dqp-gjX.mjs} +1 -1
  129. package/dist/{stop-BFu7X_Do.mjs → stop-CmdNhGlC.mjs} +2 -2
  130. package/dist/{stop-CL1kDHds.mjs → stop-DRqQVqDJ.mjs} +74 -53
  131. package/dist/{stop-DhclRwOO.mjs → stop-ySNQHXMG.mjs} +4 -5
  132. package/dist/supervisor-run.d.mts +1 -0
  133. package/dist/supervisor-run.mjs +15 -16
  134. package/dist/{support-B3tzVhKn.mjs → support-BGSCBoib.mjs} +4 -4
  135. package/dist/{support-B1W-hmC2.mjs → support-CVOCp0Ft.mjs} +15 -12
  136. package/dist/{swiftpm-artifact-inputs-BWYPj9Sn.mjs → swiftpm-artifact-inputs-CfUzt_0Z.mjs} +1 -1
  137. package/dist/{swiftpm-macos-BVCP5mO4.mjs → swiftpm-macos-x6HPpl_2.mjs} +10 -10
  138. package/dist/toolchain-DoavrvIA.mjs +2 -0
  139. package/dist/toolchain-J4J8MrAr.mjs +2107 -0
  140. package/dist/trigger-DzJu208Q.mjs +2 -0
  141. package/dist/{trigger-CBMe2YLH.mjs → trigger-KVaWWNyn.mjs} +1 -1
  142. package/dist/{warm-progress-ol0ZypEu.mjs → warm-progress-DvhTX_eu.mjs} +3 -4
  143. package/dist/web-BFLueSh-.mjs +2 -0
  144. package/dist/{web-BH7peScT.mjs → web-Bihbf7-u.mjs} +8 -9
  145. package/dist/web-run.mjs +4 -4
  146. package/dist/{workspace-state-CeBpIZgr.mjs → workspace-state-pUg3_RRA.mjs} +45 -7
  147. package/dist/{workspaces-CSV2Orf4.mjs → workspaces-g2lhdBXF.mjs} +17 -17
  148. package/dist/{worktree-Dw8kfacb.mjs → worktree-BKuklFh_.mjs} +34 -31
  149. package/dist/{worktree-DEDUzO_L.mjs → worktree-Bm4cb-nU.mjs} +1 -1
  150. package/package.json +8 -8
  151. package/shim/bundle-response.cjs +53 -1
  152. package/shim/bundle-response.d.cts +1 -1
  153. package/shim/expo-metro-config.cjs +23 -1
  154. package/dist/created-devices-D2Aca-xu.mjs +0 -52
  155. package/dist/paths-DQtTgsBf.mjs +0 -42
  156. package/dist/prebuild-DmVCf5xb.mjs +0 -501
  157. package/dist/server-expo-CEntXzRw.mjs +0 -2
  158. package/dist/toolchain-BjgKdoEf.mjs +0 -2
  159. package/dist/toolchain-D3bmRMia.mjs +0 -897
  160. package/dist/trigger-BLsHgAGR.mjs +0 -2
  161. package/dist/web-BdOFlTJr.mjs +0 -2
  162. package/dist/xcode-DHu41qQ4.mjs +0 -910
@@ -1,15 +1,15 @@
1
1
  import { c as throwIfCancelled, l as WorkspaceProcessCleanupError, n as isTimeoutError, t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
- import { _ as loadConfig$1, d as getConfigDir, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-BZhXY15H.mjs";
2
+ import { _ as loadConfig$1, d as getConfigDir, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-BktkY_zC.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-CUZifp6Z.mjs";
4
4
  import { accessSync, chmodSync, constants, lstatSync, mkdirSync, mkdtempSync, readdirSync, realpathSync, rmSync, statSync } from "node:fs";
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
8
  import { REMOTE_DEVICE_BACKENDS, SETTINGS, SETTING_GROUPS, TUNNEL_MODES, WEB_VIEWPORTS, acceptsShape, coerceSettingText, expectedShape, isLayeredSetting, settingDefinition, settingValueError } from "@stim-cli/core/state";
9
- import { 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";
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 { existsSync as existsSync$1, lstatSync as lstatSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, realpathSync as realpathSync$1, statSync as statSync$1 } from "fs";
12
- import { chmod, lstat, mkdir, readdir, rm, utimes } from "node:fs/promises";
12
+ import { chmod, lstat, mkdir, readdir, realpath, rm, utimes } from "node:fs/promises";
13
13
  //#region src/temporary.ts
14
14
  function existingPath(path) {
15
15
  const missing = [];
@@ -381,66 +381,61 @@ function missingDestinationReason(target, rel) {
381
381
  }
382
382
  return lstatSync$1(join$1(target, rel), { throwIfNoEntry: false }) ? "exists" : null;
383
383
  }
384
- const SWEEP_CONCURRENCY = 32;
385
- async function removeExclusionsIn({ path, rel }, signal) {
384
+ const AUTOLINKING_PATH = [
385
+ "android",
386
+ "build",
387
+ "generated",
388
+ "autolinking"
389
+ ];
390
+ function knownCopiedPaths(rel) {
391
+ const segments = rel.split("/");
392
+ const paths = [];
393
+ if (segments.at(-1) === "node_modules") paths.push(".pnpm-store", "expo-modules-jsi/apple/.DerivedData");
394
+ for (let covered = 1; covered < AUTOLINKING_PATH.length; covered++) if (AUTOLINKING_PATH.slice(0, covered).every((segment, i) => segments.at(i - covered) === segment)) paths.push(AUTOLINKING_PATH.slice(covered).join("/"));
395
+ return paths;
396
+ }
397
+ function isMissingError(error) {
398
+ return error instanceof Error && "code" in error && (error.code === "ENOENT" || error.code === "ENOTDIR");
399
+ }
400
+ async function removeCopiedPath(root, rel, signal) {
386
401
  signal.throwIfAborted();
387
- const entries = await readdir(path, { withFileTypes: true });
388
- const excluded = entries.filter((entry) => isCarrySkipped(`${rel}/${entry.name}`));
389
- if (excluded.length) {
390
- const stat = await lstat(path);
391
- await chmod(path, stat.mode | 448);
392
- try {
393
- for (const entry of excluded) {
394
- signal.throwIfAborted();
395
- await removeTemporaryEntryAsync(join$1(path, entry.name), signal);
396
- }
397
- } finally {
398
- await utimes(path, stat.atime, stat.mtime);
399
- await chmod(path, stat.mode);
400
- }
402
+ const path = join$1(root, rel);
403
+ let parent;
404
+ try {
405
+ parent = await realpath(dirname$1(path));
406
+ } catch (error) {
407
+ if (isMissingError(error)) return;
408
+ throw error;
401
409
  }
402
- const children = [];
403
- for (const entry of entries) {
404
- const child = `${rel}/${entry.name}`;
405
- if (entry.isDirectory() && !isCarrySkipped(child)) children.push({
406
- path: join$1(path, entry.name),
407
- rel: child
410
+ const inside = relative$1(root, parent);
411
+ if (inside === ".." || inside.startsWith(`..${sep$1}`) || isAbsolute$1(inside)) return;
412
+ const stat = await lstat(parent);
413
+ const target = join$1(parent, basename$1(path));
414
+ try {
415
+ await lstat(target);
416
+ } catch (error) {
417
+ if (isMissingError(error)) return;
418
+ throw error;
419
+ }
420
+ await chmod(parent, stat.mode | 448);
421
+ try {
422
+ await removeTemporaryEntryAsync(target, signal);
423
+ } finally {
424
+ await utimes(parent, stat.atime, stat.mtime);
425
+ await chmod(parent, stat.mode);
426
+ }
427
+ }
428
+ async function removeKnownCopiedPaths(path, rel, signal) {
429
+ const paths = knownCopiedPaths(rel);
430
+ if (basename$1(rel) === "node_modules") {
431
+ const virtualStore = await readdir(join$1(path, ".pnpm")).catch((error) => {
432
+ if (isMissingError(error)) return [];
433
+ throw error;
408
434
  });
435
+ for (const name of virtualStore) if (name.startsWith("expo-modules-jsi@")) paths.push(`.pnpm/${name}/node_modules/expo-modules-jsi/apple/.DerivedData`);
409
436
  }
410
- return children;
411
- }
412
- async function removeCopiedExclusionsAsync(path, rel, signal) {
413
- let active = 0;
414
- const waiting = [];
415
- const acquire = async () => {
416
- if (active < SWEEP_CONCURRENCY) active += 1;
417
- else await new Promise((wake) => waiting.push(wake));
418
- };
419
- const release = () => {
420
- const next = waiting.shift();
421
- if (next) next();
422
- else active -= 1;
423
- };
424
- let failure;
425
- const visit = async (directory) => {
426
- await acquire();
427
- let children;
428
- try {
429
- if (failure) return;
430
- children = await removeExclusionsIn(directory, signal);
431
- } catch (error) {
432
- failure ??= { error };
433
- return;
434
- } finally {
435
- release();
436
- }
437
- await Promise.all(children.map(visit));
438
- };
439
- await visit({
440
- path,
441
- rel
442
- });
443
- if (failure) throw failure.error;
437
+ const root = await realpath(path);
438
+ for (const known of paths) await removeCopiedPath(root, known, signal);
444
439
  }
445
440
  async function cloneIgnoredEntries({ root, target, patterns, operation }) {
446
441
  const options = {
@@ -505,7 +500,7 @@ async function cloneIgnoredEntries({ root, target, patterns, operation }) {
505
500
  ], options);
506
501
  cloned = false;
507
502
  }
508
- if ((await lstat(to)).isDirectory()) await removeCopiedExclusionsAsync(to, rel, operation.signal);
503
+ if ((await lstat(to)).isDirectory()) await removeKnownCopiedPaths(to, rel, operation.signal);
509
504
  copied.push(rel);
510
505
  } catch (cause) {
511
506
  if (cause instanceof WorkspaceProcessCleanupError || cause instanceof Error && "reportCleanup" in cause) throw cause;
@@ -1391,6 +1386,9 @@ function iosSimSlimProfileSetting(settings, settingsRoot) {
1391
1386
  throw new Error(`Could not read ios.simslimProfile ${value}: ${String(error?.message || error)}`, { cause: error });
1392
1387
  }
1393
1388
  }
1389
+ function iosSimSlimDefaultSetting(settings) {
1390
+ return isPlainObject(settings) && isPlainObject(settings.ios) && settings.ios.simslim === "on";
1391
+ }
1394
1392
  function iosString(settings, key) {
1395
1393
  if (!isPlainObject(settings) || !isPlainObject(settings.ios)) return void 0;
1396
1394
  return settings.ios[key];
@@ -1744,4 +1742,4 @@ function webSettings(settings) {
1744
1742
  };
1745
1743
  }
1746
1744
  //#endregion
1747
- export { settingOriginScope as $, metroIdleStopMinutesSetting as A, readWorktreeExclude as At, realpathInside as B, warmWorktreePaths as Bt, iosSigningIdentitySha1Setting as C, isPodInstallChurn as Ct, mergeSettingsLayers as D, locallyKnownUpstream as Dt, maintenanceKeepSetting as E, listWorktreesAsync as Et, parseIosRemote as F, resolveFullRefAsync as Ft, resolveCacheProviderConfig as G, temporaryRoot as Gt, remoteEasFallbackSetting as H, makeTemporaryDirectory as Ht, projectSettingsContext as I, resolveSourceCheckoutAsync as It, resolveProjectSettingsAsync as J, resolveIosProjectDir as K, projectSettingsContextAsync as L, restoreFileAsync as Lt, metroTunnelSettingError as M, repoRoot as Mt, metroWarmupUrlSetting as N, repoRootAsync as Nt, metroCommandSetting as O, locallyKnownUpstreamAsync as Ot, ngrokUrlSetting as P, resolveFullRef as Pt, settingOrigin as Q, publicUrlSetting as R, sourceCheckoutOf as Rt, iosSigningIdentitySettingError as S, hasUncommittedWorkAsync as St, iosSimSlimProfileSetting as T, listWorktrees as Tt, remoteIosSetting as U, removeTemporaryEntry as Ut, remoteAndroidSetting as V, filesystemDevice as Vt, resolveAndroidLayout as W, removeTemporaryEntryAsync as Wt, runnableMetroCommand as X, resolveSettings as Y, settingFile as Z, iosLanHostSetting as _, gitCommonDir as _t, SETTING_SHAPE_REMEDY as a, webSettings as at, iosProjectDirSettingError as b, hasPopulatedSubmodulesAsync as bt, androidDataPartitionSizeBytes as c, detectProviders as ct, androidLayoutSetting as d, branchExistsAsync as dt, settingShapeErrors as et, androidLayoutSettingError as f, cloneIgnoredEntries as ft, deviceReclaimIdleMinutesSetting as g, dirtyPathsAsync as gt, deviceIdleShutdownMinutesSetting as h, dirtyFingerprintFiles as ht, SETTINGS_WITH_RESOLVE_TIME_FALLBACK as i, unknownSettingKeys as it, metroPortSetting as j, removeWorktreeAsync as jt, metroCommandSettingError as k, podsOutOfSync as kt, androidDataPartitionSizeGbSetting as l, planMetroReach as lt, defaultAndroidLayout as m, depsOutOfSync as mt, METRO_COMMAND_PORT as n, settingsLayers as nt, androidAvdConfigSetting as o, workspaceHiddenSetting as ot, cacheProviderSettingError as p, deleteBranchAsync as pt, resolveProjectSettings as q, PATH_SETTINGS as r, tunnelModeSetting as rt, androidAvdConfigSettingError as s, PUBLIC_METRO_ENV as st, ANDROID_AVD_CONFIG_HELP as t, settingValueAt as tt, androidDataPartitionSizeGbSettingError as u, resolveTailscaleBinary as ut, iosLanHostSettingError as v, gitCommonDirAsync as vt, iosSigningIdentitySha1SettingError as w, linkedWorktreesOnDisk as wt, iosSigningIdentitySetting as x, hasRemoteAsync as xt, iosProjectDirSetting as y, gitCommonDirOnDisk as yt, readCommittedSettings as z, unpushedCommitsAsync as zt };
1745
+ export { settingOrigin as $, metroCommandSettingError as A, podsOutOfSync as At, readCommittedSettings as B, unpushedCommitsAsync as Bt, iosSigningIdentitySha1Setting as C, hasUncommittedWorkAsync as Ct, maintenanceKeepSetting as D, listWorktreesAsync as Dt, iosSimSlimProfileSetting as E, listWorktrees as Et, ngrokUrlSetting as F, resolveFullRef as Ft, resolveAndroidLayout as G, removeTemporaryEntryAsync as Gt, remoteAndroidSetting as H, filesystemDevice as Ht, parseIosRemote as I, resolveFullRefAsync as It, resolveProjectSettings as J, resolveCacheProviderConfig as K, temporaryRoot as Kt, projectSettingsContext as L, resolveSourceCheckoutAsync as Lt, metroPortSetting as M, removeWorktreeAsync as Mt, metroTunnelSettingError as N, repoRoot as Nt, mergeSettingsLayers as O, locallyKnownUpstream as Ot, metroWarmupUrlSetting as P, repoRootAsync as Pt, settingFile as Q, projectSettingsContextAsync as R, restoreFileAsync as Rt, iosSigningIdentitySettingError as S, hasRemoteAsync as St, iosSimSlimDefaultSetting as T, linkedWorktreesOnDisk as Tt, remoteEasFallbackSetting as U, makeTemporaryDirectory as Ut, realpathInside as V, warmWorktreePaths as Vt, remoteIosSetting as W, removeTemporaryEntry as Wt, resolveSettings as X, resolveProjectSettingsAsync as Y, runnableMetroCommand as Z, iosLanHostSetting as _, dirtyPathsAsync as _t, SETTING_SHAPE_REMEDY as a, unknownSettingKeys as at, iosProjectDirSettingError as b, gitCommonDirOnDisk as bt, androidDataPartitionSizeBytes as c, PUBLIC_METRO_ENV as ct, androidLayoutSetting as d, resolveTailscaleBinary as dt, settingOriginScope as et, androidLayoutSettingError as f, branchExistsAsync as ft, deviceReclaimIdleMinutesSetting as g, dirtyFingerprintFiles as gt, deviceIdleShutdownMinutesSetting as h, depsOutOfSync as ht, SETTINGS_WITH_RESOLVE_TIME_FALLBACK as i, tunnelModeSetting as it, metroIdleStopMinutesSetting as j, readWorktreeExclude as jt, metroCommandSetting as k, locallyKnownUpstreamAsync as kt, androidDataPartitionSizeGbSetting as l, detectProviders as lt, defaultAndroidLayout as m, deleteBranchAsync as mt, METRO_COMMAND_PORT as n, settingValueAt as nt, androidAvdConfigSetting as o, webSettings as ot, cacheProviderSettingError as p, cloneIgnoredEntries as pt, resolveIosProjectDir as q, PATH_SETTINGS as r, settingsLayers as rt, androidAvdConfigSettingError as s, workspaceHiddenSetting as st, ANDROID_AVD_CONFIG_HELP as t, settingShapeErrors as tt, androidDataPartitionSizeGbSettingError as u, planMetroReach as ut, iosLanHostSettingError as v, gitCommonDir as vt, iosSigningIdentitySha1SettingError as w, isPodInstallChurn as wt, iosSigningIdentitySetting as x, hasPopulatedSubmodulesAsync as xt, iosProjectDirSetting as y, gitCommonDirAsync as yt, publicUrlSetting as z, sourceCheckoutOf as zt };
@@ -1,4 +1,4 @@
1
- import { a as layerFile, c as settingEntry, i as SettingsRefusal, n as readScope, o as readSettingsContext, r as requireSetting, s as readSettingsPayload, t as mutateSetting } from "./settings-write--gj6MACV.mjs";
1
+ import { a as layerFile, c as settingEntry, i as SettingsRefusal, n as readScope, o as readSettingsContext, r as requireSetting, s as readSettingsPayload, t as mutateSetting } from "./settings-write-QjYfSrjF.mjs";
2
2
  import { SETTING_SCOPES } from "@stim-cli/core/state";
3
3
  import chalk from "chalk";
4
4
  //#region src/commands/settings.ts
@@ -1,10 +1,10 @@
1
1
  import { u as withWorkspaceProcessLock } from "./exec-VFRpu1iA.mjs";
2
- import { A as writeConfigSettingAsync, O as withConfigLockAsync$1, _ as loadConfig$1, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-BZhXY15H.mjs";
2
+ import { A as writeConfigSettingAsync, O as withConfigLockAsync$1, _ as loadConfig$1, f as getConfigPath$1, h as getRepoSettings, m as getProjectSettings } from "./config-BktkY_zC.mjs";
3
3
  import { a as killOnAbort, i as gitPath } from "./operation-exec-CUZifp6Z.mjs";
4
- import { it as unknownSettingKeys, z as readCommittedSettings } from "./settings-RKwY33wv.mjs";
5
- import { r as findCommandWorkspaceAsync, t as NO_PROJECT_REFUSAL } from "./project-Dz-hWkb-.mjs";
6
- import { i as stimDesktopInstalledAsync, n as settingDefault, r as stimDesktopInstalled } from "./stim-desktop-DS0mzR8U.mjs";
7
- import { n as recordingLayers, t as deleteTurnedOffRecordings } from "./recordings-CdPwYwvs.mjs";
4
+ import { B as readCommittedSettings, at as unknownSettingKeys } from "./settings-CosW5X-S.mjs";
5
+ import { r as findCommandWorkspaceAsync, t as NO_PROJECT_REFUSAL } from "./project-BUu6Is4k.mjs";
6
+ import { i as stimDesktopInstalledAsync, n as settingDefault, r as stimDesktopInstalled } from "./stim-desktop-6Dqp-gjX.mjs";
7
+ import { n as recordingLayers, t as deleteTurnedOffRecordings } from "./recordings-BldzVKq0.mjs";
8
8
  import { existsSync, readFileSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
9
9
  import { join } from "node:path";
10
10
  import { configDir } from "@stim-cli/core";
@@ -315,6 +315,25 @@
315
315
  "relative": true
316
316
  }
317
317
  },
318
+ "simslim": {
319
+ "description": "Slim every Stim-owned iOS simulator with SimSlim's default categories when no ios.simslimProfile is set; off in a project opts that app out",
320
+ "type": "string",
321
+ "enum": [
322
+ "on",
323
+ "off"
324
+ ],
325
+ "default": "off",
326
+ "x-stim": {
327
+ "key": "ios.simslim",
328
+ "kind": "choice",
329
+ "scopes": [
330
+ "machine",
331
+ "workspace",
332
+ "repo",
333
+ "committed"
334
+ ]
335
+ }
336
+ },
318
337
  "simslimProfile": {
319
338
  "description": "SimSlim JSON profile under the app",
320
339
  "type": "string",
@@ -698,7 +717,7 @@
698
717
  "type": "object",
699
718
  "properties": {
700
719
  "idleShutdownMinutes": {
701
- "description": "Minutes an owned simulator or emulator stays idle before the workspace supervisor shuts it down; 0 never",
720
+ "description": "Minutes an owned simulator or emulator stays idle before the workspace supervisor, or automatic maintenance when no supervisor runs, shuts it down; 0 never",
702
721
  "type": "integer",
703
722
  "minimum": 0,
704
723
  "default": 30,
@@ -1283,6 +1302,25 @@
1283
1302
  ]
1284
1303
  }
1285
1304
  },
1305
+ "simslim": {
1306
+ "description": "Slim every Stim-owned iOS simulator with SimSlim's default categories when no ios.simslimProfile is set; off in a project opts that app out",
1307
+ "type": "string",
1308
+ "enum": [
1309
+ "on",
1310
+ "off"
1311
+ ],
1312
+ "default": "off",
1313
+ "x-stim": {
1314
+ "key": "ios.simslim",
1315
+ "kind": "choice",
1316
+ "scopes": [
1317
+ "machine",
1318
+ "workspace",
1319
+ "repo",
1320
+ "committed"
1321
+ ]
1322
+ }
1323
+ },
1286
1324
  "appStoreConnectKeyPath": {
1287
1325
  "description": "App Store Connect API key (.p8) that `stim device provision ios` authenticates with",
1288
1326
  "type": "string",
@@ -1381,7 +1419,7 @@
1381
1419
  "type": "object",
1382
1420
  "properties": {
1383
1421
  "idleShutdownMinutes": {
1384
- "description": "Minutes an owned simulator or emulator stays idle before the workspace supervisor shuts it down; 0 never",
1422
+ "description": "Minutes an owned simulator or emulator stays idle before the workspace supervisor, or automatic maintenance when no supervisor runs, shuts it down; 0 never",
1385
1423
  "type": "integer",
1386
1424
  "minimum": 0,
1387
1425
  "default": 30,
@@ -1779,7 +1817,7 @@
1779
1817
  }
1780
1818
  },
1781
1819
  "logMaxMb": {
1782
- "description": "Machine maintenance log rotation size in MiB",
1820
+ "description": "Machine maintenance and gc log rotation size in MiB",
1783
1821
  "type": "number",
1784
1822
  "exclusiveMinimum": 0,
1785
1823
  "default": 1,
@@ -1793,7 +1831,7 @@
1793
1831
  }
1794
1832
  },
1795
1833
  "logRetentionDays": {
1796
- "description": "Retention of the rotated machine maintenance log in days",
1834
+ "description": "Retention of the rotated machine maintenance and gc logs in days",
1797
1835
  "type": "integer",
1798
1836
  "minimum": 1,
1799
1837
  "default": 30,
@@ -1893,6 +1931,20 @@
1893
1931
  "env": "STIM_MAINTENANCE_WORKTREE_CHECK_MINUTES"
1894
1932
  }
1895
1933
  },
1934
+ "idleCheckMinutes": {
1935
+ "description": "Interval in minutes of the check that shuts down owned simulators and emulators idle for devices.idleShutdownMinutes, also with no dev server running",
1936
+ "type": "integer",
1937
+ "minimum": 1,
1938
+ "default": 5,
1939
+ "x-stim": {
1940
+ "key": "maintenance.idleCheckMinutes",
1941
+ "kind": "number",
1942
+ "scopes": [
1943
+ "machine"
1944
+ ],
1945
+ "env": "STIM_MAINTENANCE_IDLE_CHECK_MINUTES"
1946
+ }
1947
+ },
1896
1948
  "sweepHours": {
1897
1949
  "description": "Age sweep interval in hours; 0 turns the age sweep off",
1898
1950
  "type": "integer",
@@ -1908,9 +1960,9 @@
1908
1960
  }
1909
1961
  },
1910
1962
  "olderThanDays": {
1911
- "description": "Age in days for the age sweep: unused workspace build outputs and shared cache entries",
1963
+ "description": "Days unused before the age sweep removes it: workspace build outputs, shared cache entries, parked simulators and emulators, and, with maintenance.removeIdleWorktrees, clean pushed linked worktrees; 0 turns those age removals off",
1912
1964
  "type": "integer",
1913
- "minimum": 1,
1965
+ "minimum": 0,
1914
1966
  "default": 7,
1915
1967
  "x-stim": {
1916
1968
  "key": "maintenance.olderThanDays",
@@ -2018,6 +2070,19 @@
2018
2070
  "env": "STIM_MAINTENANCE_REMOVE_FINISHED_WORKTREES"
2019
2071
  }
2020
2072
  },
2073
+ "removeIdleWorktrees": {
2074
+ "description": "In the age sweep, also remove clean, pushed linked worktrees whose branch is not merged once no Stim command has used them for maintenance.olderThanDays, with their git-ignored files; needs maintenance.removeFinishedWorktrees",
2075
+ "type": "boolean",
2076
+ "default": false,
2077
+ "x-stim": {
2078
+ "key": "maintenance.removeIdleWorktrees",
2079
+ "kind": "boolean",
2080
+ "scopes": [
2081
+ "machine"
2082
+ ],
2083
+ "env": "STIM_MAINTENANCE_REMOVE_IDLE_WORKTREES"
2084
+ }
2085
+ },
2021
2086
  "workspaceOutputsMaxGb": {
2022
2087
  "description": "Workspace build-output cap in GiB; 0 means no cap",
2023
2088
  "type": "number",
@@ -1,20 +1,36 @@
1
1
  import { D as ownership_claim_exports, S as process_identity_exports, b as operationState, t as getExecutor, y as isTermination } from "./exec-VFRpu1iA.mjs";
2
- import { d as getConfigDir } from "./config-BZhXY15H.mjs";
2
+ import { d as getConfigDir } from "./config-BktkY_zC.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
6
- async function reconcileSimSlim({ udid, profile, previouslyManaged = false, out = () => {}, spawn, timeoutMs = 72e4, cleanupMs = 1e4, context }) {
7
- if (!profile && !previouslyManaged) return {
6
+ async function reconcileSimSlim(options) {
7
+ try {
8
+ return await applySimSlim(options);
9
+ } catch (error) {
10
+ const cause = error instanceof Error ? error.cause : void 0;
11
+ const missing = cause instanceof Error && "code" in cause && cause.code === "ENOENT";
12
+ if (options.profile || !options.slimByDefault || !missing) throw error;
13
+ options.out?.("SimSlim: ios.simslim is on but the `simslim` command is not installed; continuing without it. Run `brew install mobai-app/tap/simslim`.");
14
+ return {
15
+ managed: Boolean(options.previouslyManaged),
16
+ profile: null,
17
+ notInstalled: true
18
+ };
19
+ }
20
+ }
21
+ async function applySimSlim({ udid, profile, slimByDefault = false, previouslyManaged = false, out = () => {}, spawn, timeoutMs = 72e4, cleanupMs = 1e4, context }) {
22
+ if (!profile && !slimByDefault && !previouslyManaged) return {
8
23
  managed: false,
9
24
  profile: null
10
25
  };
11
- const action = profile ? "on" : "off";
26
+ const slim = Boolean(profile) || slimByDefault;
27
+ const action = slim ? "on" : "off";
12
28
  const args = profile ? [
13
29
  "on",
14
30
  udid,
15
31
  "--profile",
16
32
  profile
17
- ] : ["off", udid];
33
+ ] : slim ? ["on", udid] : ["off", udid];
18
34
  const lines = [];
19
35
  const onLine = (raw) => {
20
36
  const line = stripAnsi(raw).trim();
@@ -130,7 +146,7 @@ async function reconcileSimSlim({ udid, profile, previouslyManaged = false, out
130
146
  throw new Error(`SimSlim ${action} failed with exit code ${result?.code ?? "unknown"}.${detail}`);
131
147
  }
132
148
  return {
133
- managed: Boolean(profile),
149
+ managed: slim,
134
150
  profile: profile ?? null
135
151
  };
136
152
  }
@@ -1,9 +1,9 @@
1
- import { G as projectDeviceSlots, U as parseDeviceSlotKey, p as getProject } from "./config-BZhXY15H.mjs";
2
- import { r as readWorkspaceState$1 } from "./workspace-state-CeBpIZgr.mjs";
3
- import { O as getAvdNameForSerialAsync, j as listAdbDevicesAsync } from "./android-882m4hxX.mjs";
4
- import { vn as deviceShellArg } from "./budget-dPGuhNai.mjs";
5
- import { y as fileLeaseIo } from "./activity-Dq3ZcdD8.mjs";
6
- import { f as listAllIosSimsAsync } from "./ios-CVUFFZ6C.mjs";
1
+ import { r as readWorkspaceState$1 } from "./workspace-state-pUg3_RRA.mjs";
2
+ import { G as projectDeviceSlots, U as parseDeviceSlotKey, p as getProject } from "./config-BktkY_zC.mjs";
3
+ import { O as getAvdNameForSerialAsync, j as listAdbDevicesAsync } from "./android-DTAcRwBC.mjs";
4
+ import { Cn as deviceShellArg } from "./budget-k2mZGvvk.mjs";
5
+ import { y as fileLeaseIo } from "./activity-Lnb_EoRY.mjs";
6
+ import { f as listAllIosSimsAsync } from "./ios-WxpDJ5T1.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-VFRpu1iA.mjs";
2
- import { d as runCancellationSignal } from "./native-run-BmH7U8pr.mjs";
2
+ import { d as runCancellationSignal } from "./native-run-BfIDFKLH.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-BKGrEhzG.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-_BdJ32cZ.mjs";
2
2
  export { startCommand as default, failureEvidence, liveSupervisor, parseWait, readLogTail, registerStart, resolveWorkspaceMetroPort, startDevServer, startFacts, supervisorEntry, supervisorSignalable, tailLines, wantsExpoOwnTunnel };
@@ -1,15 +1,14 @@
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-VFRpu1iA.mjs";
2
- import { l as workspaceAgentDeviceDir, m as workspaceLogsDir$1, n as ensureWorkspaceStorage, s as supervisorLogFile } from "./paths-DQtTgsBf.mjs";
3
- import { E as upsertProject, O as withConfigLockAsync$1, p as getProject, x as releaseMetroPort } from "./config-BZhXY15H.mjs";
4
- import { _ as stepTimer, l as phaseLine } from "./command-output-DxC0k2rk.mjs";
5
- import { i as recordWorkspaceUse, l as withWorkspaceStateLockAsync, n as clearWorkspaceStateKeys, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-CeBpIZgr.mjs";
6
- import { A as metroIdleStopMinutesSetting, G as resolveCacheProviderConfig, J as resolveProjectSettingsAsync, K as resolveIosProjectDir, M as metroTunnelSettingError, O as metroCommandSetting, P as ngrokUrlSetting, R as publicUrlSetting, U as remoteIosSetting, V as remoteAndroidSetting, W as resolveAndroidLayout, a as SETTING_SHAPE_REMEDY, ct as detectProviders, et as settingShapeErrors, h as deviceIdleShutdownMinutesSetting, it as unknownSettingKeys, j as metroPortSetting, k as metroCommandSettingError, lt as planMetroReach, m as defaultAndroidLayout, p as cacheProviderSettingError, rt as tunnelModeSetting, st as PUBLIC_METRO_ENV } from "./settings-RKwY33wv.mjs";
7
- 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-Dz-hWkb-.mjs";
8
- import { a as workspaceLinkLine, o as workspaceLinks } from "./stim-desktop-DS0mzR8U.mjs";
9
- 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-Bu8LBfzS.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-pUg3_RRA.mjs";
3
+ import { E as upsertProject, O as withConfigLockAsync$1, p as getProject, x as releaseMetroPort } from "./config-BktkY_zC.mjs";
4
+ import { _ as stepTimer, l as phaseLine } from "./command-output-BF5AR2dL.mjs";
5
+ import { A as metroCommandSettingError, F as ngrokUrlSetting, G as resolveAndroidLayout, H as remoteAndroidSetting, K as resolveCacheProviderConfig, M as metroPortSetting, N as metroTunnelSettingError, W as remoteIosSetting, Y as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, at as unknownSettingKeys, ct as PUBLIC_METRO_ENV, h as deviceIdleShutdownMinutesSetting, it as tunnelModeSetting, j as metroIdleStopMinutesSetting, k as metroCommandSetting, lt as detectProviders, m as defaultAndroidLayout, p as cacheProviderSettingError, q as resolveIosProjectDir, tt as settingShapeErrors, ut as planMetroReach, z as publicUrlSetting } from "./settings-CosW5X-S.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-BUu6Is4k.mjs";
7
+ import { a as workspaceLinkLine, o as workspaceLinks } from "./stim-desktop-6Dqp-gjX.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-CjC10t6E.mjs";
10
9
  import { i as levelRank } from "./ndjson-CgE_o3Dl.mjs";
11
- import { $n as remoteCliInvocation, In as exitAfterFlush, Jn as readProjectConfig, Rn as runProcessOperation, p as stopOwnedMetroForReset, t as budgetGate } from "./budget-dPGuhNai.mjs";
12
- import { S as withManagedTunnelLock, _ as startTunnelSequence, b as withManagedRemoteWorktreeLock, g as resolveSupervisorTarget, v as stopTunnel, y as terminateChild } from "./workspaces-CSV2Orf4.mjs";
10
+ import { $n as readProjectConfig, Un as runProcessOperation, Vn as exitAfterFlush, ir as remoteCliInvocation, p as stopOwnedMetroForReset, t as budgetGate } from "./budget-k2mZGvvk.mjs";
11
+ import { S as withManagedTunnelLock, _ as startTunnelSequence, b as withManagedRemoteWorktreeLock, g as resolveSupervisorTarget, v as stopTunnel, y as terminateChild } from "./workspaces-g2lhdBXF.mjs";
13
12
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
14
13
  import { n as windowsLauncherArgs } from "./detached-entry-KmieOKgN.mjs";
15
14
  import { appendFileSync, closeSync, mkdirSync, openSync, readFileSync } from "node:fs";
@@ -1,8 +1,7 @@
1
1
  import { D as ownership_claim_exports, S as process_identity_exports, l as WorkspaceProcessCleanupError, t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
- import { d as workspaceDir, m as workspaceLogsDir$1 } from "./paths-DQtTgsBf.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-pUg3_RRA.mjs";
3
3
  import { t as runOperationFile } from "./operation-exec-CUZifp6Z.mjs";
4
- import { d as writeWorkspaceState, o as updateWorkspaceState, r as readWorkspaceState$1, t as clearWorkspaceStateKey } from "./workspace-state-CeBpIZgr.mjs";
5
- import { c as pidExists } from "./metro-Bu8LBfzS.mjs";
4
+ import { c as pidExists } from "./metro-CjC10t6E.mjs";
6
5
  import { readFileSync, readlinkSync, rmSync } from "node:fs";
7
6
  import { hostname } from "node:os";
8
7
  import { join } from "node:path";
@@ -1,6 +1,5 @@
1
1
  import { S as process_identity_exports } from "./exec-VFRpu1iA.mjs";
2
- import { d as workspaceDir, m as workspaceLogsDir$1 } from "./paths-DQtTgsBf.mjs";
3
- import { o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-CeBpIZgr.mjs";
2
+ import { E as workspaceDir, k as workspaceLogsDir$1, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-pUg3_RRA.mjs";
4
3
  import { existsSync } from "node:fs";
5
4
  import { join } from "node:path";
6
5
  import { readMacosRecord } from "@stim-cli/core/state";
@@ -1,7 +1,7 @@
1
- import { P as formatBytes } from "./config-BZhXY15H.mjs";
2
- import { o as formatLongDuration } from "./command-output-DxC0k2rk.mjs";
3
- import { i as findProjectRoot$1 } from "./project-Dz-hWkb-.mjs";
4
- import { i as getSwiftpmCacheUsage, n as swiftpmCacheLines, r as getAgentDeviceUsage, t as agentDeviceLines } from "./agent-device-usage-output-CccomeE0.mjs";
1
+ import { P as formatBytes } from "./config-BktkY_zC.mjs";
2
+ import { o as formatLongDuration } from "./command-output-BF5AR2dL.mjs";
3
+ import { i as findProjectRoot$1 } from "./project-BUu6Is4k.mjs";
4
+ import { i as getSwiftpmCacheUsage, n as swiftpmCacheLines, r as getAgentDeviceUsage, t as agentDeviceLines } from "./agent-device-usage-output-DbXy5tg8.mjs";
5
5
  import { t as readProjectStats } from "./stats-report-n2U5plhk.mjs";
6
6
  import { archivedUsage, readArchives } from "@stim-cli/core/state";
7
7
  import chalk from "chalk";
@@ -1,2 +1,2 @@
1
- import { n as runStatusWatch, r as statusCommand, t as readVolumes } from "./status-DfFp6a76.mjs";
1
+ import { n as runStatusWatch, r as statusCommand, t as readVolumes } from "./status-DQrqodLj.mjs";
2
2
  export { statusCommand as default, readVolumes, runStatusWatch };
@@ -1,4 +1,4 @@
1
- import { P as formatBytes } from "./config-BZhXY15H.mjs";
1
+ import { P as formatBytes } from "./config-BktkY_zC.mjs";
2
2
  import { t as resolveMaintenanceSettings } from "./settings-Djl-mpjX.mjs";
3
3
  import { claimRemoveCommand, readClaimSet } from "@stim-cli/core/ownership-claim";
4
4
  import { maintenanceRunClaims, readMaintenanceState } from "@stim-cli/core/state";
@@ -1,29 +1,28 @@
1
1
  import { S as process_identity_exports, t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
- import { m as workspaceLogsDir$1, p as workspaceLogErrorIndex } from "./paths-DQtTgsBf.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-BZhXY15H.mjs";
4
- import { a as formatElapsed, i as formatDuration, r as clockTime, u as plural } from "./command-output-DxC0k2rk.mjs";
2
+ import { O as workspaceLogErrorIndex, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-pUg3_RRA.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-BktkY_zC.mjs";
4
+ import { a as formatElapsed, i as formatDuration, r as clockTime, u as plural } from "./command-output-BF5AR2dL.mjs";
5
5
  import { s as gitAsync } from "./operation-exec-CUZifp6Z.mjs";
6
- import { r as readWorkspaceState$1 } from "./workspace-state-CeBpIZgr.mjs";
7
- import { Mt as repoRoot, Y as resolveSettings, _t as gitCommonDir, ot as workspaceHiddenSetting, wt as linkedWorktreesOnDisk, yt as gitCommonDirOnDisk } from "./settings-RKwY33wv.mjs";
8
- 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-Dz-hWkb-.mjs";
9
- import { A as listAdbDevices, B as ownedAvdDeviceProfile, W as ownedAvdSerialResolver, ft as POOL_SETTING_REMEDY, vt as parkedMaxSetting, yt as readParked } from "./android-882m4hxX.mjs";
10
- import { c as pidExists, d as resolveProjectMetro, h as isMetroRunning, i as listeningPids, l as processCwd, o as listeningPidsByPort, u as processCwds } from "./metro-Bu8LBfzS.mjs";
6
+ import { Nt as repoRoot, Tt as linkedWorktreesOnDisk, X as resolveSettings, bt as gitCommonDirOnDisk, st as workspaceHiddenSetting, vt as gitCommonDir } from "./settings-CosW5X-S.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-BUu6Is4k.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-DTAcRwBC.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-CjC10t6E.mjs";
11
10
  import { a as parseNdjsonLine } from "./ndjson-CgE_o3Dl.mjs";
12
- import { a as readWebPage, o as readWebRecord, u as webFacts } from "./state-B1ig0Kqy.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-Ck6YXPAO.mjs";
14
- import { F as buildStatusLine, I as bundlingActivity, N as activeBuildState, P as buildReport, R as parseActiveBuild, Z as statsProjectKey$1, bn as hasMetroReverse, br as attributeMachineUsage, h as describeMetroLastStop, j as ACTIVE_BUILD_KEY, o as machineNumber, q as readStats$1, xr as readFootprints, y as metroLastStop } from "./budget-dPGuhNai.mjs";
15
- import { g as resolveSupervisorTarget } from "./workspaces-CSV2Orf4.mjs";
16
- import { a as createDeviceProcessTables, b as leaseIsExpired, h as tailLines, m as readWebActivity, r as createActivityReader, w as parseWorkspaceLeases, x as listLeaseFiles } from "./activity-Dq3ZcdD8.mjs";
17
- import { b as parseSimctlList, f as listAllIosSimsAsync } from "./ios-CVUFFZ6C.mjs";
18
- import { f as probeHostedSession } from "./hosted-client-BBTVe3X6.mjs";
19
- import "./hosted-macos-CXjsUNBR.mjs";
20
- import { i as readSupervisorState } from "./stop-CL1kDHds.mjs";
21
- import { n as maintenanceLines, r as maintenanceStatus } from "./status-Fect2w9R.mjs";
22
- import { f as mergeState, i as createStatusMeasurer, n as workspacePhase, r as applyStatusMeasures } from "./warm-progress-ol0ZypEu.mjs";
23
- import { r as workspaceRecordingEnabled } from "./recordings-CdPwYwvs.mjs";
24
- import { d as readIosDevices, s as isReachable } from "./ios-device-BI38NFFH.mjs";
25
- import { t as triggerMaintenance } from "./trigger-CBMe2YLH.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-XC7F-AMf.mjs";
11
+ import { a as readWebPage, o as readWebRecord, u as webFacts } from "./state-C1i2nMOP.mjs";
12
+ 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-B5vygTiD.mjs";
13
+ import { B as bundlingActivity, Er as readFootprints, F as ACTIVE_BUILD_KEY, H as parseActiveBuild, L as activeBuildState, R as buildReport, Tn as hasMetroReverse, Tr as attributeMachineUsage, Z as readStats$1, h as describeMetroLastStop, o as machineNumber, tt as statsProjectKey$1, y as metroLastStop, z as buildStatusLine } from "./budget-k2mZGvvk.mjs";
14
+ import { g as resolveSupervisorTarget } from "./workspaces-g2lhdBXF.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-Lnb_EoRY.mjs";
16
+ import { b as parseSimctlList, f as listAllIosSimsAsync } from "./ios-WxpDJ5T1.mjs";
17
+ import { f as probeHostedSession } from "./hosted-client-fHO8yqzc.mjs";
18
+ import "./hosted-macos-CPl0OZ9h.mjs";
19
+ import { i as readSupervisorState } from "./stop-DRqQVqDJ.mjs";
20
+ import { n as maintenanceLines, r as maintenanceStatus } from "./status-CRXz-Gtj.mjs";
21
+ import { f as mergeState, i as createStatusMeasurer, n as workspacePhase, r as applyStatusMeasures } from "./warm-progress-DvhTX_eu.mjs";
22
+ import { r as workspaceRecordingEnabled } from "./recordings-BldzVKq0.mjs";
23
+ import { d as readIosDevices, s as isReachable } from "./ios-device-CsyryvpT.mjs";
24
+ import { t as triggerMaintenance } from "./trigger-KVaWWNyn.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-B5wDIH_o.mjs";
27
26
  import { t as watchStdoutReader } from "./stdout-reader-C8yjre1x.mjs";
28
27
  import { createHash, randomUUID } from "node:crypto";
29
28
  import { mkdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
@@ -1,8 +1,8 @@
1
1
  import { t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
- import { d as androidToolPath } from "./android-882m4hxX.mjs";
3
- import { c as pidExists } from "./metro-Bu8LBfzS.mjs";
4
- import { n as easMachineStateRoot } from "./eas-session-ledger-Ck6YXPAO.mjs";
5
- import { b as parseSimctlList } from "./ios-CVUFFZ6C.mjs";
2
+ import { d as androidToolPath } from "./android-DTAcRwBC.mjs";
3
+ import { c as pidExists } from "./metro-CjC10t6E.mjs";
4
+ import { n as easMachineStateRoot } from "./eas-session-ledger-B5vygTiD.mjs";
5
+ import { b as parseSimctlList } from "./ios-WxpDJ5T1.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-DfFp6a76.mjs";
1
+ import { n as runStatusWatch } from "./status-DQrqodLj.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-VFRpu1iA.mjs";
2
- import { C as saveConfig, c as ensureConfig } from "./config-BZhXY15H.mjs";
2
+ import { C as saveConfig, c as ensureConfig } from "./config-BktkY_zC.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 { g as resolveSupervisorTarget } from "./workspaces-CSV2Orf4.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-CL1kDHds.mjs";
1
+ import { g as resolveSupervisorTarget } from "./workspaces-g2lhdBXF.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-DRqQVqDJ.mjs";
3
3
  export { clearCollectorState, clearSupervisorState, stopCommand as default, readCollectorState, readSupervisorState, resolveCollectorTargets, resolveSupervisorTarget, runStop, stopWorkspaceNow };