stim 1.25.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 (158) hide show
  1. package/README.md +1 -1
  2. package/dist/{acquire-artifact-zA4S7RHE.mjs → acquire-artifact-DVsvSwf7.mjs} +1 -1
  3. package/dist/{act-BbHS3oV8.mjs → act-C-BqJEpu.mjs} +157 -35
  4. package/dist/{activity-BpjwrQXU.mjs → activity-Lnb_EoRY.mjs} +4 -5
  5. package/dist/{agent-device-usage-output-Bnkerfod.mjs → agent-device-usage-output-DbXy5tg8.mjs} +4 -4
  6. package/dist/{android-saBeB4lr.mjs → android-B5P81yI-.mjs} +1 -1
  7. package/dist/{android-CNZgRC-4.mjs → android-CSbLRD53.mjs} +5 -5
  8. package/dist/{android-BGwuK3Mc.mjs → android-CiNQw3kq.mjs} +73 -49
  9. package/dist/{android-Cjcj8MCw.mjs → android-DTAcRwBC.mjs} +81 -34
  10. package/dist/{android-cas-BVqh2Zep.mjs → android-cas-BTVhZ0Qs.mjs} +4 -4
  11. package/dist/{android-project-CTYaETc0.d.mts → android-project-DUGMbq28.d.mts} +55 -1
  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-Co8zixVx.mjs → artifact-BxREhAaV.mjs} +23 -18
  16. package/dist/{artifact-DN8JNwqS.mjs → artifact-CsAP6AGK.mjs} +35 -20
  17. package/dist/{attempt-DW-mQqM7.mjs → attempt-ClyJlZPT.mjs} +4 -2
  18. package/dist/{browser-web-CCgZsHmI.mjs → browser-web-rYPyqhTf.mjs} +11 -12
  19. package/dist/{budget-HyShrIpL.mjs → budget-k2mZGvvk.mjs} +196 -33
  20. package/dist/{build-CAiw8Ezm.mjs → build-DPhApsjV.mjs} +26 -23
  21. package/dist/{build-cache-CKCzxzxA.mjs → build-cache-DrXNCy3T.mjs} +103 -21
  22. package/dist/{build-plan-zCuHGlA8.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-h1FKhZeg.mjs → ccache-Bx5TbxwG.mjs} +6 -6
  26. package/dist/{cli-C4w607Pz.mjs → cli-BBKFGOFl.mjs} +19 -19
  27. package/dist/cli.mjs +1 -1
  28. package/dist/{client-BQsmyp_-.mjs → client-D9CaRks-.mjs} +36 -61
  29. package/dist/collector-run.mjs +4 -4
  30. package/dist/{command-output-BBvS1H6v.mjs → command-output-BF5AR2dL.mjs} +1 -1
  31. package/dist/{config-BZhXY15H.mjs → config-BktkY_zC.mjs} +321 -15
  32. package/dist/{launch-DscF1QfM.mjs → dependencies-Dw6wfQdv.mjs} +258 -255
  33. package/dist/{dependency-state-BwNCYG5Q.mjs → dependency-state-DFB41vfr.mjs} +1 -1
  34. package/dist/{dev-client-CHoXXZeg.mjs → dev-client-DXR_tPVY.mjs} +2 -2
  35. package/dist/{device-B9FqTBYW.mjs → device-BK-zwyd_.mjs} +13 -13
  36. package/dist/{device-F5-4z9ef.mjs → device-BcYeHSFu.mjs} +14 -14
  37. package/dist/{device-capacity-ZYaRALv5.mjs → device-capacity-DCSvUF0l.mjs} +10 -17
  38. package/dist/device-host-worker.mjs +11 -13
  39. package/dist/{device-ios-DkHBrmvH.mjs → device-ios-BLGfXQeK.mjs} +49 -17
  40. package/dist/{device-lease-run-ogEeJ62K.mjs → device-lease-run-BmvIl7bI.mjs} +4 -4
  41. package/dist/{device-pool-BIg8MU8l.mjs → device-pool-Dluix4H3.mjs} +3 -3
  42. package/dist/{doctor-k3P3PizH.mjs → doctor-Bhg1ii70.mjs} +14 -14
  43. package/dist/{doctor-A_Nr_fDe.mjs → doctor-Cp-BhzTS.mjs} +1 -1
  44. package/dist/{doctor-Bm8TVpGn.mjs → doctor-OnwP94ne.mjs} +72 -23
  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-BovI1y3-.mjs → doctor-watchman-BStK05nt.mjs} +4 -4
  48. package/dist/{eas-build-CyDKNTBP.mjs → eas-build-Dsj93iM9.mjs} +2 -2
  49. package/dist/{eas-fallback-gaZi-dJL.mjs → eas-fallback-FwkeqqGi.mjs} +10 -10
  50. package/dist/{eas-session-ledger-BMCA1gdO.mjs → eas-session-ledger-B5vygTiD.mjs} +5 -5
  51. package/dist/{error-diagnostics-B1Mj_-7h.mjs → error-diagnostics-BOOm9Db7.mjs} +8 -8
  52. package/dist/{gc-eaz403W6.mjs → gc-C_79zvz4.mjs} +2 -2
  53. package/dist/{gc-B9jcnmIk.mjs → gc-ldgr-hXU.mjs} +74 -43
  54. package/dist/{guide-DR0K0xW9.mjs → guide-D7K0X6KG.mjs} +272 -52
  55. package/dist/{hosted-android-Bvb2-ZxD.mjs → hosted-android-Bk54ej6n.mjs} +3 -3
  56. package/dist/{hosted-client-rsRqysJc.mjs → hosted-client-fHO8yqzc.mjs} +5 -5
  57. package/dist/{hosted-ios-RtVcJH3u.mjs → hosted-ios-D55QhYaD.mjs} +1 -1
  58. package/dist/{hosted-logs-CWKGYWNX.mjs → hosted-logs-BfbmDM4M.mjs} +17 -11
  59. package/dist/hosted-logs-sync-B0pvmOk-.mjs +195 -0
  60. package/dist/{hosted-macos-d0pv9Tth.mjs → hosted-macos-CPl0OZ9h.mjs} +5 -5
  61. package/dist/{hosted-native-BxTizGU2.mjs → hosted-native-CpDB3-PO.mjs} +6 -7
  62. package/dist/{idle-shutdown-BIyfl0Zj.mjs → idle-shutdown-FfxL1KdG.mjs} +22 -9
  63. package/dist/{ios-Dvt97HgQ.mjs → ios-B7-lToDu.mjs} +8 -8
  64. package/dist/{ios-BQzvJlzw.mjs → ios-WxpDJ5T1.mjs} +72 -5
  65. package/dist/{ios-device-CKSvk0bu.mjs → ios-device-CsyryvpT.mjs} +1 -1
  66. package/dist/{ios-BRVM8b0P.mjs → ios-ftxdQbJS.mjs} +74 -46
  67. package/dist/{ios-project-DCUDo06I.mjs → ios-project-Ty5pHl9O.mjs} +6 -6
  68. package/dist/{ios-state-CT9nV5SP.mjs → ios-state-Cw7-WQf2.mjs} +1 -1
  69. package/dist/{js-swap-Z9HbC4cj.mjs → js-swap-BMhXYVDS.mjs} +4 -4
  70. package/dist/{launch-D0lPvFFu.mjs → launch-DOp8RjDz.mjs} +31 -26
  71. package/dist/{logs-BsIRre8x.mjs → logs-dQDki6Tt.mjs} +9 -173
  72. package/dist/{logs-Crs9y34Z.mjs → logs-s1dRIG1E.mjs} +85 -36
  73. package/dist/{macos-CcUlJPMu.mjs → macos-B0VEV3Gf.mjs} +1 -1
  74. package/dist/{macos-D477nfzH.mjs → macos-DBBPNnIA.mjs} +18 -19
  75. package/dist/macos-run.mjs +1 -1
  76. package/dist/maintenance-run.mjs +28 -11
  77. package/dist/{metro-1pJgCX4U.mjs → metro-CjC10t6E.mjs} +2 -2
  78. package/dist/{metro-gateway-Bp9gJQAN.mjs → metro-gateway-B6_PgD0L.mjs} +2 -3
  79. package/dist/{named-ports-BVbn8SvC.mjs → named-ports-BG0j1X4g.mjs} +2 -2
  80. package/dist/{native-android-BvMizJn1.mjs → native-android-CL2NGiik.mjs} +17 -17
  81. package/dist/{native-gradle-artifact-inputs-BJscK4vN.mjs → native-gradle-artifact-inputs-btSUulme.mjs} +3 -3
  82. package/dist/{native-run-D5OJsGwA.mjs → native-run-BfIDFKLH.mjs} +2 -3
  83. package/dist/{native-runtime-B9w_Qyz3.mjs → native-runtime-Dq3RBcON.mjs} +6 -7
  84. package/dist/{native-xcode-inputs-Cv4l-obn.mjs → native-xcode-inputs-BW7H8JGu.mjs} +2 -2
  85. package/dist/{native-xcode-ios-DGrg90hE.mjs → native-xcode-ios-CBXJAxfC.mjs} +15 -16
  86. package/dist/offload-worker.d.mts +3 -1
  87. package/dist/offload-worker.mjs +31 -21
  88. package/dist/{ownership-jxxz-19m.mjs → ownership-BjYvMNX_.mjs} +2 -2
  89. package/dist/{phone-reverses-CYb7RRAx.mjs → phone-reverses-lmj6kcPm.mjs} +3 -3
  90. package/dist/{placement-log-DjOXJRIH.mjs → placement-log-DIFPQAXp.mjs} +1 -1
  91. package/dist/{plan-placement-BqKgKHCi.mjs → plan-placement-IiiSQhtz.mjs} +3 -3
  92. package/dist/{ports-DtS1Amb0.mjs → ports-C2_w1Z0Z.mjs} +3 -3
  93. package/dist/prebuild-gmouvmJZ.mjs +1247 -0
  94. package/dist/{project-BiC68mIp.mjs → project-BUu6Is4k.mjs} +15 -16
  95. package/dist/{react-native-android-DRYqoJc4.mjs → react-native-android-Cgg99REN.mjs} +47 -33
  96. package/dist/{react-native-build-CwZB-agu.mjs → react-native-build-oNwqF5Wb.mjs} +7 -7
  97. package/dist/{react-native-doctor-BCrytK7h.mjs → react-native-doctor-BhA3KUte.mjs} +49 -8
  98. package/dist/{react-native-ios-Cr1buNFo.mjs → react-native-ios-B-nf4rjN.mjs} +37 -23
  99. package/dist/{recordings-BaoQ0t-J.mjs → recordings-BldzVKq0.mjs} +1 -1
  100. package/dist/{reload-Beftw2X3.mjs → reload-C9OduiNc.mjs} +1 -1
  101. package/dist/{reload-FbSgMF8x.mjs → reload-CCR7KC_l.mjs} +14 -14
  102. package/dist/{remote-BuZj6AyU.mjs → remote-C8S7FlPF.mjs} +7 -7
  103. package/dist/{result-CR2vk2cj.mjs → result-7F5hEwQJ.mjs} +16 -16
  104. package/dist/{run-BtzE09Dl.mjs → run-BqB0v3pt.mjs} +1 -1
  105. package/dist/{selection-D5cxEl3t.mjs → selection-BNPBZ6T5.mjs} +155 -42
  106. package/dist/{server-bare-CH9X0RLn.mjs → server-bare-A75rDIdD.mjs} +1 -1
  107. package/dist/{server-command-CaBbDNU2.mjs → server-command-CssKFOD7.mjs} +4 -4
  108. package/dist/{server-expo-Ck8EIidM.mjs → server-expo-eQfOdydb.mjs} +2 -2
  109. package/dist/server-expo-wvcj5tiZ.mjs +2 -0
  110. package/dist/{settings-B5tCoq9N.mjs → settings-CosW5X-S.mjs} +1 -1
  111. package/dist/{settings-DzH9mGQZ.mjs → settings-OaGQF-ri.mjs} +1 -1
  112. package/dist/{settings-write-n0zwfohx.mjs → settings-write-QjYfSrjF.mjs} +5 -5
  113. package/dist/settings.schema.json +33 -6
  114. package/dist/{simslim-BjxszUAb.mjs → simslim-Bax1qcxu.mjs} +3 -2
  115. package/dist/{slot-launch-QeuJMlnJ.mjs → slot-launch-CYCEhfBY.mjs} +6 -6
  116. package/dist/{stage-D8xlRU2D.mjs → stage-jKQ7CP_B.mjs} +1 -1
  117. package/dist/{start-C1JLjkNw.mjs → start-C_wefNKB.mjs} +1 -1
  118. package/dist/{start-YMpNwLhh.mjs → start-_BdJ32cZ.mjs} +9 -10
  119. package/dist/{state-DMRNP7-4.mjs → state-C1i2nMOP.mjs} +2 -3
  120. package/dist/{state-DPaM3u5K.mjs → state-C4OdpOTF.mjs} +1 -2
  121. package/dist/{stats-CP7STzZw.mjs → stats-tEpEEH-u.mjs} +4 -4
  122. package/dist/{status-cNw6i0_t.mjs → status-B9M7x4CZ.mjs} +1 -1
  123. package/dist/{status-Fect2w9R.mjs → status-CRXz-Gtj.mjs} +1 -1
  124. package/dist/{status-CRLiJ-O_.mjs → status-DQrqodLj.mjs} +22 -23
  125. package/dist/{status-watch-Bc2J4TZn.mjs → status-watch-B5wDIH_o.mjs} +4 -4
  126. package/dist/status-worker.mjs +1 -1
  127. package/dist/{stim-desktop-DS0mzR8U.mjs → stim-desktop-6Dqp-gjX.mjs} +1 -1
  128. package/dist/{stop-Br7LKxBE.mjs → stop-CmdNhGlC.mjs} +2 -2
  129. package/dist/{stop-Db9Kh-UA.mjs → stop-DRqQVqDJ.mjs} +21 -19
  130. package/dist/{stop-COP6PQqw.mjs → stop-ySNQHXMG.mjs} +4 -5
  131. package/dist/supervisor-run.d.mts +1 -0
  132. package/dist/supervisor-run.mjs +14 -15
  133. package/dist/{support-Cxj9CmII.mjs → support-BGSCBoib.mjs} +4 -4
  134. package/dist/{support-qKcbgmI5.mjs → support-CVOCp0Ft.mjs} +9 -9
  135. package/dist/{swiftpm-artifact-inputs-iY9fsmOc.mjs → swiftpm-artifact-inputs-CfUzt_0Z.mjs} +1 -1
  136. package/dist/{swiftpm-macos-Bp_sn9P4.mjs → swiftpm-macos-x6HPpl_2.mjs} +9 -9
  137. package/dist/toolchain-DoavrvIA.mjs +2 -0
  138. package/dist/toolchain-J4J8MrAr.mjs +2107 -0
  139. package/dist/trigger-DzJu208Q.mjs +2 -0
  140. package/dist/{trigger-CBMe2YLH.mjs → trigger-KVaWWNyn.mjs} +1 -1
  141. package/dist/{warm-progress-BV3ZPmcY.mjs → warm-progress-DvhTX_eu.mjs} +3 -4
  142. package/dist/web-BFLueSh-.mjs +2 -0
  143. package/dist/{web-B4Yjyt1G.mjs → web-Bihbf7-u.mjs} +8 -9
  144. package/dist/web-run.mjs +4 -4
  145. package/dist/{workspace-state-CPSp3mav.mjs → workspace-state-pUg3_RRA.mjs} +45 -7
  146. package/dist/{workspaces-C9w4aeXF.mjs → workspaces-g2lhdBXF.mjs} +17 -17
  147. package/dist/{worktree-CclFIe1Z.mjs → worktree-BKuklFh_.mjs} +34 -31
  148. package/dist/{worktree-Ct9Gk3KL.mjs → worktree-Bm4cb-nU.mjs} +1 -1
  149. package/package.json +8 -8
  150. package/dist/created-devices-D2Aca-xu.mjs +0 -52
  151. package/dist/paths-DQtTgsBf.mjs +0 -42
  152. package/dist/prebuild-JUaqOLpc.mjs +0 -501
  153. package/dist/server-expo-C16Zf2k7.mjs +0 -2
  154. package/dist/toolchain-DB1aeqxO.mjs +0 -2
  155. package/dist/toolchain-VzLJzZ7O.mjs +0 -908
  156. package/dist/trigger-BLsHgAGR.mjs +0 -2
  157. package/dist/web-DS4UDWvf.mjs +0 -2
  158. package/dist/xcode-CiIIDnuD.mjs +0 -910
@@ -1,24 +1,22 @@
1
1
  import { D as ownership_claim_exports, S as process_identity_exports, c as throwIfCancelled, l as WorkspaceProcessCleanupError, m as declareSpawnsOn, t as getExecutor, v as stopDeclaringSpawnsOn, x as withDrainingCancellation } from "./exec-VFRpu1iA.mjs";
2
- import { d as workspaceDir } from "./paths-DQtTgsBf.mjs";
3
- import { F as isOnMountedVolume, G as projectDeviceSlots, I as listMountedVolumes, L as measuredDirectorySizeAsync, N as directorySizeAsync, O as withConfigLockAsync$1, P as formatBytes, R as volumeRootFor, S as removeProject, _ as loadConfig$1, d as getConfigDir, j as acquireAvdClaim } from "./config-BZhXY15H.mjs";
4
- import { d as quotedPath$1, h as shortUdid, o as formatLongDuration, u as plural } from "./command-output-BBvS1H6v.mjs";
2
+ import { E as workspaceDir, u as workspaceLastUsed } from "./workspace-state-pUg3_RRA.mjs";
3
+ import { F as isOnMountedVolume, G as projectDeviceSlots, I as listMountedVolumes, L as measuredDirectorySizeAsync, N as directorySizeAsync, O as withConfigLockAsync$1, P as formatBytes, R as volumeRootFor, S as removeProject, _ as loadConfig$1, d as getConfigDir, j as acquireAvdClaim } from "./config-BktkY_zC.mjs";
4
+ import { d as quotedPath$1, h as shortUdid, o as formatLongDuration, u as plural } from "./command-output-BF5AR2dL.mjs";
5
5
  import { t as runOperationFile } from "./operation-exec-CUZifp6Z.mjs";
6
- import { u as workspaceLastUsed } from "./workspace-state-CPSp3mav.mjs";
7
- import { Dt as listWorktreesAsync, Lt as resolveSourceCheckoutAsync } from "./settings-B5tCoq9N.mjs";
8
- import { i as findProjectRoot$1, v as detectIsExpo } from "./project-BiC68mIp.mjs";
9
- import { F as listAvdsAsync, L as listOrphanedAvdDirectories, V as ownedAvdDirectory, ft as POOL_SETTING_REMEDY, h as avdNameAbsent, vt as parkedMaxSetting } from "./android-Cjcj8MCw.mjs";
10
- import { n as forgetCreatedDeviceAsync, r as readCreatedDevices$1 } from "./created-devices-D2Aca-xu.mjs";
11
- import { n as easMachineStateRoot$1, o as removeEasSessionClaimAsync, r as readEasSessionLedger$1 } from "./eas-session-ledger-BMCA1gdO.mjs";
12
- import { $ as includesArchives, At as findStaleDeviceRecords, C as collectIdleDevices, Cr as discoverCaches, Ct as deleteParkedSims, D as idleDeviceLines, Dt as deviceSweepIsScoped, Et as describeUnverifiableDevices, Ft as deleteEasSessions, It as describeError, Jt as withEasProjectLock, Lt as withRemoteSessionGcLocks, Mt as unverifiedDeviceCommand, Nt as withAndroidAvdSizes, O as parseIdleDuration, Ot as eraseParkedDevices, Pt as collectEasSessionSweep, Q as emptyCaches, St as deleteParkedAvds, Tr as sizeCaches, _r as reclaimMemory, _t as collectInventory, at as previewScopedEmptying, br as phase, bt as collectParkedAvds, ct as trimCaches, dt as deleteGradleVersions, et as includesParkedDevices, fr as memoryCacheKind, ft as gradleVersionLines, gr as memoryWorkPending, gt as getMachineCacheReport, hr as memorySweepIsScoped, it as planCacheEmptying, jt as findStaleProjectDevices, k as shutDownIdleDevices, kt as findOrphanedDevices, lt as collectGradleVersions, mr as memoryScope, mt as includesGradleVersions, nt as includesWorkspaceOutputs, ot as selectCaches, pr as memoryLines, pt as gradleVersionsPending, rt as isWorkspacesScope, sr as parseArchiveSelector, st as selectsBeyondCaches, tt as includesRecordings, ur as collectMemoryReport, vr as scopedMemoryReport, vt as DEVICE_LIST_TIMEOUT_MS, w as collectIdleDevicesAsync, wt as deleteProjectDevices, xt as collectParkedSims, yt as collectDeviceLeases, zn as runProcessOperation } from "./budget-HyShrIpL.mjs";
6
+ import { Dt as listWorktreesAsync, Lt as resolveSourceCheckoutAsync } from "./settings-CosW5X-S.mjs";
7
+ import { i as findProjectRoot$1, v as detectIsExpo } from "./project-BUu6Is4k.mjs";
8
+ import { Ct as forgetCreatedDeviceAsync, F as listAvdsAsync, L as listOrphanedAvdDirectories, V as ownedAvdDirectory, ft as POOL_SETTING_REMEDY, h as avdNameAbsent, vt as parkedMaxSetting, wt as readCreatedDevices$1 } from "./android-DTAcRwBC.mjs";
9
+ import { n as easMachineStateRoot$1, o as removeEasSessionClaimAsync, r as readEasSessionLedger$1 } from "./eas-session-ledger-B5vygTiD.mjs";
10
+ import { At as describeUnverifiableDevices, Bt as describeError, C as gcOptionsOf, Ct as collectDeviceLeases, D as collectIdleDevices, Dr as discoverCaches, Dt as deleteParkedSims, Et as deleteParkedAvds, Ft as findStaleProjectDevices, It as unverifiedDeviceCommand, Lt as withAndroidAvdSizes, M as parseIdleDuration, Mt as eraseParkedDevices, N as shutDownIdleDevices, Nt as findOrphanedDevices, O as collectIdleDevicesAsync, Ot as deleteProjectDevices, Pt as findStaleDeviceRecords, Qt as withEasProjectLock, Rt as collectEasSessionSweep, Sr as scopedMemoryReport, St as DEVICE_LIST_TIMEOUT_MS, T as openGcLog, Tt as collectParkedSims, Un as runProcessOperation, Vt as withRemoteSessionGcLocks, _r as memoryLines, _t as gradleVersionsPending, at as includesRecordings, br as memoryWorkPending, bt as getMachineCacheReport, ct as planCacheEmptying, dr as parseArchiveSelector, dt as selectsBeyondCaches, ft as trimCaches, gr as memoryCacheKind, gt as gradleVersionLines, ht as deleteGradleVersions, it as includesParkedDevices, j as idleDeviceLines, jt as deviceSweepIsScoped, kr as sizeCaches, lt as previewScopedEmptying, mr as collectMemoryReport, nt as emptyCaches, ot as includesWorkspaceOutputs, pt as collectGradleVersions, rt as includesArchives, st as isWorkspacesScope, ut as selectCaches, vr as memoryScope, vt as includesGradleVersions, wr as phase, wt as collectParkedAvds, xr as reclaimMemory, xt as collectInventory, yr as memorySweepIsScoped, zt as deleteEasSessions } from "./budget-k2mZGvvk.mjs";
13
11
  import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
14
- import { B as GC_OUTPUT, R as listBuildSlots, V as createGcResults, a as collectWorkspaceOutputs, c as listWorkspaceDirs, h as workspaceInUseAsync, i as collectOrphanedWorkspaces, l as rootPresence, n as WORKSPACE_OUTPUT_DIRS, o as deleteOrphanedWorkspaces, p as withIdleWorkspace, r as clearWorkspaceOutputs, s as isInsideWorkspaces, t as REBUILD_COST, u as sizeText } from "./workspaces-C9w4aeXF.mjs";
15
- import { N as listBuildLocks, k as removeExpiredLease } from "./activity-BpjwrQXU.mjs";
16
- import { d as listAllIosSims, f as listAllIosSimsAsync } from "./ios-BQzvJlzw.mjs";
17
- import { r as readCollectors } from "./ownership-jxxz-19m.mjs";
18
- import { C as reclaimProject, S as describeDereferenced, T as sweepArchiveStaging, a as matchWorktreeEntry, b as TRASH_MANIFEST, v as TRASH_CLAIMS, w as deleteSelectedArchives, x as deleteTrashEntry } from "./worktree-CclFIe1Z.mjs";
19
- import { s as writeCacheFile } from "./warm-progress-BV3ZPmcY.mjs";
20
- import { _ as collectWorktreeSweep, a as previewMaintenance, b as worktreeRemovalReason, c as deleteTempLeftovers, d as ARTIFACT_DIRS, f as appRoots, g as candidateRootsAsync, h as ownedDeviceUsage, l as tempLeftoverLines, o as triggeringRoot, p as finishedWorkspaces, s as collectTempLeftovers, t as deleteIdleWorkspaceDevices, u as tempLeftoverSection, v as removeWorktrees, y as worktreePullRequestNote } from "./act-BbHS3oV8.mjs";
21
- import { i as getSwiftpmCacheUsage, n as swiftpmCacheLines, r as getAgentDeviceUsage, t as agentDeviceLines } from "./agent-device-usage-output-Bnkerfod.mjs";
12
+ import { B as GC_OUTPUT, R as listBuildSlots, V as createGcResults, a as collectWorkspaceOutputs, c as listWorkspaceDirs, h as workspaceInUseAsync, i as collectOrphanedWorkspaces, l as rootPresence, n as WORKSPACE_OUTPUT_DIRS, o as deleteOrphanedWorkspaces, p as withIdleWorkspace, r as clearWorkspaceOutputs, s as isInsideWorkspaces, t as REBUILD_COST, u as sizeText } from "./workspaces-g2lhdBXF.mjs";
13
+ import { N as listBuildLocks, k as removeExpiredLease } from "./activity-Lnb_EoRY.mjs";
14
+ import { d as listAllIosSims, f as listAllIosSimsAsync } from "./ios-WxpDJ5T1.mjs";
15
+ import { r as readCollectors } from "./ownership-BjYvMNX_.mjs";
16
+ import { C as reclaimProject, S as describeDereferenced, T as sweepArchiveStaging, a as matchWorktreeEntry, b as TRASH_MANIFEST, v as TRASH_CLAIMS, w as deleteSelectedArchives, x as deleteTrashEntry } from "./worktree-BKuklFh_.mjs";
17
+ import { s as writeCacheFile } from "./warm-progress-DvhTX_eu.mjs";
18
+ import { S as readConcurrency, _ as collectWorktreeSweep, a as previewMaintenance, b as worktreeRemovalReason, c as deleteTempLeftovers, d as ARTIFACT_DIRS, f as appRoots, g as candidateRootsAsync, h as ownedDeviceUsage, l as tempLeftoverLines, o as triggeringRoot, p as finishedWorkspaces, s as collectTempLeftovers, t as deleteIdleWorkspaceDevices, u as tempLeftoverSection, v as removeWorktrees, x as eachLimited, y as worktreePullRequestNote } from "./act-C-BqJEpu.mjs";
19
+ import { i as getSwiftpmCacheUsage, n as swiftpmCacheLines, r as getAgentDeviceUsage, t as agentDeviceLines } from "./agent-device-usage-output-DbXy5tg8.mjs";
22
20
  import { claimRemoveCommand, isClaimRefusal, isClaimUnavailable, readClaimSet, releaseClaim, tryAcquireClaim } from "@stim-cli/core/ownership-claim";
23
21
  import { existsSync, lstatSync, readFileSync, readdirSync, statSync } from "node:fs";
24
22
  import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
@@ -148,12 +146,24 @@ async function forgetStaleEasLedgerEntries(entries, mountedVolumes, deps = {}, o
148
146
  await setImmediate();
149
147
  signal?.throwIfAborted();
150
148
  try {
151
- if (await remove(entry.id, root, (claim) => isStaleEasLedgerEntry(claim, mountedVolumes), signal)) output.log(chalk.green(`Forgot the EAS ledger entry ${entry.id} (invalid id, ${entry.workspaceRoot} is gone)`));
152
- else output.log(chalk.dim(`Kept the EAS ledger entry ${entry.id}: it changed since the report.`));
149
+ if (await remove(entry.id, root, (claim) => isStaleEasLedgerEntry(claim, mountedVolumes), signal)) {
150
+ output.log(chalk.green(`Forgot the EAS ledger entry ${entry.id} (invalid id, ${entry.workspaceRoot} is gone)`));
151
+ output.record("easLedgerEntry", "done", entry.id, { id: entry.id });
152
+ } else {
153
+ output.log(chalk.dim(`Kept the EAS ledger entry ${entry.id}: it changed since the report.`));
154
+ output.record("easLedgerEntry", "kept", entry.id, {
155
+ id: entry.id,
156
+ detail: "it changed since the report"
157
+ });
158
+ }
153
159
  } catch (error) {
154
160
  signal?.throwIfAborted();
155
161
  failures++;
156
162
  output.log(chalk.red(`Could not forget the EAS ledger entry ${entry.id}: ${describeError(error)}`));
163
+ output.record("easLedgerEntry", "failed", entry.id, {
164
+ id: entry.id,
165
+ detail: describeError(error)
166
+ });
157
167
  }
158
168
  }
159
169
  signal?.throwIfAborted();
@@ -1381,40 +1391,34 @@ async function duSize(dir, operation) {
1381
1391
  const kb = /^(\d+)\t/.exec(out)?.[1];
1382
1392
  return kb ? Number(kb) * 1024 : null;
1383
1393
  }
1384
- async function eachLimited(items, limit, run) {
1385
- const queue = items[Symbol.iterator]();
1386
- const worker = async () => {
1387
- for (const item of queue) await run(item);
1388
- };
1389
- await Promise.all(Array.from({ length: Math.min(limit, items.length) }, worker));
1390
- }
1391
1394
  /**
1392
1395
  * Sizes the regenerable directories maintenance clears and a project-local `.pnpm-store` in each worktree of the
1393
1396
  * sweep, from the disk-usage cache while an entry is under an hour old and no entry was added to or removed from the
1394
1397
  * directory since. Stale directories are measured with one `du` each, sequentially with an operation and at most
1395
1398
  * 4 at once otherwise, with 10 seconds each, so a
1396
- * slow tree delays only itself; a directory du could not measure in time is reported unmeasured (null). Also lists
1399
+ * slow tree delays only itself; a directory du could not measure in time is reported unmeasured (null). Without
1400
+ * `measure`, stale directories are reported unmeasured without a `du`. Also lists
1397
1401
  * the directories directly under a repository's `.worktrees/` that are no git worktree at all.
1398
1402
  */
1399
- async function measureWorktreeSweep(sweep, operation) {
1403
+ async function measureWorktreeSweep(sweep, operation, measure = true) {
1400
1404
  operation?.signal.throwIfAborted();
1401
1405
  const now = Date.now();
1406
+ const measured = sweep.worktrees.filter((candidate) => candidate.skipCode !== "not-a-worktree");
1402
1407
  const pending = [];
1403
- for (const candidate of sweep.worktrees) {
1408
+ await eachLimited([...measured.entries()], readConcurrency(operation), async ([index, candidate]) => {
1404
1409
  operation?.signal.throwIfAborted();
1405
- if (candidate.skipCode === "not-a-worktree") continue;
1406
1410
  const dirs = await buildStateDirs(candidate.path, candidate.keys, operation);
1407
- pending.push({
1411
+ pending[index] = {
1408
1412
  candidate,
1409
1413
  root: canonicalPath(candidate.path),
1410
1414
  dirs,
1411
1415
  sizes: new Map(dirs.map((dir) => [dir, cachedSize(dir, now)]))
1412
- });
1413
- }
1414
- const due = pending.flatMap(({ sizes }) => [...sizes].flatMap(([dir, bytes]) => bytes === null ? [{
1416
+ };
1417
+ });
1418
+ const due = measure ? pending.flatMap(({ sizes }) => [...sizes].flatMap(([dir, bytes]) => bytes === null ? [{
1415
1419
  dir,
1416
1420
  sizes
1417
- }] : []));
1421
+ }] : [])) : [];
1418
1422
  const worktrees = new Set(due.map(({ sizes }) => sizes)).size;
1419
1423
  if (due.length) phase("worktrees", `measuring the build state of ${plural(worktrees, "worktree")}`, operation);
1420
1424
  await eachLimited(due, operation ? 1 : BUILD_STATE_CONCURRENCY, async ({ dir, sizes }) => {
@@ -1463,9 +1467,13 @@ async function unlistedWorktreeDirs(operation) {
1463
1467
  signal: operation?.signal,
1464
1468
  declareFor: operation
1465
1469
  };
1466
- for (const root of await candidateRootsAsync(operation)) {
1470
+ const roots = await candidateRootsAsync(operation);
1471
+ const resolved = [];
1472
+ await eachLimited([...roots.entries()], readConcurrency(operation), async ([index, root]) => {
1467
1473
  operation?.signal.throwIfAborted();
1468
- const { entries, ...source } = await resolveSourceCheckoutAsync(root, options);
1474
+ resolved[index] = await resolveSourceCheckoutAsync(root, options);
1475
+ });
1476
+ for (const { entries, ...source } of resolved) {
1469
1477
  if ("refusal" in source || repositories.has(source.path)) continue;
1470
1478
  repositories.set(source.path, entries.map((entry) => canonicalPath(entry.path)));
1471
1479
  }
@@ -1583,14 +1591,23 @@ async function forgetStaleLedgerEntries(entries, output = GC_OUTPUT, signal) {
1583
1591
  if (entry.kind === "android") {
1584
1592
  if (!await forgetStaleAvdName(entry.id, signal)) {
1585
1593
  output.log(chalk.dim(`Kept the ledger entry for android ${entry.id}: the AVD or its setup reappeared`));
1594
+ output.record("ledgerEntry", "kept", `android ${entry.id}`, {
1595
+ id: entry.id,
1596
+ detail: "the AVD or its setup reappeared"
1597
+ });
1586
1598
  continue;
1587
1599
  }
1588
1600
  } else await forgetCreatedDeviceAsync(entry.kind, entry.id, signal);
1589
1601
  output.log(chalk.green(`Forgot the ledger entry for ${entry.kind} ${entry.id} (not on this machine)`));
1602
+ output.record("ledgerEntry", "done", `${entry.kind} ${entry.id}`, { id: entry.id });
1590
1603
  } catch (error) {
1591
1604
  signal?.throwIfAborted();
1592
1605
  failures++;
1593
1606
  output.log(chalk.red(`Could not forget the ledger entry for ${entry.kind} ${entry.id}: ${error?.message || error}`));
1607
+ output.record("ledgerEntry", "failed", `${entry.kind} ${entry.id}`, {
1608
+ id: entry.id,
1609
+ detail: error instanceof Error ? error.message : String(error)
1610
+ });
1594
1611
  }
1595
1612
  }
1596
1613
  signal?.throwIfAborted();
@@ -1759,15 +1776,18 @@ async function trimWorkspaceLogs(entries, output = GC_OUTPUT, operation) {
1759
1776
  signal?.throwIfAborted();
1760
1777
  failures++;
1761
1778
  output.log(chalk.red(`Could not trim the logs of ${root}: ${error?.message || String(error)}`));
1779
+ output.record("workspaceLogs", "failed", root, { detail: error instanceof Error ? error.message : String(error) });
1762
1780
  continue;
1763
1781
  }
1764
1782
  if (!run.ran || run.value.kept) {
1765
1783
  const kept = run.ran ? run.value.kept : `in use: ${run.reasons.join("; ")}`;
1766
1784
  output.log(chalk.yellow(`Kept the logs of ${root}: ${kept}`));
1785
+ output.record("workspaceLogs", "kept", root, { detail: kept });
1767
1786
  continue;
1768
1787
  }
1769
1788
  trimmed += run.value.bytes;
1770
1789
  output.log(chalk.green(`Trimmed the logs of ${root} (${formatBytes(run.value.bytes)})`));
1790
+ output.record("workspaceLogs", "done", root, { bytes: run.value.bytes });
1771
1791
  }
1772
1792
  signal?.throwIfAborted();
1773
1793
  if (trimmed) output.log(chalk.dim(`Trimmed ${formatBytes(trimmed)} of workspace logs.`));
@@ -2071,6 +2091,7 @@ function readGcReport(options = {}, deps = {}) {
2071
2091
  olderThan: options.olderThan,
2072
2092
  cache: options.cache,
2073
2093
  worktrees: options.worktrees,
2094
+ measureBuildState: options.measureBuildState,
2074
2095
  json: true
2075
2096
  }, deps, {
2076
2097
  output: GC_OUTPUT,
@@ -2128,7 +2149,7 @@ async function removedWholeWorkspaceDirs(operation) {
2128
2149
  });
2129
2150
  return [...orphaned.map((entry) => entry.dir), ...deadProjects.map(workspaceDir)];
2130
2151
  }
2131
- async function collectGcReport({ olderThan = null, cache = null, worktrees = false, refresh = true, now = Date.now(), lastTouched = workspaceLastUsed } = {}, deps = {}) {
2152
+ async function collectGcReport({ olderThan = null, cache = null, worktrees = false, refresh = true, measureBuildState = true, now = Date.now(), lastTouched = workspaceLastUsed } = {}, deps = {}) {
2132
2153
  const operation = deps.operation;
2133
2154
  const env = operation?.env ?? process.env;
2134
2155
  const scope = typeof cache === "string" && cache.trim() ? cache : null;
@@ -2421,7 +2442,7 @@ async function collectGcReport({ olderThan = null, cache = null, worktrees = fal
2421
2442
  now,
2422
2443
  refresh,
2423
2444
  operation
2424
- }), operation);
2445
+ }), operation, measureBuildState);
2425
2446
  return {
2426
2447
  skipped,
2427
2448
  deadProjects,
@@ -2568,7 +2589,13 @@ async function withGcMaintenanceClaim(opts, work) {
2568
2589
  }
2569
2590
  /** Executes one already-admitted sweep with separate progress, results and exit status. */
2570
2591
  async function executeGc(opts, deps, write, claim) {
2571
- const results = createGcResults();
2592
+ const log = opts.delete || opts.idle !== void 0 ? openGcLog({
2593
+ trigger: (deps.operation?.env ?? process.env).STIM_DESKTOP_APP ? "desktop" : "manual",
2594
+ env: deps.operation?.env,
2595
+ options: gcOptionsOf(opts),
2596
+ holdKept: true
2597
+ }) : null;
2598
+ const results = createGcResults(log?.record);
2572
2599
  let failed = false;
2573
2600
  const output = {
2574
2601
  log: (line) => write("stdout", line),
@@ -2738,7 +2765,10 @@ async function pruneDeadProjects(deadProjects, output, operation) {
2738
2765
  output.log(chalk.green(`Pruned ${path}`));
2739
2766
  output.record("project", "done", path);
2740
2767
  }
2741
- for (const dir of result.removedWorkspaceDirs) output.log(chalk.dim(` removed workspace output ${dir}`));
2768
+ for (const dir of result.removedWorkspaceDirs) {
2769
+ output.log(chalk.dim(` removed workspace output ${dir}`));
2770
+ output.record("workspaceDirectory", "done", dir);
2771
+ }
2742
2772
  for (const dir of result.failedWorkspaceDirs) {
2743
2773
  output.log(chalk.red(` could not remove workspace output ${dir}`));
2744
2774
  output.record("workspaceDirectory", "failed", dir, { detail: `could not remove it while pruning ${path}` });
@@ -2804,7 +2834,8 @@ async function runGcCore(opts, deps, execution, reportOnly = false) {
2804
2834
  olderThan,
2805
2835
  cache,
2806
2836
  worktrees: Boolean(opts.worktrees),
2807
- refresh
2837
+ refresh,
2838
+ measureBuildState: opts.measureBuildState
2808
2839
  }, deps);
2809
2840
  throwIfCancelled(signal, "GC");
2810
2841
  if (cache && report.caches.length === 0 && report.workspaceOutputs === null && !selectsBeyondCaches(cache)) {