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.
- package/README.md +1 -1
- package/dist/{acquire-artifact-CEs02U2o.mjs → acquire-artifact-DVsvSwf7.mjs} +1 -1
- package/dist/{act-Cyvm8xYc.mjs → act-C-BqJEpu.mjs} +158 -36
- package/dist/{activity-Dq3ZcdD8.mjs → activity-Lnb_EoRY.mjs} +4 -5
- package/dist/{agent-device-usage-output-CccomeE0.mjs → agent-device-usage-output-DbXy5tg8.mjs} +4 -4
- package/dist/{android-CX5IcRuf.mjs → android-B5P81yI-.mjs} +1 -1
- package/dist/{android-DcztblCT.mjs → android-CSbLRD53.mjs} +5 -5
- package/dist/{android-BZppyPe_.mjs → android-CiNQw3kq.mjs} +81 -52
- package/dist/{android-882m4hxX.mjs → android-DTAcRwBC.mjs} +81 -34
- package/dist/{android-cas-BtCOrNqb.mjs → android-cas-BTVhZ0Qs.mjs} +4 -4
- package/dist/{android-project-DVWyCbWU.d.mts → android-project-DUGMbq28.d.mts} +61 -3
- package/dist/api.d.mts +8 -5
- package/dist/api.mjs +27 -27
- package/dist/apk-signed-tail-B46U9hXc.mjs +142 -0
- package/dist/{artifact-BR5VNArK.mjs → artifact-BxREhAaV.mjs} +25 -19
- package/dist/{artifact-Bdt_n9Jc.mjs → artifact-CsAP6AGK.mjs} +36 -21
- package/dist/{attempt-DW-mQqM7.mjs → attempt-ClyJlZPT.mjs} +4 -2
- package/dist/{browser-web-ycg9qWB8.mjs → browser-web-rYPyqhTf.mjs} +11 -12
- package/dist/{budget-dPGuhNai.mjs → budget-k2mZGvvk.mjs} +242 -38
- package/dist/{build-CaF574eS.mjs → build-DPhApsjV.mjs} +28 -24
- package/dist/{build-cache-HFUQ9eLz.mjs → build-cache-DrXNCy3T.mjs} +123 -23
- package/dist/{build-plan-JsDUq4w1.mjs → build-plan-DrMMdayj.mjs} +5 -5
- package/dist/{cache-manifest-BPXRONJz.mjs → cache-manifest-BEZ9Bpl1.mjs} +1 -1
- package/dist/cache-manifest.mjs +1 -1
- package/dist/{ccache-CCn1S6qG.mjs → ccache-Bx5TbxwG.mjs} +6 -6
- package/dist/{cli-xqAidP7O.mjs → cli-BBKFGOFl.mjs} +19 -19
- package/dist/cli.mjs +1 -1
- package/dist/{client-18-ZowoT.mjs → client-D9CaRks-.mjs} +55 -71
- package/dist/collector-run.mjs +4 -4
- package/dist/{command-output-DxC0k2rk.mjs → command-output-BF5AR2dL.mjs} +1 -1
- package/dist/{config-BZhXY15H.mjs → config-BktkY_zC.mjs} +321 -15
- package/dist/{launch-BVlyQw3T.mjs → dependencies-Dw6wfQdv.mjs} +259 -256
- package/dist/{dependency-state-C56ll9hY.mjs → dependency-state-DFB41vfr.mjs} +1 -1
- package/dist/{dev-client-w_fok0Ek.mjs → dev-client-DXR_tPVY.mjs} +2 -2
- package/dist/{device-BktRGdjS.mjs → device-BK-zwyd_.mjs} +64 -33
- package/dist/{device-4RUugw5X.mjs → device-BcYeHSFu.mjs} +14 -14
- package/dist/{device-capacity-Ic-kdmEV.mjs → device-capacity-DCSvUF0l.mjs} +10 -17
- package/dist/device-host-worker.mjs +11 -13
- package/dist/{device-ios-DzpSlZyd.mjs → device-ios-BLGfXQeK.mjs} +68 -25
- package/dist/{device-lease-run-DUtkbqBQ.mjs → device-lease-run-BmvIl7bI.mjs} +5 -5
- package/dist/{device-pool-CgBHk401.mjs → device-pool-Dluix4H3.mjs} +3 -3
- package/dist/{doctor-DZgpqR6J.mjs → doctor-Bhg1ii70.mjs} +14 -14
- package/dist/{doctor-BZ6oxNum.mjs → doctor-Cp-BhzTS.mjs} +1 -1
- package/dist/{doctor-C33AzVfR.mjs → doctor-OnwP94ne.mjs} +81 -26
- package/dist/{doctor-fingerprint-zlujA1Gs.mjs → doctor-fingerprint-D3a04Mhu.mjs} +8 -2
- package/dist/doctor-fingerprint.mjs +1 -1
- package/dist/{doctor-watchman-B453A231.mjs → doctor-watchman-BStK05nt.mjs} +4 -4
- package/dist/{eas-build-CxKUNHsb.mjs → eas-build-Dsj93iM9.mjs} +2 -2
- package/dist/{eas-fallback-LMxk9Kw0.mjs → eas-fallback-FwkeqqGi.mjs} +13 -12
- package/dist/{eas-session-ledger-Ck6YXPAO.mjs → eas-session-ledger-B5vygTiD.mjs} +5 -5
- package/dist/{error-diagnostics-BkKCZq4P.mjs → error-diagnostics-BOOm9Db7.mjs} +8 -8
- package/dist/{errors-ccaPc4ox.mjs → errors-DHm_U5gv.mjs} +2 -1
- package/dist/{gc-DDWEAj0w.mjs → gc-C_79zvz4.mjs} +2 -2
- package/dist/{gc-yVKpAOKM.mjs → gc-ldgr-hXU.mjs} +74 -43
- package/dist/{guide-Bggftwc5.mjs → guide-D7K0X6KG.mjs} +374 -78
- package/dist/{hosted-android-D4dweBof.mjs → hosted-android-Bk54ej6n.mjs} +3 -3
- package/dist/{hosted-client-BBTVe3X6.mjs → hosted-client-fHO8yqzc.mjs} +5 -5
- package/dist/{hosted-ios-Sn0djzg8.mjs → hosted-ios-D55QhYaD.mjs} +1 -1
- package/dist/{hosted-logs-CYIZ5ubJ.mjs → hosted-logs-BfbmDM4M.mjs} +17 -11
- package/dist/hosted-logs-sync-B0pvmOk-.mjs +195 -0
- package/dist/{hosted-macos-CXjsUNBR.mjs → hosted-macos-CPl0OZ9h.mjs} +5 -5
- package/dist/{hosted-native-Doxbfzem.mjs → hosted-native-CpDB3-PO.mjs} +6 -7
- package/dist/{idle-shutdown-BInjLKqm.mjs → idle-shutdown-FfxL1KdG.mjs} +22 -9
- package/dist/{ios-BItP6lkn.mjs → ios-B7-lToDu.mjs} +8 -8
- package/dist/{ios-CVUFFZ6C.mjs → ios-WxpDJ5T1.mjs} +129 -14
- package/dist/{ios-device-BI38NFFH.mjs → ios-device-CsyryvpT.mjs} +1 -1
- package/dist/{ios-B1FXRCMX.mjs → ios-ftxdQbJS.mjs} +84 -51
- package/dist/{ios-project-KYqeJURj.mjs → ios-project-Ty5pHl9O.mjs} +6 -6
- package/dist/{ios-state-DlElquYD.mjs → ios-state-Cw7-WQf2.mjs} +1 -1
- package/dist/{js-swap-BvrQvXHY.mjs → js-swap-BMhXYVDS.mjs} +4 -4
- package/dist/{launch-SfzGH_s9.mjs → launch-DOp8RjDz.mjs} +32 -27
- package/dist/{logs-DXE32kyb.mjs → logs-dQDki6Tt.mjs} +9 -173
- package/dist/{logs-ovlU7m7N.mjs → logs-s1dRIG1E.mjs} +85 -36
- package/dist/{macos-B3BveDrU.mjs → macos-B0VEV3Gf.mjs} +1 -1
- package/dist/{macos-CCfhb-jT.mjs → macos-DBBPNnIA.mjs} +18 -19
- package/dist/macos-run.mjs +1 -1
- package/dist/maintenance-run.mjs +28 -11
- package/dist/{metro-Bu8LBfzS.mjs → metro-CjC10t6E.mjs} +2 -2
- package/dist/{metro-gateway-DtsOy-0P.mjs → metro-gateway-B6_PgD0L.mjs} +2 -3
- package/dist/{named-ports-BWDuU5oQ.mjs → named-ports-BG0j1X4g.mjs} +2 -2
- package/dist/{native-android-96BBizbq.mjs → native-android-CL2NGiik.mjs} +17 -17
- package/dist/{native-gradle-artifact-inputs-BcLYBZil.mjs → native-gradle-artifact-inputs-btSUulme.mjs} +3 -3
- package/dist/{native-run-BmH7U8pr.mjs → native-run-BfIDFKLH.mjs} +2 -3
- package/dist/{native-runtime-DgtJkzIa.mjs → native-runtime-Dq3RBcON.mjs} +6 -7
- package/dist/{native-xcode-inputs-irplbQb0.mjs → native-xcode-inputs-BW7H8JGu.mjs} +2 -2
- package/dist/{native-xcode-ios-BY-6hh6M.mjs → native-xcode-ios-CBXJAxfC.mjs} +18 -18
- package/dist/offload-worker.d.mts +7 -2
- package/dist/offload-worker.mjs +34 -23
- package/dist/{ownership-DxlZGDcV.mjs → ownership-BjYvMNX_.mjs} +2 -2
- package/dist/{phone-reverses-BdsdesVF.mjs → phone-reverses-lmj6kcPm.mjs} +3 -3
- package/dist/{placement-log-DUvqqsB-.mjs → placement-log-DIFPQAXp.mjs} +1 -1
- package/dist/{plan-placement-4axc0Hs7.mjs → plan-placement-IiiSQhtz.mjs} +3 -3
- package/dist/{ports-D-E_OiAO.mjs → ports-C2_w1Z0Z.mjs} +3 -3
- package/dist/prebuild-gmouvmJZ.mjs +1247 -0
- package/dist/{project-Dz-hWkb-.mjs → project-BUu6Is4k.mjs} +15 -16
- package/dist/{react-native-android-DOinxgwB.mjs → react-native-android-Cgg99REN.mjs} +48 -33
- package/dist/{react-native-build-AuCu-aAP.mjs → react-native-build-oNwqF5Wb.mjs} +8 -8
- package/dist/{react-native-doctor-2ivJUmwZ.mjs → react-native-doctor-BhA3KUte.mjs} +49 -8
- package/dist/{react-native-ios-D5zTIuH8.mjs → react-native-ios-B-nf4rjN.mjs} +40 -25
- package/dist/{recordings-CdPwYwvs.mjs → recordings-BldzVKq0.mjs} +1 -1
- package/dist/{reload-Ck9RJeSq.mjs → reload-C9OduiNc.mjs} +1 -1
- package/dist/{reload-C1TTVesC.mjs → reload-CCR7KC_l.mjs} +14 -14
- package/dist/{remote-DEZ7AOVq.mjs → remote-C8S7FlPF.mjs} +16 -7
- package/dist/{result-DqBrb12U.mjs → result-7F5hEwQJ.mjs} +17 -17
- package/dist/{run-BIwoU44q.mjs → run-BqB0v3pt.mjs} +1 -1
- package/dist/{selection-BLtvaqxc.mjs → selection-BNPBZ6T5.mjs} +157 -44
- package/dist/{server-bare-Z1ToVLPn.mjs → server-bare-A75rDIdD.mjs} +55 -3
- package/dist/{server-command-C0pmjNdG.mjs → server-command-CssKFOD7.mjs} +4 -4
- package/dist/{server-expo-Tt_hLRpy.mjs → server-expo-eQfOdydb.mjs} +8 -6
- package/dist/server-expo-wvcj5tiZ.mjs +2 -0
- package/dist/{settings-RKwY33wv.mjs → settings-CosW5X-S.mjs} +59 -61
- package/dist/{settings-kkt0vP4w.mjs → settings-OaGQF-ri.mjs} +1 -1
- package/dist/{settings-write--gj6MACV.mjs → settings-write-QjYfSrjF.mjs} +5 -5
- package/dist/settings.schema.json +71 -6
- package/dist/{simslim-CdWKT3vA.mjs → simslim-Bax1qcxu.mjs} +22 -6
- package/dist/{slot-launch-A1BgotaM.mjs → slot-launch-CYCEhfBY.mjs} +6 -6
- package/dist/{stage-ERTMh88n.mjs → stage-jKQ7CP_B.mjs} +1 -1
- package/dist/{start-Bmg_qmHi.mjs → start-C_wefNKB.mjs} +1 -1
- package/dist/{start-BKGrEhzG.mjs → start-_BdJ32cZ.mjs} +9 -10
- package/dist/{state-B1ig0Kqy.mjs → state-C1i2nMOP.mjs} +2 -3
- package/dist/{state-BfAltYJP.mjs → state-C4OdpOTF.mjs} +1 -2
- package/dist/{stats-B-ckuiUg.mjs → stats-tEpEEH-u.mjs} +4 -4
- package/dist/{status-Pw-807f0.mjs → status-B9M7x4CZ.mjs} +1 -1
- package/dist/{status-Fect2w9R.mjs → status-CRXz-Gtj.mjs} +1 -1
- package/dist/{status-DfFp6a76.mjs → status-DQrqodLj.mjs} +22 -23
- package/dist/{status-watch-XC7F-AMf.mjs → status-watch-B5wDIH_o.mjs} +4 -4
- package/dist/status-worker.mjs +1 -1
- package/dist/{stim-desktop-DS0mzR8U.mjs → stim-desktop-6Dqp-gjX.mjs} +1 -1
- package/dist/{stop-BFu7X_Do.mjs → stop-CmdNhGlC.mjs} +2 -2
- package/dist/{stop-CL1kDHds.mjs → stop-DRqQVqDJ.mjs} +74 -53
- package/dist/{stop-DhclRwOO.mjs → stop-ySNQHXMG.mjs} +4 -5
- package/dist/supervisor-run.d.mts +1 -0
- package/dist/supervisor-run.mjs +15 -16
- package/dist/{support-B3tzVhKn.mjs → support-BGSCBoib.mjs} +4 -4
- package/dist/{support-B1W-hmC2.mjs → support-CVOCp0Ft.mjs} +15 -12
- package/dist/{swiftpm-artifact-inputs-BWYPj9Sn.mjs → swiftpm-artifact-inputs-CfUzt_0Z.mjs} +1 -1
- package/dist/{swiftpm-macos-BVCP5mO4.mjs → swiftpm-macos-x6HPpl_2.mjs} +10 -10
- package/dist/toolchain-DoavrvIA.mjs +2 -0
- package/dist/toolchain-J4J8MrAr.mjs +2107 -0
- package/dist/trigger-DzJu208Q.mjs +2 -0
- package/dist/{trigger-CBMe2YLH.mjs → trigger-KVaWWNyn.mjs} +1 -1
- package/dist/{warm-progress-ol0ZypEu.mjs → warm-progress-DvhTX_eu.mjs} +3 -4
- package/dist/web-BFLueSh-.mjs +2 -0
- package/dist/{web-BH7peScT.mjs → web-Bihbf7-u.mjs} +8 -9
- package/dist/web-run.mjs +4 -4
- package/dist/{workspace-state-CeBpIZgr.mjs → workspace-state-pUg3_RRA.mjs} +45 -7
- package/dist/{workspaces-CSV2Orf4.mjs → workspaces-g2lhdBXF.mjs} +17 -17
- package/dist/{worktree-Dw8kfacb.mjs → worktree-BKuklFh_.mjs} +34 -31
- package/dist/{worktree-DEDUzO_L.mjs → worktree-Bm4cb-nU.mjs} +1 -1
- package/package.json +8 -8
- package/shim/bundle-response.cjs +53 -1
- package/shim/bundle-response.d.cts +1 -1
- package/shim/expo-metro-config.cjs +23 -1
- package/dist/created-devices-D2Aca-xu.mjs +0 -52
- package/dist/paths-DQtTgsBf.mjs +0 -42
- package/dist/prebuild-DmVCf5xb.mjs +0 -501
- package/dist/server-expo-CEntXzRw.mjs +0 -2
- package/dist/toolchain-BjgKdoEf.mjs +0 -2
- package/dist/toolchain-D3bmRMia.mjs +0 -897
- package/dist/trigger-BLsHgAGR.mjs +0 -2
- package/dist/web-BdOFlTJr.mjs +0 -2
- package/dist/xcode-DHu41qQ4.mjs +0 -910
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { f as refuseNoProject, l as phaseLine } from "./command-output-
|
|
3
|
-
import {
|
|
4
|
-
import { f as projectRegistry, t as NO_PROJECT_REFUSAL } from "./project-
|
|
5
|
-
import { c as inspectStimVersions, s as compareStimVersions } from "./eas-session-ledger-
|
|
6
|
-
import { a as inspectBudget,
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { s as offloadCheck } from "./client-
|
|
10
|
-
import {
|
|
11
|
-
import { r as maintenanceStatus, t as maintenanceLine } from "./status-
|
|
12
|
-
import { a as writeIgnoreDirs, c as recordDoctorRun, i as watchedCheckouts, n as inspectNestedWorktrees, r as nestedWorktreeFinding } from "./doctor-watchman-
|
|
13
|
-
import { c as checkWorktreeStorageLayout, l as readMachineSettings, o as runDoctor } from "./doctor-
|
|
14
|
-
import { h as resolveDeviceType, v as resolveRuntime } from "./support-
|
|
1
|
+
import { Z as doctorIo, _ as loadConfig$1, p as getProject } from "./config-BktkY_zC.mjs";
|
|
2
|
+
import { f as refuseNoProject, l as phaseLine } from "./command-output-BF5AR2dL.mjs";
|
|
3
|
+
import { Nt as repoRoot, R as projectSettingsContextAsync } from "./settings-CosW5X-S.mjs";
|
|
4
|
+
import { f as projectRegistry, t as NO_PROJECT_REFUSAL } from "./project-BUu6Is4k.mjs";
|
|
5
|
+
import { c as inspectStimVersions, s as compareStimVersions } from "./eas-session-ledger-B5vygTiD.mjs";
|
|
6
|
+
import { a as inspectBudget, hr as inspectWatchmanMemory, n as budgetLine, yr as memorySweepIsScoped } from "./budget-k2mZGvvk.mjs";
|
|
7
|
+
import { H as readMemoryCulpritsAsync, V as memoryCulpritFindings, f as listAllIosSimsAsync, h as listIosRuntimesAsync, l as iosRuntimeMatches, x as pickDefaultIosCreation } from "./ios-WxpDJ5T1.mjs";
|
|
8
|
+
import { I as detectXcodeMajorAsync } from "./toolchain-J4J8MrAr.mjs";
|
|
9
|
+
import { s as offloadCheck } from "./client-D9CaRks-.mjs";
|
|
10
|
+
import { d as inspectBuildMachines, g as inspectDeviceHostMachines } from "./selection-BNPBZ6T5.mjs";
|
|
11
|
+
import { r as maintenanceStatus, t as maintenanceLine } from "./status-CRXz-Gtj.mjs";
|
|
12
|
+
import { a as writeIgnoreDirs, c as recordDoctorRun, i as watchedCheckouts, n as inspectNestedWorktrees, r as nestedWorktreeFinding } from "./doctor-watchman-BStK05nt.mjs";
|
|
13
|
+
import { c as checkWorktreeStorageLayout, l as readMachineSettings, o as runDoctor } from "./doctor-OnwP94ne.mjs";
|
|
14
|
+
import { h as resolveDeviceType, v as resolveRuntime } from "./support-CVOCp0Ft.mjs";
|
|
15
15
|
import { isJsonObject, maintenanceNdjsonFile, readHostedAppMetadata, readHostedSessions } from "@stim-cli/core/state";
|
|
16
16
|
import { dirname, join, sep } from "path";
|
|
17
17
|
import chalk from "chalk";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as readDoctorReport, i as parseDoctorPlatform, n as doctorCommand, o as shadowedStimFinding, r as doctorSuccessLines, s as toolchainReport, t as applySandboxFix } from "./doctor-
|
|
1
|
+
import { a as readDoctorReport, i as parseDoctorPlatform, n as doctorCommand, o as shadowedStimFinding, r as doctorSuccessLines, s as toolchainReport, t as applySandboxFix } from "./doctor-Bhg1ii70.mjs";
|
|
2
2
|
export { applySandboxFix, doctorCommand as default, doctorSuccessLines, parseDoctorPlatform, readDoctorReport, shadowedStimFinding, toolchainReport };
|
|
@@ -1,29 +1,28 @@
|
|
|
1
1
|
import { C as reportSignal, T as trackReportResource, t as getExecutor } from "./exec-VFRpu1iA.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { _ as loadConfig$1,
|
|
4
|
-
import { d as quotedPath, u as plural } from "./command-output-
|
|
2
|
+
import { T as workspaceDerivedData, r as readWorkspaceState$1, y as sharedBuildCache } from "./workspace-state-pUg3_RRA.mjs";
|
|
3
|
+
import { _ as loadConfig$1, it as realIo, s as configCorruptRepair, u as getConcurrencyLimits } from "./config-BktkY_zC.mjs";
|
|
4
|
+
import { d as quotedPath, u as plural } from "./command-output-BF5AR2dL.mjs";
|
|
5
5
|
import { l as gitQuietAsync, o as git } from "./operation-exec-CUZifp6Z.mjs";
|
|
6
|
-
import { r as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import { t as readDoctorFingerprint } from "./doctor-fingerprint-zlujA1Gs.mjs";
|
|
6
|
+
import { $ as settingOrigin, Dt as listWorktreesAsync, E as iosSimSlimProfileSetting, G as resolveAndroidLayout, H as remoteAndroidSetting, Ht as filesystemDevice, Kt as temporaryRoot, L as projectSettingsContext, Lt as resolveSourceCheckoutAsync, Nt as repoRoot, O as mergeSettingsLayers, Pt as repoRootAsync, T as iosSimSlimDefaultSetting, Ut as makeTemporaryDirectory, W as remoteIosSetting, X as resolveSettings, a as SETTING_SHAPE_REMEDY, at as unknownSettingKeys, gt as dirtyFingerprintFiles, i as SETTINGS_WITH_RESOLVE_TIME_FALLBACK, kt as locallyKnownUpstreamAsync, m as defaultAndroidLayout, nt as settingValueAt, ot as webSettings, q as resolveIosProjectDir, r as PATH_SETTINGS, rt as settingsLayers, tt as settingShapeErrors, yt as gitCommonDirAsync } from "./settings-CosW5X-S.mjs";
|
|
7
|
+
import { C as resolvePackageJson, _ as appProjectProblem, b as isPackageResolvable, v as detectIsExpo } from "./project-BUu6Is4k.mjs";
|
|
8
|
+
import { ft as POOL_SETTING_REMEDY, k as hostSystemImageArch, o as androidHome, vt as parkedMaxSetting } from "./android-DTAcRwBC.mjs";
|
|
9
|
+
import { Jt as readInstalledEasCliVersionAsync, Qn as providerFromConfig, Zn as ownerFromConfig, cr as easCliSupport, er as resolveEasCliBin, lr as easCliUpgradeRemedy, qn as checkEasAuth$1, sr as MIN_EAS_CLI_SIMULATOR_VERSION } from "./budget-k2mZGvvk.mjs";
|
|
10
|
+
import { R as listBuildSlots } from "./workspaces-g2lhdBXF.mjs";
|
|
11
|
+
import { N as listBuildLocks } from "./activity-Lnb_EoRY.mjs";
|
|
12
|
+
import { o as diffFingerprintSources, p as fingerprintProject } from "./build-cache-DrXNCy3T.mjs";
|
|
13
|
+
import { P as hostMemoryPressureAdvice, R as readHostMemoryPressureAsync } from "./ios-WxpDJ5T1.mjs";
|
|
14
|
+
import { p as resolveOptimizations, u as compilerCacheFallbackMessage } from "./errors-DHm_U5gv.mjs";
|
|
15
|
+
import { i as projectCmakeLauncher } from "./ccache-Bx5TbxwG.mjs";
|
|
16
|
+
import { Y as podInstallCommand } from "./toolchain-J4J8MrAr.mjs";
|
|
17
|
+
import { g as androidPathRoomRemedy, i as ccacheEnabled, l as androidSdkRefusal, m as androidPathRoomMessage, p as androidPathRoom, t as apkOutputsDir } from "./react-native-build-oNwqF5Wb.mjs";
|
|
18
|
+
import { a as countLiveOwnedDevicesAsync, i as countLiveOwnedDevices } from "./device-capacity-DCSvUF0l.mjs";
|
|
19
|
+
import { t as readDoctorFingerprint } from "./doctor-fingerprint-D3a04Mhu.mjs";
|
|
21
20
|
import { i as probeSigningIdentities } from "./ios-signing-4c_qXvQm.mjs";
|
|
22
21
|
import { a as findChrome, t as CHROME_INSTALL_REMEDY } from "./chrome-BvV8ssI3.mjs";
|
|
23
|
-
import { i as installedNpmTreeIsValidAsync, n as hasInstalledDependencies, t as dependencyState } from "./dependency-state-
|
|
24
|
-
import { n as simslimIsOnPath } from "./simslim-
|
|
25
|
-
import { t as MIN_EAS_CLI_BUILD_DOWNLOAD_VERSION } from "./eas-build-
|
|
26
|
-
import { r as resolveAndroidCompilerCache, t as readAndroidCasToolchain } from "./android-cas-
|
|
22
|
+
import { i as installedNpmTreeIsValidAsync, n as hasInstalledDependencies, t as dependencyState } from "./dependency-state-DFB41vfr.mjs";
|
|
23
|
+
import { n as simslimIsOnPath } from "./simslim-Bax1qcxu.mjs";
|
|
24
|
+
import { t as MIN_EAS_CLI_BUILD_DOWNLOAD_VERSION } from "./eas-build-Dsj93iM9.mjs";
|
|
25
|
+
import { r as resolveAndroidCompilerCache, t as readAndroidCasToolchain } from "./android-cas-BTVhZ0Qs.mjs";
|
|
27
26
|
import { existsSync, lstatSync, readFileSync, readdirSync, realpathSync, rmSync } from "node:fs";
|
|
28
27
|
import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
29
28
|
import { LAST_BUILD_KEYS, isJsonObject, readBuildHistory, readJsonObject, readStats, settingDefinition } from "@stim-cli/core/state";
|
|
@@ -706,8 +705,12 @@ async function projectEasBuildDownloadFinding(projectRoot, remoteBackends, looku
|
|
|
706
705
|
readEasCliVersion: () => version
|
|
707
706
|
});
|
|
708
707
|
}
|
|
709
|
-
function checkSimSlim({ configured = false, profileError = null, onPath = false } = {}) {
|
|
708
|
+
function checkSimSlim({ configured = false, slimByDefault = false, profileError = null, onPath = false } = {}) {
|
|
710
709
|
if (profileError) return finding("cost", "The SimSlim profile is invalid", profileError, "Set ios.simslimProfile to a readable JSON profile inside the repository.");
|
|
710
|
+
if (!configured && slimByDefault) {
|
|
711
|
+
if (onPath) return null;
|
|
712
|
+
return finding("cost", "ios.simslim is on, but SimSlim is not installed", "`stim ios` boots owned simulators without SimSlim until the `simslim` command is installed.", "brew install mobai-app/tap/simslim");
|
|
713
|
+
}
|
|
711
714
|
if (!configured) return finding("note", "SimSlim is recommended for parallel iOS simulator work", "A reviewed profile can reduce background simulator services and memory use. It is optional: disabling services can affect tests that depend on them, and installing the binary alone does not apply a profile.", "Run `stim guide lifecycle simslim` to install SimSlim and configure ios.simslimProfile. Stim does not enable a profile through doctor --fix.");
|
|
712
715
|
if (onPath) return null;
|
|
713
716
|
return finding("cost", "A SimSlim profile is configured, but SimSlim is not installed", "`stim ios` needs the `simslim` command to apply the profile to its owned simulator.", "brew install mobai-app/tap/simslim");
|
|
@@ -780,10 +783,12 @@ async function runDoctor(projectRoot, options = {}, inspectors = []) {
|
|
|
780
783
|
} catch (error) {
|
|
781
784
|
simslimProfileError = String(error?.message || error);
|
|
782
785
|
}
|
|
786
|
+
const simslimByDefault = localIos && iosSimSlimDefaultSetting(projectSettings);
|
|
783
787
|
const simslimFinding = !localIos || !simslimProfile && !simslimProfileError && remoteIosSetting(projectSettings) ? null : checkSimSlim({
|
|
784
788
|
configured: Boolean(simslimProfile),
|
|
789
|
+
slimByDefault: simslimByDefault,
|
|
785
790
|
profileError: simslimProfileError,
|
|
786
|
-
onPath: simslimProfile ? lookupSimSlim ? lookupSimSlim() : simslimIsOnPath() : false
|
|
791
|
+
onPath: simslimProfile || simslimByDefault ? lookupSimSlim ? lookupSimSlim() : simslimIsOnPath() : false
|
|
787
792
|
});
|
|
788
793
|
const memoryAdvice = localIos && !remoteIosSetting(projectSettings) ? hostMemoryPressureAdvice(await memoryPressure()) : null;
|
|
789
794
|
const shared = [
|
|
@@ -868,8 +873,9 @@ async function reactNativeDoctorFindings({ root: projectRoot, settings: projectS
|
|
|
868
873
|
readEasCliVersion: () => remoteVersion
|
|
869
874
|
})).filter((remoteFinding) => remoteFinding !== null);
|
|
870
875
|
const easBuildDownloadFinding = await projectEasBuildDownloadFinding(projectRoot, remoteBackends, lookupEasCli, options.operation);
|
|
876
|
+
const appProjectFinding = checkAppProject(projectRoot);
|
|
871
877
|
return [
|
|
872
|
-
|
|
878
|
+
appProjectFinding,
|
|
873
879
|
checkIosHost(platform, host),
|
|
874
880
|
checkXcodeEnvLineEndings(projectRoot, platform, host),
|
|
875
881
|
...checkStorageLayout(projectRoot, {
|
|
@@ -893,7 +899,8 @@ async function reactNativeDoctorFindings({ root: projectRoot, settings: projectS
|
|
|
893
899
|
easFinding,
|
|
894
900
|
easBuildDownloadFinding,
|
|
895
901
|
await readOffloadCandidate(tailnetStatus, now(), host),
|
|
896
|
-
...remoteFindings
|
|
902
|
+
...remoteFindings,
|
|
903
|
+
appProjectFinding ? null : checkReadinessMarkers(projectRoot)
|
|
897
904
|
].filter((value) => Boolean(value));
|
|
898
905
|
}
|
|
899
906
|
function checkAndroidPathRoom(projectRoot, platform, host, hostArch = process.arch) {
|
|
@@ -948,6 +955,54 @@ function checkAppProject(projectRoot) {
|
|
|
948
955
|
if (problem.kind === "not-an-app") result.code = "not-an-app";
|
|
949
956
|
return result;
|
|
950
957
|
}
|
|
958
|
+
const READINESS_MARKER = "[stim:readiness]";
|
|
959
|
+
const READINESS_SCAN_LIMIT = 5e3;
|
|
960
|
+
const READINESS_SKIPPED_DIRS = /* @__PURE__ */ new Set([
|
|
961
|
+
"node_modules",
|
|
962
|
+
"ios",
|
|
963
|
+
"android",
|
|
964
|
+
"macos",
|
|
965
|
+
"windows",
|
|
966
|
+
"Pods",
|
|
967
|
+
"build",
|
|
968
|
+
"dist",
|
|
969
|
+
"web-build",
|
|
970
|
+
"coverage"
|
|
971
|
+
]);
|
|
972
|
+
const JS_SOURCE = /\.[cm]?[jt]sx?$/;
|
|
973
|
+
function hasReadinessMarker(projectRoot) {
|
|
974
|
+
const dirs = [projectRoot];
|
|
975
|
+
let scanned = 0;
|
|
976
|
+
for (let dir = dirs.pop(); dir !== void 0; dir = dirs.pop()) {
|
|
977
|
+
let entries;
|
|
978
|
+
try {
|
|
979
|
+
entries = readdirSync$1(dir, { withFileTypes: true });
|
|
980
|
+
} catch {
|
|
981
|
+
continue;
|
|
982
|
+
}
|
|
983
|
+
for (const entry of entries) {
|
|
984
|
+
if (entry.name.startsWith(".")) continue;
|
|
985
|
+
const path = join$1(dir, entry.name);
|
|
986
|
+
if (entry.isDirectory()) {
|
|
987
|
+
if (!READINESS_SKIPPED_DIRS.has(entry.name)) dirs.push(path);
|
|
988
|
+
continue;
|
|
989
|
+
}
|
|
990
|
+
if (!entry.isFile() || !JS_SOURCE.test(entry.name)) continue;
|
|
991
|
+
if (++scanned > READINESS_SCAN_LIMIT) return null;
|
|
992
|
+
try {
|
|
993
|
+
if (readFileSync$1(path, "utf-8").includes(READINESS_MARKER)) return true;
|
|
994
|
+
} catch {}
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
return false;
|
|
998
|
+
}
|
|
999
|
+
function checkReadinessMarkers(projectRoot) {
|
|
1000
|
+
if (hasReadinessMarker(projectRoot) !== false) return null;
|
|
1001
|
+
return {
|
|
1002
|
+
code: "readiness-markers-missing",
|
|
1003
|
+
...finding("note", "The app does not report readiness to Stim", `No \`${READINESS_MARKER}\` marker appears in this app's JavaScript or TypeScript sources outside node_modules. A debug \`stim ios\` or \`stim android\` launch then ends shortly after the app's JavaScript starts running, before the app is usable, and a later startup error shows only in \`stim logs --errors\`.`, "In debug builds, log `[stim:readiness] pending` from the first module the app's entry loads, before the root component, and `[stim:readiness] ready` once the app is usable. `stim guide lifecycle readiness` has the code.")
|
|
1004
|
+
};
|
|
1005
|
+
}
|
|
951
1006
|
function agentDeviceIsOnPath() {
|
|
952
1007
|
try {
|
|
953
1008
|
return Boolean(getExecutor().findExecutable("agent-device"));
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import { t as getExecutor } from "./exec-VFRpu1iA.mjs";
|
|
2
|
+
import { setPriority } from "node:os";
|
|
2
3
|
import { fileURLToPath } from "node:url";
|
|
3
4
|
//#region src/doctor-fingerprint.ts
|
|
4
|
-
async function readDoctorFingerprint(operation, request) {
|
|
5
|
+
async function readDoctorFingerprint(operation, request, { lowPriority = false } = {}) {
|
|
5
6
|
const output = await getExecutor().runFileAsync(process.execPath, [fileURLToPath(new URL("../dist/doctor-fingerprint.mjs", import.meta.url))], {
|
|
6
7
|
cwd: operation.cwd,
|
|
7
8
|
env: Object.fromEntries(Object.entries(operation.env).filter((entry) => entry[1] !== void 0)),
|
|
8
9
|
input: JSON.stringify(request),
|
|
9
10
|
timeoutMs: 6e4,
|
|
10
11
|
killSignal: "SIGKILL",
|
|
11
|
-
signal: operation.signal
|
|
12
|
+
signal: operation.signal,
|
|
13
|
+
...lowPriority ? { onSpawn: (child) => {
|
|
14
|
+
try {
|
|
15
|
+
if (child.pid) setPriority(child.pid, 10);
|
|
16
|
+
} catch {}
|
|
17
|
+
} } : {}
|
|
12
18
|
});
|
|
13
19
|
return JSON.parse(output);
|
|
14
20
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { E as upsertProject, O as withConfigLockAsync$1, d as getConfigDir, p as getProject } from "./config-
|
|
1
|
+
import { E as upsertProject, O as withConfigLockAsync$1, d as getConfigDir, p as getProject } from "./config-BktkY_zC.mjs";
|
|
2
2
|
import { l as gitQuietAsync } from "./operation-exec-CUZifp6Z.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { f as projectRegistry } from "./project-
|
|
5
|
-
import { d as parseWatchRoots, m as runWatchman, s as compareStimVersions } from "./eas-session-ledger-
|
|
3
|
+
import { Dt as listWorktreesAsync, Pt as repoRootAsync } from "./settings-CosW5X-S.mjs";
|
|
4
|
+
import { f as projectRegistry } from "./project-BUu6Is4k.mjs";
|
|
5
|
+
import { d as parseWatchRoots, m as runWatchman, s as compareStimVersions } from "./eas-session-ledger-B5vygTiD.mjs";
|
|
6
6
|
import { mkdirSync, readFileSync, realpathSync, renameSync, rmSync, unlinkSync, writeFileSync } from "node:fs";
|
|
7
7
|
import { dirname, isAbsolute, join, relative, sep } from "node:path";
|
|
8
8
|
import { isJsonObject } from "@stim-cli/core/state";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { D as ownership_claim_exports, c as throwIfCancelled, t as getExecutor } from "./exec-VFRpu1iA.mjs";
|
|
2
2
|
import { a as killOnAbort, r as childEnvironment } from "./operation-exec-CUZifp6Z.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { M as acquireBuildLock, P as releaseBuildLock } from "./activity-
|
|
3
|
+
import { cr as easCliSupport, er as resolveEasCliBin, ir as remoteCliInvocation, lr as easCliUpgradeRemedy } from "./budget-k2mZGvvk.mjs";
|
|
4
|
+
import { M as acquireBuildLock, P as releaseBuildLock } from "./activity-Lnb_EoRY.mjs";
|
|
5
5
|
import { createHash } from "node:crypto";
|
|
6
6
|
import { existsSync, realpathSync, statSync } from "node:fs";
|
|
7
7
|
//#region src/engine/eas-build.ts
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { c as throwIfCancelled, t as getExecutor } from "./exec-VFRpu1iA.mjs";
|
|
2
|
-
import { _ as loadConfig$1, p as getProject } from "./config-
|
|
2
|
+
import { _ as loadConfig$1, p as getProject } from "./config-BktkY_zC.mjs";
|
|
3
3
|
import { r as childEnvironment } from "./operation-exec-CUZifp6Z.mjs";
|
|
4
|
-
import {
|
|
5
|
-
import { M as readMetroTunnel, P as readRemoteSession } from "./project-
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { c as call, l as connectHost, p as requireHostedAppMode } from "./hosted-client-
|
|
10
|
-
import { c as writeHostedNativeAsync, r as readHostedNative } from "./ios-state-
|
|
11
|
-
import { i as prepareHostedNative } from "./hosted-native-
|
|
12
|
-
import { c as peekDeviceSlots } from "./device-capacity-
|
|
4
|
+
import { lt as detectProviders, ut as planMetroReach } from "./settings-CosW5X-S.mjs";
|
|
5
|
+
import { M as readMetroTunnel, P as readRemoteSession } from "./project-BUu6Is4k.mjs";
|
|
6
|
+
import { Jt as readInstalledEasCliVersionAsync, Yn as isEasAuthFailureText, ar as remoteCommand, cr as easCliSupport, er as resolveEasCliBin, or as MIN_EAS_CLI_DEVICE_VERSION, s as peekBudget, sr as MIN_EAS_CLI_SIMULATOR_VERSION } from "./budget-k2mZGvvk.mjs";
|
|
7
|
+
import { R as readHostMemoryPressureAsync } from "./ios-WxpDJ5T1.mjs";
|
|
8
|
+
import { c as resolveBuildMachine, h as hostingMachines, i as namedBuildMachine } from "./selection-BNPBZ6T5.mjs";
|
|
9
|
+
import { c as call, l as connectHost, p as requireHostedAppMode } from "./hosted-client-fHO8yqzc.mjs";
|
|
10
|
+
import { c as writeHostedNativeAsync, r as readHostedNative } from "./ios-state-Cw7-WQf2.mjs";
|
|
11
|
+
import { i as prepareHostedNative } from "./hosted-native-CpDB3-PO.mjs";
|
|
12
|
+
import { c as peekDeviceSlots } from "./device-capacity-DCSvUF0l.mjs";
|
|
13
13
|
import { ambientEnv } from "@stim-cli/core";
|
|
14
14
|
import { automaticMachineEnabled, isJsonObject, machineCapacity, parseHostedChoice, parseHostedNativeOffer } from "@stim-cli/core/state";
|
|
15
15
|
//#region src/device-host/placement.ts
|
|
@@ -219,10 +219,11 @@ function viaEas(code, reason, skipped) {
|
|
|
219
219
|
skipped
|
|
220
220
|
};
|
|
221
221
|
}
|
|
222
|
-
async function automaticDevicePlacement({ root, slot, platform, selectors, appMode, buildMachine, noWait, eas, signal }, { machines = () => hostingMachines(void 0, signal), read = readHostedNative, write = writeHostedNativeAsync, resume = prepareHostedNative, peek = () => peekDeviceSlots({
|
|
222
|
+
async function automaticDevicePlacement({ root, slot, platform, selectors, appMode, buildMachine, noWait, eas, signal, localSims }, { machines = () => hostingMachines(void 0, signal), read = readHostedNative, write = writeHostedNativeAsync, resume = prepareHostedNative, peek = () => peekDeviceSlots({
|
|
223
223
|
platform,
|
|
224
224
|
project: getProject(root),
|
|
225
|
-
slot
|
|
225
|
+
slot,
|
|
226
|
+
...localSims ? { sources: { sims: localSims } } : {}
|
|
226
227
|
}), capacity = machineCapacity, memory = () => readHostMemoryPressureAsync(void 0, void 0, signal), probe = probeHost, budget = (projectRoot) => peekBudget(projectRoot, {}, ambientEnv(), signal) } = {}) {
|
|
227
228
|
const recorded = read(root, platform, slot)[slot];
|
|
228
229
|
if (recorded) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { C as reportSignal, t as getExecutor } from "./exec-VFRpu1iA.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { G as projectDeviceSlots, V as deviceSlotKey } from "./config-
|
|
4
|
-
import { a as formatElapsed, o as formatLongDuration, r as clockTime, u as plural } from "./command-output-
|
|
5
|
-
import { n as isInsideProject } from "./metro-
|
|
6
|
-
import { r as cdpEndpoint } from "./state-
|
|
2
|
+
import { M as withDirLock$1, N as withDirLockAsync$1, w as workspaceAgentDeviceDir } from "./workspace-state-pUg3_RRA.mjs";
|
|
3
|
+
import { G as projectDeviceSlots, V as deviceSlotKey } from "./config-BktkY_zC.mjs";
|
|
4
|
+
import { a as formatElapsed, o as formatLongDuration, r as clockTime, u as plural } from "./command-output-BF5AR2dL.mjs";
|
|
5
|
+
import { n as isInsideProject } from "./metro-CjC10t6E.mjs";
|
|
6
|
+
import { r as cdpEndpoint } from "./state-C1i2nMOP.mjs";
|
|
7
7
|
import { accessSync, constants, existsSync, mkdirSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
8
8
|
import { delimiter, dirname, join, resolve } from "node:path";
|
|
9
9
|
import { workspaceId } from "@stim-cli/core";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { t as getExecutor } from "./exec-VFRpu1iA.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { I as readWorkspaceLaunches } from "./project-
|
|
6
|
-
import { o as androidHome, u as androidToolCwd } from "./android-
|
|
7
|
-
import { d as resolveProjectMetro } from "./metro-
|
|
8
|
-
import { i as parseLogcatLine, n as androidLogGroups, r as isAndroidCrashText } from "./android-
|
|
9
|
-
import { S as parseLease, v as deviceLeasePath, y as fileLeaseIo } from "./activity-
|
|
2
|
+
import { r as readWorkspaceState$1 } from "./workspace-state-pUg3_RRA.mjs";
|
|
3
|
+
import { H as deviceSlotPlatforms, V as deviceSlotKey, p as getProject } from "./config-BktkY_zC.mjs";
|
|
4
|
+
import { v as launchErrorPreview } from "./command-output-BF5AR2dL.mjs";
|
|
5
|
+
import { I as readWorkspaceLaunches } from "./project-BUu6Is4k.mjs";
|
|
6
|
+
import { o as androidHome, u as androidToolCwd } from "./android-DTAcRwBC.mjs";
|
|
7
|
+
import { d as resolveProjectMetro } from "./metro-CjC10t6E.mjs";
|
|
8
|
+
import { i as parseLogcatLine, n as androidLogGroups, r as isAndroidCrashText } from "./android-B5P81yI-.mjs";
|
|
9
|
+
import { S as parseLease, v as deviceLeasePath, y as fileLeaseIo } from "./activity-Lnb_EoRY.mjs";
|
|
10
10
|
import { r as deviceConsoleLevel } from "./ios-device-B6HK951C.mjs";
|
|
11
11
|
import { createHash, randomUUID } from "node:crypto";
|
|
12
12
|
import { existsSync, readFileSync, renameSync } from "node:fs";
|
|
@@ -179,11 +179,12 @@ function metroStoreConfirmedRoot(line) {
|
|
|
179
179
|
const root = line.slice(51).trim();
|
|
180
180
|
return root === "" ? null : root;
|
|
181
181
|
}
|
|
182
|
-
function expoMetroStoreEnv({ root, storeRoot, adapterPath, existingOverride }) {
|
|
182
|
+
function expoMetroStoreEnv({ root, port, storeRoot, adapterPath, existingOverride }) {
|
|
183
183
|
return {
|
|
184
184
|
EXPO_OVERRIDE_METRO_CONFIG: adapterPath,
|
|
185
185
|
STIM_METRO_STORE: storeRoot,
|
|
186
186
|
STIM_PROJECT_ROOT: root,
|
|
187
|
+
STIM_METRO_PORT: String(port),
|
|
187
188
|
...existingOverride ? { STIM_EXPO_METRO_CONFIG: existingOverride } : {}
|
|
188
189
|
};
|
|
189
190
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { At as
|
|
2
|
-
import { a as runGc, i as readGcReport, n as executeGc, o as withGcMaintenanceClaim, r as gcCommand, s as formatGcReport, t as collectGcReport } from "./gc-
|
|
1
|
+
import { At as describeUnverifiableDevices, Dt as deleteParkedSims, Ft as findStaleProjectDevices, Nt as findOrphanedDevices, Pt as findStaleDeviceRecords, kt as describeParkedSims, ut as selectCaches } from "./budget-k2mZGvvk.mjs";
|
|
2
|
+
import { a as runGc, i as readGcReport, n as executeGc, o as withGcMaintenanceClaim, r as gcCommand, s as formatGcReport, t as collectGcReport } from "./gc-ldgr-hXU.mjs";
|
|
3
3
|
export { collectGcReport, gcCommand as default, deleteParkedSims, describeParkedSims, describeUnverifiableDevices, executeGc, findOrphanedDevices, findStaleDeviceRecords, findStaleProjectDevices, formatGcReport, readGcReport, runGc, selectCaches, withGcMaintenanceClaim };
|
|
@@ -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 {
|
|
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-
|
|
4
|
-
import { d as quotedPath$1, h as shortUdid, o as formatLongDuration, u as plural } from "./command-output-
|
|
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 {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { n as easMachineStateRoot$1, o as removeEasSessionClaimAsync, r as readEasSessionLedger$1 } from "./eas-session-ledger-Ck6YXPAO.mjs";
|
|
12
|
-
import { $ as includesArchives, At as findStaleDeviceRecords, C as collectIdleDevices, 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, Rn as runProcessOperation, Sr as discoverCaches, St as deleteParkedAvds, _r as scopedMemoryReport, _t as collectInventory, at as previewScopedEmptying, bt as collectParkedAvds, ct as trimCaches, dr as memoryCacheKind, dt as deleteGradleVersions, et as includesParkedDevices, fr as memoryLines, ft as gradleVersionLines, gr as reclaimMemory, gt as getMachineCacheReport, hr as memoryWorkPending, it as planCacheEmptying, jt as findStaleProjectDevices, k as shutDownIdleDevices, kt as findOrphanedDevices, lr as collectMemoryReport, lt as collectGradleVersions, mr as memorySweepIsScoped, mt as includesGradleVersions, nt as includesWorkspaceOutputs, or as parseArchiveSelector, ot as selectCaches, pr as memoryScope, pt as gradleVersionsPending, rt as isWorkspacesScope, st as selectsBeyondCaches, tt as includesRecordings, vt as DEVICE_LIST_TIMEOUT_MS, w as collectIdleDevicesAsync, wr as sizeCaches, wt as deleteProjectDevices, xt as collectParkedSims, yr as phase, yt as collectDeviceLeases } from "./budget-dPGuhNai.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-
|
|
15
|
-
import { N as listBuildLocks, k as removeExpiredLease } from "./activity-
|
|
16
|
-
import { d as listAllIosSims, f as listAllIosSimsAsync } from "./ios-
|
|
17
|
-
import { r as readCollectors } from "./ownership-
|
|
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-
|
|
19
|
-
import { s as writeCacheFile } from "./warm-progress-
|
|
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-
|
|
21
|
-
import { i as getSwiftpmCacheUsage, n as swiftpmCacheLines, r as getAgentDeviceUsage, t as agentDeviceLines } from "./agent-device-usage-output-
|
|
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))
|
|
152
|
-
|
|
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).
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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)
|
|
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)) {
|