stim 1.20.0 → 1.20.2

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 (158) hide show
  1. package/README.md +6 -3
  2. package/dist/{activity-BrGh9EAI.mjs → activity-BSV745Kz.mjs} +4 -4
  3. package/dist/{agent-device-usage-output-DVyv_hWj.mjs → agent-device-usage-output-Dzgv6lgR.mjs} +5 -6
  4. package/dist/{android-Brx6EKvJ.mjs → android-DCKZrNvV.mjs} +37 -38
  5. package/dist/{android-0vv-OruW.mjs → android-Dlzxshgp.mjs} +5 -5
  6. package/dist/{android-CK3fpEyZ.mjs → android-HqP1_vB_.mjs} +3 -3
  7. package/dist/{android-BsYNR81W.mjs → android-Mz_Inn3w.mjs} +12 -12
  8. package/dist/{android-cas-DCAuXryb.mjs → android-cas-Bl-cLJBk.mjs} +4 -4
  9. package/dist/android-cas-compiler.mjs +1 -1
  10. package/dist/{api-zuX3ynYN.mjs → api-qvOzWyfO.mjs} +1 -1
  11. package/dist/api-run.mjs +19 -21
  12. package/dist/api.mjs +1 -1
  13. package/dist/{app-install-0LgaQRT7.mjs → app-install-BIKtMfPq.mjs} +71 -48
  14. package/dist/{artifact-DClXJNWx.mjs → artifact-D3czlUvT.mjs} +13 -13
  15. package/dist/{artifact-CnC0mfov.mjs → artifact-HSwkIWEQ.mjs} +12 -12
  16. package/dist/{browser-web-CzBmhmgs.mjs → browser-web-CA-F1GQo.mjs} +18 -18
  17. package/dist/{budget-BONq9vXY.mjs → budget-f7516Zk0.mjs} +23 -26
  18. package/dist/{build-BixRI6sB.mjs → build-DYDbfkk5.mjs} +28 -33
  19. package/dist/{build-plan-CP0tckNU.mjs → build-plan-B7SZsc2N.mjs} +17 -17
  20. package/dist/{cache-manifest-qA3dT2x2.mjs → cache-manifest-XH-fvDUj.mjs} +10 -5
  21. package/dist/cache-manifest.mjs +1 -1
  22. package/dist/cancellation-C_22VQTH.mjs +24 -0
  23. package/dist/{ccache-CjHQ5F8g.mjs → ccache-zdKiYQ3E.mjs} +7 -7
  24. package/dist/{chrome-Dp2lMLBe.mjs → chrome-BnzZMqsR.mjs} +1 -1
  25. package/dist/{cli-B2R8wH1F.mjs → cli-CLP3diBm.mjs} +20 -20
  26. package/dist/cli.mjs +1 -1
  27. package/dist/{client-BLy1Pw2V.mjs → client-qQAaXSUs.mjs} +21 -29
  28. package/dist/collector-run.d.mts +7 -6
  29. package/dist/collector-run.mjs +6 -7
  30. package/dist/{command-output-BjPN99ZB.mjs → command-output-BTy8hZ0F.mjs} +1 -1
  31. package/dist/{config-D0LhTY3S.mjs → config-BYDxlMY3.mjs} +43 -5
  32. package/dist/{created-devices-HU_DAb_Q.mjs → created-devices-Dzd5C2LF.mjs} +2 -2
  33. package/dist/{dependency-state-B2m8eqsS.mjs → dependency-state-DG0p31-y.mjs} +2 -2
  34. package/dist/{detached-entry-BXq4fIl-.mjs → detached-entry-B9C_zeQC.mjs} +1 -1
  35. package/dist/{dev-client-ClATaJoH.mjs → dev-client-DAWVIGBu.mjs} +2 -2
  36. package/dist/{device-DVCwAFlX.mjs → device-BECOiufl.mjs} +13 -14
  37. package/dist/{device-B7lsC0K1.mjs → device-DuiPJQSn.mjs} +8 -8
  38. package/dist/{device-capacity-Ca_ke1LE.mjs → device-capacity-CBUAcRyQ.mjs} +10 -11
  39. package/dist/device-host-worker.mjs +16 -17
  40. package/dist/{device-ios-CRUqPxKw.mjs → device-ios-COSi6oS1.mjs} +12 -15
  41. package/dist/{device-lease-DHOBXGgS.mjs → device-lease-BX1sJQ2E.mjs} +15 -18
  42. package/dist/{device-lease-run-CvDeHTkG.mjs → device-lease-run-Cw2M4z51.mjs} +4 -4
  43. package/dist/{device-pool-L2-5GxMy.mjs → device-pool-Bf-pOhSw.mjs} +3 -3
  44. package/dist/{device-remote-Bmg42063.mjs → device-remote-xRT0Vmo9.mjs} +14 -14
  45. package/dist/{doctor-C2MSuMMg.mjs → doctor-CB8oZKCk.mjs} +13 -13
  46. package/dist/{doctor-DPAqhVCK.mjs → doctor-kfMBnUw6.mjs} +78 -69
  47. package/dist/{doctor-watchman-CB4NnVZm.mjs → doctor-watchman-BRyV2adA.mjs} +9 -10
  48. package/dist/{eas-build-Dw_ec2Km.mjs → eas-build-JyfqyHfC.mjs} +5 -5
  49. package/dist/{eas-session-ledger-DZlC-Fq3.mjs → eas-session-ledger-Cm0Gwq2F.mjs} +6 -4
  50. package/dist/{error-diagnostics-Du7I_GuY.mjs → error-diagnostics-BR677IDM.mjs} +10 -10
  51. package/dist/{exec-B81Qodjn.mjs → exec-DqKo9GKJ.mjs} +22 -8
  52. package/dist/{gc-PWp34zGb.mjs → gc-qWOMdnER.mjs} +75 -24
  53. package/dist/git-DDfFzkMm.mjs +45 -0
  54. package/dist/{gradle-C2OEKCCI.mjs → gradle-DSrXb6lG.mjs} +6 -6
  55. package/dist/{guide-Dai9lphv.mjs → guide-G9cAbVAc.mjs} +81 -178
  56. package/dist/{hosted-android-DQ-Agsd8.mjs → hosted-android-C3MHGld1.mjs} +3 -3
  57. package/dist/{hosted-client-Io01s5By.mjs → hosted-client-ZEKpS9vw.mjs} +19 -11
  58. package/dist/{hosted-ios-DIxFnYp-.mjs → hosted-ios-l-o3iM9J.mjs} +1 -1
  59. package/dist/{hosted-logs-DP-ABU_M.mjs → hosted-logs-EzQM7-3Z.mjs} +7 -7
  60. package/dist/{hosted-macos-Aziw9T_9.mjs → hosted-macos-BACVAVqE.mjs} +10 -8
  61. package/dist/{hosted-native-BdAQi21M.mjs → hosted-native-A4s1QPXe.mjs} +13 -11
  62. package/dist/{idle-shutdown-DdMqoSUB.mjs → idle-shutdown-DtxhPTKe.mjs} +7 -7
  63. package/dist/{ios-BZ9dg2Fr.mjs → ios-BwVCF7oA.mjs} +8 -8
  64. package/dist/{ios-CZuv6gRv.mjs → ios-Ce7bc7br.mjs} +29 -29
  65. package/dist/{ios-CXLIUxXJ.mjs → ios-RkW4pnQf.mjs} +21 -17
  66. package/dist/{ios-device-B1B14xND.mjs → ios-device-B5veSDDQ.mjs} +1 -1
  67. package/dist/{ios-device-BreZOpM0.mjs → ios-device-D7pi2Sca.mjs} +14 -14
  68. package/dist/{ios-VGvNdsv2.mjs → ios-nOLJGVdy.mjs} +1 -1
  69. package/dist/{ios-project-B9drt_aY.mjs → ios-project-K9hY_Jab.mjs} +8 -8
  70. package/dist/{ios-state-CjrL2qv-.mjs → ios-state-CBLe1xYw.mjs} +1 -1
  71. package/dist/{js-swap-C8icNYIY.mjs → js-swap-Bb3nsS07.mjs} +13 -13
  72. package/dist/{launch-YrbqaIFj.mjs → launch-C3qJ6Agb.mjs} +46 -45
  73. package/dist/{launch-DxH0THLP.mjs → launch-F4sOqAhB.mjs} +21 -21
  74. package/dist/{launch-verify-BzRdbuO1.mjs → launch-verify-B6Q8hZP-.mjs} +11 -11
  75. package/dist/{logs-DHaRNfg7.mjs → logs-BGrEUaEs.mjs} +10 -11
  76. package/dist/{macos-V_3Ui7g4.mjs → macos-Ch5VJmcS.mjs} +40 -24
  77. package/dist/macos-D7uDvO-z.mjs +2 -0
  78. package/dist/macos-run.mjs +1 -1
  79. package/dist/maintenance-run.mjs +7 -7
  80. package/dist/{metro-D_j9sN-B.mjs → metro-DnCEjCxs.mjs} +8 -9
  81. package/dist/{metro-gateway-BBJldOdi.mjs → metro-gateway-CX9Xlkq2.mjs} +3 -3
  82. package/dist/{miss-reason-BPAzZS0r.mjs → miss-reason-mKzZ4VvN.mjs} +3 -3
  83. package/dist/{named-ports-C2lvoPsb.mjs → named-ports-4WopRPg-.mjs} +4 -5
  84. package/dist/{native-android-lHzaew7r.mjs → native-android-D5qc3-_v.mjs} +10 -10
  85. package/dist/{native-gradle-inputs-BQnIdAlL.mjs → native-gradle-inputs-BsLRrl7u.mjs} +3 -10
  86. package/dist/{native-runtime-BRmWL7ru.mjs → native-runtime-k8dTIrbK.mjs} +7 -8
  87. package/dist/{native-xcode-inputs-eutS19jU.mjs → native-xcode-inputs-CykopJdM.mjs} +7 -9
  88. package/dist/{native-xcode-ios-DP3cHLwu.mjs → native-xcode-ios-Bbf30Gm0.mjs} +15 -15
  89. package/dist/offload-worker.mjs +34 -38
  90. package/dist/{ownership-DXzMMSx6.mjs → ownership-DCtw_2IA.mjs} +3 -3
  91. package/dist/{page-Bv9s2KwY.mjs → page-DRHy329N.mjs} +1 -1
  92. package/dist/{placement-log-reFbjqEr.mjs → placement-log-MOfPVgaM.mjs} +1 -1
  93. package/dist/{plan-BDk2AeY_.mjs → plan-C4TjdPsR.mjs} +10 -10
  94. package/dist/{plan-placement-D_YYlE6N.mjs → plan-placement-V0TdzYXp.mjs} +3 -3
  95. package/dist/{ports-jzvAJXXL.mjs → ports-DdSUicVo.mjs} +3 -3
  96. package/dist/{prebuild-Bw44QxVh.mjs → prebuild-DYbucPXy.mjs} +7 -8
  97. package/dist/{preview-BaBJ72Al.mjs → preview-78a9kR_-.mjs} +31 -24
  98. package/dist/{project-B8_duAzW.mjs → project-_phNIJfs.mjs} +110 -47
  99. package/dist/{pull-request-vOhLNmIb.mjs → pull-request-CQ8sPbZa.mjs} +5 -18
  100. package/dist/pull-requests.mjs +1 -1
  101. package/dist/{react-native-android-chm1DMlA.mjs → react-native-android-CM1XRDwv.mjs} +34 -30
  102. package/dist/{react-native-build-oAw6gQeW.mjs → react-native-build-CtCccJtb.mjs} +6 -6
  103. package/dist/{react-native-doctor-DYXoh-6I.mjs → react-native-doctor-CfRnFfjs.mjs} +5 -5
  104. package/dist/{react-native-ios-SCTK_CT5.mjs → react-native-ios-Dhq_eiYQ.mjs} +14 -14
  105. package/dist/{recordings-Bk-VivUV.mjs → recordings-D0d5aQt0.mjs} +1 -1
  106. package/dist/{reload-D34GkY78.mjs → reload-C8JhxjSh.mjs} +17 -17
  107. package/dist/{remote-BU9UyhCJ.mjs → remote-BiR6aYjy.mjs} +7 -7
  108. package/dist/{remote-cache-Bsts6f6Y.mjs → remote-cache-OyOyVIS3.mjs} +4 -4
  109. package/dist/{result-BDoRk1k3.mjs → result-CaJg5Iat.mjs} +8 -8
  110. package/dist/{run-qvff78hv.mjs → run-BtPgpKks.mjs} +3 -3
  111. package/dist/{server-bare-dWjAarki.mjs → server-bare-R2m_gsH8.mjs} +3 -3
  112. package/dist/{server-command-7XIKlWtO.mjs → server-command-CTtCkmcQ.mjs} +5 -5
  113. package/dist/server-expo-Bigriskl.mjs +2 -0
  114. package/dist/{server-expo-CsYu2aKL.mjs → server-expo-DsguMGUF.mjs} +5 -10
  115. package/dist/{settings-Bbztm4oV.mjs → settings-B717odTD.mjs} +74 -115
  116. package/dist/{settings-CT3E71-i.mjs → settings-BORNaaCO.mjs} +5 -5
  117. package/dist/settings.schema.json +1 -1
  118. package/dist/{simslim-ChMfe8rg.mjs → simslim-CCr3rE-A.mjs} +2 -3
  119. package/dist/{slot-launch-B9hn96wd.mjs → slot-launch-DPt0m9Nd.mjs} +6 -6
  120. package/dist/{spawn-claims-Kqiifsk2.mjs → spawn-claims-DVS5RkMS.mjs} +1 -1
  121. package/dist/{stage-BNKKdDNc.mjs → stage-KNTQopqv.mjs} +9 -9
  122. package/dist/{start-CdvcTaXr.mjs → start-BWqzODpb.mjs} +19 -20
  123. package/dist/{start-CbQCSnXQ.mjs → start-TXeMmmO2.mjs} +1 -1
  124. package/dist/{state-Boo0IMJq.mjs → state-CG_OFoaA.mjs} +2 -2
  125. package/dist/{state-DI84A-uu.mjs → state-D1Icyjlu.mjs} +8 -7
  126. package/dist/{stats-BIIDrjA8.mjs → stats-BoY5sEPU.mjs} +5 -5
  127. package/dist/{status-BDGHwkCs.mjs → status-BTA7kKiQ.mjs} +1 -1
  128. package/dist/{status-DARMkc9q.mjs → status-WgFbkRzj.mjs} +30 -47
  129. package/dist/{status-watch-DvmI3SmN.mjs → status-watch-C23ILtf9.mjs} +4 -4
  130. package/dist/{stim-desktop-8GQX2OV8.mjs → stim-desktop-BzBN2Em2.mjs} +1 -1
  131. package/dist/{stop-iNemHsJC.mjs → stop-BNmBMi1F.mjs} +18 -19
  132. package/dist/{stop-WQPQHLuy.mjs → stop-DPEhunlw.mjs} +6 -6
  133. package/dist/{stop-CCZS-C9m.mjs → stop-DR6VoDIk.mjs} +2 -2
  134. package/dist/supervisor-run.mjs +16 -17
  135. package/dist/{support-DCco5fut.mjs → support-CwjbFs9H.mjs} +9 -9
  136. package/dist/{support-CnE_SIjt.mjs → support-DMTqj3Hm.mjs} +6 -6
  137. package/dist/{swiftpm-macos-afeNUExW.mjs → swiftpm-macos-DRNVJWlb.mjs} +9 -9
  138. package/dist/{tailnet-CoJUb2tB.mjs → tailnet-Dh-qiYzG.mjs} +5 -5
  139. package/dist/toolchain-BFkAcstd.mjs +2 -0
  140. package/dist/{toolchain-DqyDXs30.mjs → toolchain-DxSsNssu.mjs} +10 -10
  141. package/dist/trigger-9_USgmxz.mjs +2 -0
  142. package/dist/{trigger-C0MWBi8O.mjs → trigger-CigAYjeL.mjs} +2 -2
  143. package/dist/{warm-progress-C3ASD6z5.mjs → warm-progress-BuY-Fvfn.mjs} +43 -61
  144. package/dist/{watchman-CQl51YZu.mjs → watchman-CPQFZLXY.mjs} +6 -6
  145. package/dist/{web-B3eldHFH.mjs → web-BDBMxDpx.mjs} +9 -9
  146. package/dist/web-Dq-i3wzJ.mjs +2 -0
  147. package/dist/web-run.mjs +14 -14
  148. package/dist/{workspace-state-CSIFuuDa.mjs → workspace-state-DJt_MMvf.mjs} +16 -6
  149. package/dist/{workspaces-D2xSHBDY.mjs → workspaces-C36s2jb9.mjs} +15 -16
  150. package/dist/{worktree-BxDqaTev.mjs → worktree-CgvJYJ-Q.mjs} +96 -89
  151. package/dist/{worktree-q7_OZNY0.mjs → worktree-DpLdCHga.mjs} +1 -1
  152. package/package.json +6 -7
  153. package/dist/macos-C0iljhsN.mjs +0 -2
  154. package/dist/process-identity-Biv3arCO.mjs +0 -40
  155. package/dist/server-expo-DV43vep4.mjs +0 -2
  156. package/dist/toolchain-BIupIro1.mjs +0 -2
  157. package/dist/trigger-SHLOWJ4O.mjs +0 -2
  158. package/dist/web-BLXpOe6b.mjs +0 -2
@@ -1,9 +1,10 @@
1
- import { n as ownership_claim_exports } from "./process-identity-Biv3arCO.mjs";
2
- import { n as debugLog, t as getExecutor } from "./exec-B81Qodjn.mjs";
3
- import { bt as linkedWorktreesOnDisk, ht as gitCommonDirOnDisk } from "./settings-Bbztm4oV.mjs";
4
- import { D as withDirLock, a as updateWorkspaceState, d as discoverAgentSessions, l as agentKey, p as ensureWorkspaceStorage, u as attributeAgentSessions, x as workspaceDir } from "./workspace-state-CSIFuuDa.mjs";
5
- import { I as ownedAvdDirectory } from "./android-BsYNR81W.mjs";
6
- import { o as pullRequestLookups } from "./pull-request-vOhLNmIb.mjs";
1
+ import { j as ownership_claim_exports } from "./config-BYDxlMY3.mjs";
2
+ import { n as isTimeoutError, r as debugLog, t as getExecutor } from "./exec-DqKo9GKJ.mjs";
3
+ import { n as gitAsync, r as gitQuiet, t as git } from "./git-DDfFzkMm.mjs";
4
+ import { gt as gitCommonDirOnDisk, xt as linkedWorktreesOnDisk } from "./settings-B717odTD.mjs";
5
+ import { D as withDirLock, a as updateWorkspaceState, d as discoverAgentSessions, l as agentKey, p as ensureWorkspaceStorage, u as attributeAgentSessions, x as workspaceDir } from "./workspace-state-DJt_MMvf.mjs";
6
+ import { I as ownedAvdDirectory } from "./android-Mz_Inn3w.mjs";
7
+ import { o as pullRequestLookups } from "./pull-request-CQ8sPbZa.mjs";
7
8
  import { existsSync, mkdirSync, readdirSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
8
9
  import { basename, dirname, join, sep } from "node:path";
9
10
  import { ENDED_AGENT_RETENTION_MS, READY_PHASE_MS, WARM_KEY, agentSessionsCacheFile, diskUsageCacheFile, diskUsageFailureFile, diskUsageWalkClaims, pullRequestCacheFile, readAgentSessionsCache, readDiskUsage, readDiskUsageFailure, readEndedAgentSessions, readPullRequestCache, readWarmRecord, readWorkspaceAgent, readWorkspaceState, workspaceEndedAgentsFile, workspaceEndedAgentsLock } from "@stim-cli/core/state";
@@ -23,9 +24,7 @@ function failure(error) {
23
24
  return text.split("\n")[0] ?? text;
24
25
  }
25
26
  function fetchedRecently(repo, now) {
26
- const path = getExecutor().runFileQuiet("git", [
27
- "-C",
28
- repo,
27
+ const path = gitQuiet(repo, [
29
28
  "rev-parse",
30
29
  "--path-format=absolute",
31
30
  "--git-path",
@@ -42,10 +41,7 @@ function fetchedRecently(repo, now) {
42
41
  * prompting for credentials. It skips the fetch when the checkout fetched anything in the last 10 minutes.
43
42
  */
44
43
  function fetchDefaultBranch(repo, now = Date.now()) {
45
- const exec = getExecutor();
46
- const ref = exec.runFileQuiet("git", [
47
- "-C",
48
- repo,
44
+ const ref = gitQuiet(repo, [
49
45
  "symbolic-ref",
50
46
  "--quiet",
51
47
  "refs/remotes/origin/HEAD"
@@ -57,9 +53,7 @@ function fetchDefaultBranch(repo, now = Date.now()) {
57
53
  name: `origin/${branch}`
58
54
  };
59
55
  try {
60
- exec.runFile("git", [
61
- "-C",
62
- repo,
56
+ git(repo, [
63
57
  "fetch",
64
58
  "--quiet",
65
59
  "--no-tags",
@@ -67,6 +61,7 @@ function fetchDefaultBranch(repo, now = Date.now()) {
67
61
  "origin",
68
62
  `+refs/heads/${branch}:${ref}`
69
63
  ], {
64
+ write: true,
70
65
  timeoutMs: FETCH_TIMEOUT_MS,
71
66
  env: { GIT_TERMINAL_PROMPT: "0" }
72
67
  });
@@ -85,42 +80,33 @@ function notMerged(detail) {
85
80
  detail
86
81
  };
87
82
  }
88
- function currentBranch(path) {
89
- const ref = getExecutor().runFileQuiet("git", [
90
- "-C",
91
- path,
83
+ function currentBranch(probe) {
84
+ const ref = probe([
92
85
  "symbolic-ref",
93
86
  "--quiet",
94
87
  "HEAD"
95
88
  ])?.trim();
96
89
  return ref?.startsWith("refs/heads/") ? ref : null;
97
90
  }
98
- function upstreamGone(path, branch) {
91
+ function upstreamGone(probe, branch) {
99
92
  if (!branch) return false;
100
- const [upstream, state] = (getExecutor().runFileQuiet("git", [
101
- "-C",
102
- path,
93
+ const [upstream, state] = (probe([
103
94
  "for-each-ref",
104
95
  "--format=%(upstream)%00%(upstream:track)",
105
96
  branch
106
97
  ]) ?? "").trim().split("\0");
107
98
  return Boolean(upstream) && state === "[gone]";
108
99
  }
109
- function committedOn(path, branch, head) {
100
+ function committedOn(probe, branch, head) {
110
101
  if (!branch) return false;
111
- const exec = getExecutor();
112
- return (exec.runFileQuiet("git", [
113
- "-C",
114
- path,
102
+ return (probe([
115
103
  "reflog",
116
104
  "show",
117
105
  "--format=%H %gs",
118
106
  branch
119
107
  ]) ?? "").split("\n").some((entry) => {
120
108
  const [sha = "", ...subject] = entry.split(" ");
121
- return /^(commit|cherry-pick|rebase|revert)\b/.test(subject.join(" ")) && exec.runFileQuiet("git", [
122
- "-C",
123
- path,
109
+ return /^(commit|cherry-pick|rebase|revert)\b/.test(subject.join(" ")) && probe([
124
110
  "merge-base",
125
111
  "--is-ancestor",
126
112
  sha,
@@ -143,32 +129,30 @@ function committedOn(path, branch, head) {
143
129
  * upstream branch was deleted: its commits exist only locally, but their change is on the default branch.
144
130
  */
145
131
  function mergeState(path, { ref, name }, { timeoutMs = GIT_TIMEOUT_MS$1, maxCommits = MAX_MERGE_STATE_COMMITS } = {}) {
146
- const git = (args, input) => getExecutor().runFile("git", [
147
- "--literal-pathspecs",
148
- "-C",
149
- path,
150
- ...args
151
- ], {
132
+ const git$1 = (args, input) => git(path, ["--literal-pathspecs", ...args], {
152
133
  timeoutMs,
153
134
  input
154
135
  });
155
- const patch = (args, input) => getExecutor().runFile("git", [
156
- "--literal-pathspecs",
157
- "-C",
158
- path,
159
- ...args
160
- ], {
136
+ const patch = (args, input) => git(path, ["--literal-pathspecs", ...args], {
161
137
  timeoutMs,
162
138
  input,
163
139
  untrimmed: true
164
140
  });
165
- const patchIdCommits = (text) => new Map(text ? git(["patch-id", "--verbatim"], text).split("\n").flatMap((line) => {
141
+ const probe = (args) => {
142
+ try {
143
+ return git(path, args, { timeoutMs });
144
+ } catch (error) {
145
+ if (isTimeoutError(error)) throw error;
146
+ return null;
147
+ }
148
+ };
149
+ const patchIdCommits = (text) => new Map(text ? git$1(["patch-id", "--verbatim"], text).split("\n").flatMap((line) => {
166
150
  const [id, commit] = line.split(" ");
167
151
  return id && commit ? [[id, commit]] : [];
168
152
  }) : []);
169
153
  const patchIds = (text) => [...patchIdCommits(text).keys()];
170
154
  const committedAt = (commits) => {
171
- const times = commits.length ? git([
155
+ const times = commits.length ? git$1([
172
156
  "log",
173
157
  "--no-walk",
174
158
  "--stdin",
@@ -180,30 +164,30 @@ function mergeState(path, { ref, name }, { timeoutMs = GIT_TIMEOUT_MS$1, maxComm
180
164
  const diffOptions = ["--no-color", "--no-ext-diff"];
181
165
  const noOwnCommits = notMerged(`no commits of its own beyond ${name}`);
182
166
  try {
183
- const head = git([
167
+ const head = git$1([
184
168
  "rev-parse",
185
169
  "--verify",
186
170
  "HEAD^{commit}"
187
171
  ]);
188
- const base = git([
172
+ const base = git$1([
189
173
  "merge-base",
190
174
  head,
191
175
  ref
192
176
  ]);
193
- const branch = currentBranch(path);
177
+ const branch = currentBranch(probe);
194
178
  if (base === head) {
195
- if (git(["rev-parse", ref]) === head || git([
179
+ if (git$1(["rev-parse", ref]) === head || git$1([
196
180
  "rev-list",
197
181
  "--first-parent",
198
182
  "--parents",
199
183
  `${head}..${ref}`
200
- ]).split("\n").some((line) => line.split(" ")[1] === head) || !committedOn(path, branch, head)) return noOwnCommits;
201
- const descendants = new Set(git([
184
+ ]).split("\n").some((line) => line.split(" ")[1] === head) || !committedOn(probe, branch, head)) return noOwnCommits;
185
+ const descendants = new Set(git$1([
202
186
  "rev-list",
203
187
  "--ancestry-path",
204
188
  `${head}..${ref}`
205
189
  ]).split("\n"));
206
- const landed = git([
190
+ const landed = git$1([
207
191
  "rev-list",
208
192
  "--first-parent",
209
193
  "--reverse",
@@ -218,7 +202,7 @@ function mergeState(path, { ref, name }, { timeoutMs = GIT_TIMEOUT_MS$1, maxComm
218
202
  mergedAt: committedAt([landed])
219
203
  };
220
204
  }
221
- const aheadCount = Number(git([
205
+ const aheadCount = Number(git$1([
222
206
  "rev-list",
223
207
  "--count",
224
208
  `${base}..${head}`
@@ -228,7 +212,7 @@ function mergeState(path, { ref, name }, { timeoutMs = GIT_TIMEOUT_MS$1, maxComm
228
212
  unknown: true,
229
213
  detail: `merge state unknown: ${aheadCount} commits of its own ahead of the merge base with ${name} exceeds the ${maxCommits}-commit limit`
230
214
  };
231
- const files = git([
215
+ const files = git$1([
232
216
  "diff",
233
217
  "--name-only",
234
218
  "--no-renames",
@@ -250,7 +234,7 @@ function mergeState(path, { ref, name }, { timeoutMs = GIT_TIMEOUT_MS$1, maxComm
250
234
  merged: true,
251
235
  into: name,
252
236
  head,
253
- coversUnpushed: upstreamGone(path, branch),
237
+ coversUnpushed: upstreamGone(probe, branch),
254
238
  mergedAt: committedAt(ids.map((id) => upstream.get(id)))
255
239
  });
256
240
  const squash = patchIds(patch([
@@ -260,7 +244,7 @@ function mergeState(path, { ref, name }, { timeoutMs = GIT_TIMEOUT_MS$1, maxComm
260
244
  head
261
245
  ]));
262
246
  if (squash.length === 1 && upstream.has(squash[0])) return patchEquivalent(squash);
263
- if (!git([
247
+ if (!git$1([
264
248
  "rev-list",
265
249
  "--merges",
266
250
  `${base}..${head}`
@@ -270,7 +254,7 @@ function mergeState(path, { ref, name }, { timeoutMs = GIT_TIMEOUT_MS$1, maxComm
270
254
  }
271
255
  return notMerged(`not merged into ${name}`);
272
256
  } catch (error) {
273
- const timedOut = error?.code === "ETIMEDOUT" ? { timedOut: true } : {};
257
+ const timedOut = isTimeoutError(error) ? { timedOut: true } : {};
274
258
  return {
275
259
  merged: false,
276
260
  unknown: true,
@@ -611,9 +595,7 @@ function createStatusMeasurer({ updated, now = Date.now }) {
611
595
  }
612
596
  async function branchHead(repository, branch) {
613
597
  try {
614
- return (await exec.runFileAsync("git", [
615
- "-C",
616
- repository,
598
+ return (await gitAsync(repository, [
617
599
  "rev-parse",
618
600
  "--verify",
619
601
  `refs/heads/${branch}`
@@ -1,9 +1,9 @@
1
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
2
- import { H as projectDeviceSlots, R as deviceSlotKey } from "./config-D0LhTY3S.mjs";
3
- import { y as workspaceAgentDeviceDir } from "./workspace-state-CSIFuuDa.mjs";
4
- import { a as formatElapsed, o as formatLongDuration, r as clockTime, u as plural } from "./command-output-BjPN99ZB.mjs";
5
- import { n as isInsideProject } from "./metro-D_j9sN-B.mjs";
6
- import { r as cdpEndpoint } from "./state-DI84A-uu.mjs";
1
+ import { B as deviceSlotKey, W as projectDeviceSlots } from "./config-BYDxlMY3.mjs";
2
+ import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
3
+ import { y as workspaceAgentDeviceDir } from "./workspace-state-DJt_MMvf.mjs";
4
+ import { a as formatElapsed, o as formatLongDuration, r as clockTime, u as plural } from "./command-output-BTy8hZ0F.mjs";
5
+ import { n as isInsideProject } from "./metro-DnCEjCxs.mjs";
6
+ import { r as cdpEndpoint } from "./state-D1Icyjlu.mjs";
7
7
  import { basename, sep } from "path";
8
8
  import { ACTIVITY_RECENCY_BASES } from "@stim-cli/core/state";
9
9
  //#region src/status.ts
@@ -1,12 +1,12 @@
1
- import { E as upsertProject, p as getProject } from "./config-D0LhTY3S.mjs";
2
- import { K as resolveProjectSettings, Q as settingShapeErrors, a as SETTING_SHAPE_REMEDY } from "./settings-Bbztm4oV.mjs";
3
- import { i as recordWorkspaceUse, w as workspaceLogsDir } from "./workspace-state-CSIFuuDa.mjs";
4
- import { f as refuseNoProject, l as phaseLine } from "./command-output-BjPN99ZB.mjs";
5
- import { d as projectRegistry, n as findCommandWorkspace } from "./project-B8_duAzW.mjs";
6
- import { a as workspaceLinks, i as workspaceLinkLine } from "./stim-desktop-8GQX2OV8.mjs";
7
- import { o as readWebRecord, r as cdpEndpoint } from "./state-DI84A-uu.mjs";
8
- import { n as ensureWorkspaceStorageSafely } from "./native-runtime-BRmWL7ru.mjs";
9
- import { t as liveWebRecord } from "./page-Bv9s2KwY.mjs";
1
+ import { E as upsertProject, p as getProject } from "./config-BYDxlMY3.mjs";
2
+ import { K as resolveProjectSettings, Q as settingShapeErrors, a as SETTING_SHAPE_REMEDY } from "./settings-B717odTD.mjs";
3
+ import { i as recordWorkspaceUse, w as workspaceLogsDir } from "./workspace-state-DJt_MMvf.mjs";
4
+ import { f as refuseNoProject, l as phaseLine } from "./command-output-BTy8hZ0F.mjs";
5
+ import { d as projectRegistry, n as findCommandWorkspace } from "./project-_phNIJfs.mjs";
6
+ import { a as workspaceLinks, i as workspaceLinkLine } from "./stim-desktop-BzBN2Em2.mjs";
7
+ import { o as readWebRecord, r as cdpEndpoint } from "./state-D1Icyjlu.mjs";
8
+ import { n as ensureWorkspaceStorageSafely } from "./native-runtime-k8dTIrbK.mjs";
9
+ import { t as liveWebRecord } from "./page-DRHy329N.mjs";
10
10
  import chalk from "chalk";
11
11
  //#region src/commands/web.ts
12
12
  const printNote = (line) => console.error(line);
@@ -0,0 +1,2 @@
1
+ import { n as webCommand, t as runWeb } from "./web-BDBMxDpx.mjs";
2
+ export { webCommand as default, runWeb };
package/dist/web-run.mjs CHANGED
@@ -1,13 +1,14 @@
1
- import { n as ownership_claim_exports, t as process_identity_exports } from "./process-identity-Biv3arCO.mjs";
2
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
3
- import { r as recordCreatedDevice } from "./created-devices-HU_DAb_Q.mjs";
4
- import { d as signalProcessTree } from "./metro-D_j9sN-B.mjs";
1
+ import { j as ownership_claim_exports, k as process_identity_exports } from "./config-BYDxlMY3.mjs";
2
+ import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
3
+ import { r as recordCreatedDevice } from "./created-devices-Dzd5C2LF.mjs";
4
+ import { d as signalProcessTree } from "./metro-DnCEjCxs.mjs";
5
+ import { t as cancellableSleep } from "./cancellation-C_22VQTH.mjs";
5
6
  import { r as createNdjsonWriter } from "./ndjson-GOnbyvso.mjs";
6
- import { t as relaunchWithLogFile } from "./detached-entry-BXq4fIl-.mjs";
7
- import { _ as removeSingletonFiles, c as webClaimRoot, d as webLogFile, f as webProfileDir, g as liveProfileHolder, h as chromeProcessState, i as clearWebRecord, l as webDir, m as writeWebRecord, n as browserLogFile, s as updateWebRecord } from "./state-DI84A-uu.mjs";
8
- import { c as probeWebDrivers } from "./activity-BrGh9EAI.mjs";
7
+ import { t as relaunchWithLogFile } from "./detached-entry-B9C_zeQC.mjs";
8
+ import { _ as removeSingletonFiles, c as webClaimRoot, d as webLogFile, f as webProfileDir, g as liveProfileHolder, h as chromeProcessState, i as clearWebRecord, l as webDir, m as writeWebRecord, n as browserLogFile, s as updateWebRecord } from "./state-D1Icyjlu.mjs";
9
+ import { c as probeWebDrivers } from "./activity-BSV745Kz.mjs";
9
10
  import { t as connectOwnedBrowser } from "./cdp-Dq_ypAlJ.mjs";
10
- import { i as chromeArgs, n as DESKTOP_PAGE, r as PHONE_SCREEN } from "./chrome-Dp2lMLBe.mjs";
11
+ import { i as chromeArgs, n as DESKTOP_PAGE, r as PHONE_SCREEN } from "./chrome-BnzZMqsR.mjs";
11
12
  import { existsSync, mkdirSync, openSync, realpathSync } from "node:fs";
12
13
  import { isAbsolute, resolve } from "node:path";
13
14
  import { WEB_VIEWPORTS } from "@stim-cli/core/state";
@@ -385,7 +386,6 @@ const DEVTOOLS_WAIT_MS = 2e4;
385
386
  const ROUTE_THROTTLE_MS = 250;
386
387
  const CHROME_EXIT_WAIT_MS = 5e3;
387
388
  const POLL_MS = 50;
388
- const sleep = (ms) => new Promise((done) => setTimeout(done, ms));
389
389
  function describe(error) {
390
390
  return error instanceof Error ? error.message : String(error);
391
391
  }
@@ -480,17 +480,17 @@ async function runWebSupervisor(options, { onExit = (code) => process.exit(code)
480
480
  const stopChrome = async () => {
481
481
  stopping = true;
482
482
  try {
483
- await Promise.race([cdp?.send("Browser.close"), sleep(3e3)]);
483
+ await Promise.race([cdp?.send("Browser.close"), cancellableSleep(3e3)]);
484
484
  } catch {}
485
485
  const deadline = Date.now() + CHROME_EXIT_WAIT_MS;
486
- while (!chromeGone() && Date.now() < deadline) await sleep(POLL_MS);
486
+ while (!chromeGone() && Date.now() < deadline) await cancellableSleep(POLL_MS);
487
487
  const state = chromeRecord ? chromeProcessState(chromeRecord, profile) : "gone";
488
488
  if (chromeRecord && (state === "running" || state === "lingering")) {
489
489
  try {
490
490
  signalProcessTree(chromeRecord.pid, "SIGKILL", { group: true });
491
491
  } catch {}
492
492
  const killDeadline = Date.now() + 2e3;
493
- while (!chromeGone() && Date.now() < killDeadline) await sleep(POLL_MS);
493
+ while (!chromeGone() && Date.now() < killDeadline) await cancellableSleep(POLL_MS);
494
494
  }
495
495
  };
496
496
  for (const signal of ["SIGTERM", "SIGINT"]) process.on(signal, () => {
@@ -548,7 +548,7 @@ async function runWebSupervisor(options, { onExit = (code) => process.exit(code)
548
548
  if (stopping) return;
549
549
  (async () => {
550
550
  const deadline = Date.now() + 2e3;
551
- while (!chromeGone() && Date.now() < deadline) await sleep(POLL_MS);
551
+ while (!chromeGone() && Date.now() < deadline) await cancellableSleep(POLL_MS);
552
552
  finish(1, "error", "web_browser_exited", `Chrome exited (${signal ? `signal ${signal}` : `exit code ${code}`}); see ${browserLogFile(root)}`);
553
553
  })();
554
554
  });
@@ -560,7 +560,7 @@ async function runWebSupervisor(options, { onExit = (code) => process.exit(code)
560
560
  connection = await connectOwnedBrowser(options.port, pid);
561
561
  } catch (error) {
562
562
  lastError = error;
563
- await sleep(100);
563
+ await cancellableSleep(100);
564
564
  }
565
565
  if (!connection) throw new Error(`Chrome did not open DevTools on port ${options.port} within ${DEVTOOLS_WAIT_MS / 1e3}s: ${describe(lastError)}`);
566
566
  cdp = connection;
@@ -1,9 +1,10 @@
1
- import { t as process_identity_exports } from "./process-identity-Biv3arCO.mjs";
2
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
1
+ import { O as writeConfigSetting, k as process_identity_exports, m as getProjectSettings } from "./config-BYDxlMY3.mjs";
2
+ import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
3
+ import { it as workspaceHiddenSetting } from "./settings-B717odTD.mjs";
3
4
  import { existsSync, mkdirSync, readFileSync, realpathSync, renameSync, rmSync, writeFileSync } from "node:fs";
4
5
  import { dirname, isAbsolute, join, relative } from "node:path";
5
6
  import { join as join$1, resolve as resolve$1 } from "path";
6
- import { WORKSPACE_AGENT_KEY, emulatorLogFile, readJsonObject, readWorkspaceState, readWorkspaceState as readWorkspaceState$1, sharedCcache as sharedCcache$1, sharedCompilationCache as sharedCompilationCache$1, supervisorLogFile, supervisorPidFile, workspaceAgentDeviceDir, workspaceDerivedData, workspaceLastUsed, workspaceLogErrorIndex, workspaceLogsDir as workspaceLogsDir$1, workspaceMetadataFile, workspaceStateFile, workspaceStateLock } from "@stim-cli/core/state";
7
+ import { WORKSPACE_AGENT_KEY, emulatorLogFile, isJsonObject, readJsonObject, readWorkspaceState, readWorkspaceState as readWorkspaceState$1, sharedCcache as sharedCcache$1, sharedCompilationCache as sharedCompilationCache$1, supervisorLogFile, supervisorPidFile, workspaceAgentDeviceDir, workspaceDerivedData, workspaceLastUsed, workspaceLogErrorIndex, workspaceLogsDir as workspaceLogsDir$1, workspaceMetadataFile, workspaceStateFile, workspaceStateLock } from "@stim-cli/core/state";
7
8
  import { buildCacheRoot as sharedBuildCache, ensurePrivateDir, withDirLock as withDirLock$1, workspaceId as workspaceId$1, workspaceName as workspaceName$1, workspaceStateDir as workspaceDir } from "@stim-cli/core";
8
9
  import { homedir } from "node:os";
9
10
  import { readFile, readdir } from "node:fs/promises";
@@ -85,9 +86,9 @@ function agentFromEnv(env) {
85
86
  * or absolute cwd. The format is Claude Code's own and undocumented, so every other field is optional.
86
87
  */
87
88
  function parseClaudeSession(entry, apps) {
88
- if (!entry || typeof entry !== "object" || Array.isArray(entry)) return null;
89
+ if (!isJsonObject(entry)) return null;
89
90
  const raw = entry;
90
- if (!Number.isSafeInteger(raw.pid) || raw.pid <= 0) return null;
91
+ if (typeof raw.pid !== "number" || !Number.isSafeInteger(raw.pid) || raw.pid <= 0) return null;
91
92
  if (typeof raw.sessionId !== "string" || !SESSION_ID.test(raw.sessionId)) return null;
92
93
  if (typeof raw.cwd !== "string" || !isAbsolute(raw.cwd)) return null;
93
94
  const host = raw.hostSessionId;
@@ -349,7 +350,10 @@ function clearWorkspaceStateKey(root, key, shouldClear) {
349
350
  return true;
350
351
  });
351
352
  }
352
- /** Records a command's use of the workspace, and the agent session whose shell ran it when there is one. */
353
+ /**
354
+ * Records a command's use of the workspace, and the agent session whose shell ran it when there is one, and
355
+ * clears `workspace.hidden`.
356
+ */
353
357
  function recordWorkspaceUse(root, now = /* @__PURE__ */ new Date(), env = process.env) {
354
358
  const agent = agentFromEnv(env);
355
359
  let cwd = process.cwd();
@@ -366,6 +370,12 @@ function recordWorkspaceUse(root, now = /* @__PURE__ */ new Date(), env = proces
366
370
  } } : {}
367
371
  });
368
372
  } catch {}
373
+ try {
374
+ if (workspaceHiddenSetting(getProjectSettings(root))) writeConfigSetting({
375
+ scope: "workspace",
376
+ projectPath: root
377
+ }, "workspace.hidden", void 0);
378
+ } catch {}
369
379
  }
370
380
  //#endregion
371
381
  export { workspaceLogErrorIndex as C, withDirLock$1 as D, workspaceStateFile as E, workspaceId$1 as S, workspaceName$1 as T, supervisorLogFile as _, updateWorkspaceState as a, workspaceDerivedData as b, writeWorkspaceState as c, discoverAgentSessions as d, emulatorLogFile as f, sharedCompilationCache$1 as g, sharedCcache$1 as h, recordWorkspaceUse as i, agentKey as l, sharedBuildCache as m, clearWorkspaceStateKeys as n, withWorkspaceStateLock as o, ensureWorkspaceStorage as p, readWorkspaceState$1 as r, workspaceLastUsed as s, clearWorkspaceStateKey as t, attributeAgentSessions as u, supervisorPidFile as v, workspaceLogsDir$1 as w, workspaceDir as x, workspaceAgentDeviceDir as y };
@@ -1,20 +1,19 @@
1
- import { n as ownership_claim_exports, t as process_identity_exports } from "./process-identity-Biv3arCO.mjs";
2
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
3
- import { D as withConfigLock$1, H as projectDeviceSlots, M as isOnMountedVolume, N as listMountedVolumes, P as measuredDirectorySize, _ as loadConfig$1, d as getConfigDir, g as isPathPrefix, j as formatBytes, k as acquireAvdClaim, p as getProject, z as deviceSlotPlatforms } from "./config-D0LhTY3S.mjs";
4
- import { Et as repoRoot, st as resolveTailscaleBinary } from "./settings-Bbztm4oV.mjs";
5
- import { h as listBuildLocks } from "./device-lease-DHOBXGgS.mjs";
6
- import { T as workspaceName, r as readWorkspaceState$1, s as workspaceLastUsed, x as workspaceDir, y as workspaceAgentDeviceDir } from "./workspace-state-CSIFuuDa.mjs";
1
+ import { A as acquireAvdClaim, D as withConfigLock$1, F as listMountedVolumes, I as measuredDirectorySize, N as formatBytes, P as isOnMountedVolume, V as deviceSlotPlatforms, W as projectDeviceSlots, _ as loadConfig$1, d as getConfigDir, g as isPathPrefix, j as ownership_claim_exports, k as process_identity_exports, p as getProject } from "./config-BYDxlMY3.mjs";
2
+ import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
3
+ import { Dt as repoRoot, ct as resolveTailscaleBinary } from "./settings-B717odTD.mjs";
4
+ import { h as listBuildLocks } from "./device-lease-BX1sJQ2E.mjs";
5
+ import { T as workspaceName, r as readWorkspaceState$1, s as workspaceLastUsed, x as workspaceDir, y as workspaceAgentDeviceDir } from "./workspace-state-DJt_MMvf.mjs";
7
6
  import { t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
8
- import { a as formatElapsed, l as phaseLine } from "./command-output-BjPN99ZB.mjs";
9
- import { B as ownedAvdSystemImage, I as ownedAvdDirectory, J as resolveOwnedAvdSerial, L as ownedAvdMatchesConfiguration, M as listOrphanedAvdDirectories, O as listAdbDevices, X as shutdownAndroidEmulator, Z as sleepSync, _ as avdStorageRoots, ct as eraseParkedAfter, et as waitForAndroidEmulatorShutdown, f as assertOwnedAvdStopped, ft as readParked, h as avdPathExists, nt as wipeAvdUserData, pt as removeParkedAfter, rt as isStimOwnedAvd, ut as parkSim, x as deleteAvd } from "./android-BsYNR81W.mjs";
10
- import { n as readCreatedDevices$1, r as recordCreatedDevice, t as forgetCreatedDevice } from "./created-devices-HU_DAb_Q.mjs";
11
- import { d as signalProcessTree, s as pidExists } from "./metro-D_j9sN-B.mjs";
12
- import { n as declareSpawnsOn, o as stopDeclaringSpawnsOn } from "./spawn-claims-Kqiifsk2.mjs";
13
- import { a as withWorkspaceProcessLock, o as workspaceProcessLockError, r as releaseBrowserPort, s as workspaceProcessLockPath } from "./named-ports-C2lvoPsb.mjs";
14
- import { _ as removeSingletonFiles, c as webClaimRoot, f as webProfileDir, g as liveProfileHolder, h as chromeProcessState, i as clearWebRecord, o as readWebRecord, t as CDP_PORT_LABEL, u as webFacts } from "./state-DI84A-uu.mjs";
15
- import { t as agentDeviceDaemon, u as readAgentDeviceRecords } from "./activity-BrGh9EAI.mjs";
16
- import { E as resolveOwnedIosSim, O as shutdownIosSim, S as renameIosSim, c as eraseIosSim, o as deleteIosSim, p as listIosDeviceTypes, s as deleteParkedIosSim, v as parkedSimName, y as parseRuntimeVersion } from "./ios-CXLIUxXJ.mjs";
17
- import { a as macosRuntimeClaim, n as macosDir } from "./state-Boo0IMJq.mjs";
7
+ import { a as formatElapsed, l as phaseLine } from "./command-output-BTy8hZ0F.mjs";
8
+ import { B as ownedAvdSystemImage, I as ownedAvdDirectory, J as resolveOwnedAvdSerial, L as ownedAvdMatchesConfiguration, M as listOrphanedAvdDirectories, O as listAdbDevices, X as shutdownAndroidEmulator, Z as sleepSync, _ as avdStorageRoots, ct as eraseParkedAfter, et as waitForAndroidEmulatorShutdown, f as assertOwnedAvdStopped, ft as readParked, h as avdPathExists, nt as wipeAvdUserData, pt as removeParkedAfter, rt as isStimOwnedAvd, ut as parkSim, x as deleteAvd } from "./android-Mz_Inn3w.mjs";
9
+ import { n as readCreatedDevices$1, r as recordCreatedDevice, t as forgetCreatedDevice } from "./created-devices-Dzd5C2LF.mjs";
10
+ import { d as signalProcessTree, s as pidExists } from "./metro-DnCEjCxs.mjs";
11
+ import { n as declareSpawnsOn, o as stopDeclaringSpawnsOn } from "./spawn-claims-DVS5RkMS.mjs";
12
+ import { a as withWorkspaceProcessLock, o as workspaceProcessLockError, r as releaseBrowserPort, s as workspaceProcessLockPath } from "./named-ports-4WopRPg-.mjs";
13
+ import { _ as removeSingletonFiles, c as webClaimRoot, f as webProfileDir, g as liveProfileHolder, h as chromeProcessState, i as clearWebRecord, o as readWebRecord, t as CDP_PORT_LABEL, u as webFacts } from "./state-D1Icyjlu.mjs";
14
+ import { t as agentDeviceDaemon, u as readAgentDeviceRecords } from "./activity-BSV745Kz.mjs";
15
+ import { E as resolveOwnedIosSim, O as shutdownIosSim, S as renameIosSim, c as eraseIosSim, o as deleteIosSim, p as listIosDeviceTypes, s as deleteParkedIosSim, v as parkedSimName, y as parseRuntimeVersion } from "./ios-RkW4pnQf.mjs";
16
+ import { a as macosRuntimeClaim, n as macosDir } from "./state-CG_OFoaA.mjs";
18
17
  import { closeSync, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, rmdirSync, statSync, unlinkSync } from "node:fs";
19
18
  import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
20
19
  import { basename as basename$1, isAbsolute as isAbsolute$1, join as join$1, relative as relative$1, resolve as resolve$1 } from "path";