stim 1.37.0 → 1.38.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/dist/{acquire-artifact-zBUbPuDP.mjs → acquire-artifact-QKPDkesw.mjs} +1 -1
- package/dist/{act-BGAFjY8f.mjs → act-Bh3t-NuH.mjs} +23 -29
- package/dist/{activity-CdpXXSq2.mjs → activity-CANftndU.mjs} +3 -3
- package/dist/{agent-device-usage-output-D0582GHy.mjs → agent-device-usage-output-CuROXefb.mjs} +3 -3
- package/dist/{android-CGctfYpv.mjs → android-27_JgJ1T.mjs} +3 -3
- package/dist/{android-CaSsewbu.mjs → android-Biwc4Dck.mjs} +5 -5
- package/dist/{android-BPBARZMR.mjs → android-DGLG_VQ3.mjs} +1 -1
- package/dist/{android-BBwLpxRh.mjs → android-Z6Eev9rL.mjs} +44 -38
- package/dist/{android-cas-p8gna03x.mjs → android-cas-BDAwwL82.mjs} +2 -2
- package/dist/{android-image-DY8KxK2m.mjs → android-image-BcUD6bPi.mjs} +2 -2
- package/dist/api.d.mts +2 -2
- package/dist/api.mjs +25 -25
- package/dist/{apk-signed-tail-BMv-KLcB.mjs → apk-signed-tail-DHMkXs4s.mjs} +2 -2
- package/dist/{artifact-BsimBWxG.mjs → artifact-Dc1GsK7o.mjs} +28 -14
- package/dist/{artifact-BrNZTZtA.mjs → artifact-sGoFVK1q.mjs} +11 -11
- package/dist/{auto-placement-CFKNrWLU.mjs → auto-placement-RNh4kx2T.mjs} +6 -6
- package/dist/{browser-web-YFsgCP_a.mjs → browser-web-7Oj57Roa.mjs} +10 -10
- package/dist/{build-DIhuoozz.mjs → build-DkE5vjp1.mjs} +22 -22
- package/dist/{build-cache-Dt-dhCJF.mjs → build-cache-CJ65Efv7.mjs} +7 -4
- package/dist/{build-plan-CgnLDof9.mjs → build-plan-DWajg5l_.mjs} +7 -6
- package/dist/{cli-BGUrlSH3.mjs → cli-BSlwv9hI.mjs} +18 -18
- package/dist/cli.mjs +1 -1
- package/dist/{client-DU6dnGX1.mjs → client-qwmHFSga.mjs} +12 -8
- package/dist/collector-run.mjs +3 -3
- package/dist/{command-output-ByEmIwur.mjs → command-output-DsjhOzJ3.mjs} +1 -1
- package/dist/{dependencies-BozoTBqa.mjs → dependencies-oku1ZLep.mjs} +76 -41
- package/dist/{dependency-state-BQeC4FVn.mjs → dependency-state-CBhPJAs_.mjs} +1 -1
- package/dist/{dev-client-3SQzMRXZ.mjs → dev-client-DL5UtVdx.mjs} +2 -2
- package/dist/{device-DGMvzoZZ.mjs → device-CxMwX0VO.mjs} +15 -14
- package/dist/{device-android-CBat355q.mjs → device-android-CSlBXuh_.mjs} +7 -7
- package/dist/{device-capacity-DWUOvY13.mjs → device-capacity-D_IlxZRL.mjs} +78 -31
- package/dist/device-host-worker.mjs +24 -12
- package/dist/{device-pool-B8IqZKqm.mjs → device-pool-BEaTdtss.mjs} +2 -2
- package/dist/{device-provision-DWAoSKEw.mjs → device-provision-C9NPdCne.mjs} +8 -8
- package/dist/{device-BIg1iExg.mjs → device-yfuJ-v4s.mjs} +9 -9
- package/dist/{doctor-CxgR5vPi.mjs → doctor-BAA3zN5U.mjs} +1 -1
- package/dist/{doctor-CPzwqcXY.mjs → doctor-BQ1Kl44s.mjs} +13 -19
- package/dist/{doctor-Bknt0121.mjs → doctor-QNzDE4aW.mjs} +18 -18
- package/dist/doctor-fingerprint.mjs +1 -1
- package/dist/{doctor-watchman-CPE4C8KV.mjs → doctor-watchman-B8e3s9ko.mjs} +3 -3
- package/dist/{eas-build-CwOXKJwa.mjs → eas-build-4rg9WpEg.mjs} +2 -2
- package/dist/{eas-fallback-Cnb12a50.mjs → eas-fallback-UGo0SG7T.mjs} +3 -3
- package/dist/{eas-session-ledger-TE1miVz5.mjs → eas-session-ledger-BDpSdFDM.mjs} +4 -4
- package/dist/{error-diagnostics-CXTT3bYC.mjs → error-diagnostics-CW9xl6ot.mjs} +7 -7
- package/dist/{gc-0jdcnDHs.mjs → gc-3DHVCn-k.mjs} +49 -33
- package/dist/{gc-1ZLq1djg.mjs → gc-BQ5dXnC7.mjs} +2 -2
- package/dist/{guide-COxIANZu.mjs → guide-DqJCc4vW.mjs} +138 -43
- package/dist/{hosted-android-D8JbIzgC.mjs → hosted-android-gwLspaz6.mjs} +3 -3
- package/dist/{hosted-client-BLwuXEZS.mjs → hosted-client-B_h_bTlz.mjs} +2 -2
- package/dist/{hosted-logs-BWEQNJx_.mjs → hosted-logs-BpQSRDRU.mjs} +15 -8
- package/dist/{hosted-logs-sync-uWSrH2mf.mjs → hosted-logs-sync-D3L1hDpM.mjs} +5 -5
- package/dist/{hosted-macos-BnCYAv1y.mjs → hosted-macos-GK4O1s7x.mjs} +5 -5
- package/dist/{hosted-native-OBT2sJxn.mjs → hosted-native-B6ur_0OJ.mjs} +7 -7
- package/dist/{ios-Bjz7aPLy.mjs → ios-Bi0bQiZ_.mjs} +8 -8
- package/dist/{ios-BveW7qK1.mjs → ios-DQEzde6f.mjs} +9 -6
- package/dist/{ios-CGyx4PA7.mjs → ios-M7nRVb33.mjs} +94 -32
- package/dist/{ios-device-ByrDWSpC.mjs → ios-device-BLm1BZB4.mjs} +1 -1
- package/dist/{ios-project-XHg87vyQ.mjs → ios-project-Bsm-eqwv.mjs} +6 -6
- package/dist/ios-runtime-DLiKoOkd.mjs +150 -0
- package/dist/{ios-signing-CRYQ1W42.mjs → ios-signing-rWR_Mu5Z.mjs} +1 -1
- package/dist/{ios-state-enWc5P6U.mjs → ios-state-tzD0s7pt.mjs} +1 -1
- package/dist/{js-swap-C6vl3vEd.mjs → js-swap-Cuky0ZAQ.mjs} +5 -5
- package/dist/{launch-f3RnbFW5.mjs → launch-B-pkNlqg.mjs} +17 -17
- package/dist/{lightened-Cdfmo8MO.mjs → lightened-KHWHmzGs.mjs} +4 -4
- package/dist/{logs-x3em2-oI.mjs → logs-B0etn-BD.mjs} +6 -6
- package/dist/{logs-DAjxBF3c.mjs → logs-HomiqPhV.mjs} +4 -4
- package/dist/{macos-ZfpWlzBO.mjs → macos-C5liDnbP.mjs} +1 -1
- package/dist/macos-run.mjs +1 -1
- package/dist/{macos-D_LAseN9.mjs → macos-zMxSibx5.mjs} +18 -19
- package/dist/maintenance-run.mjs +4 -4
- package/dist/{metro-TIQ1Wft-.mjs → metro-Cj6W4qOO.mjs} +1 -1
- package/dist/{metro-request-DcUxyaq8.mjs → metro-request-BWCl3Zco.mjs} +1 -1
- package/dist/{prebuild-BKkj3OyL.mjs → miss-reason-CeHvzeVm.mjs} +10 -270
- package/dist/{named-ports-BfEMi9bK.mjs → named-ports-DZ8DrkH1.mjs} +1 -1
- package/dist/{native-android-COOrNDk2.mjs → native-android-DtWLzg6g.mjs} +15 -15
- package/dist/{native-gradle-artifact-inputs-B4Mwydmf.mjs → native-gradle-artifact-inputs-D4w20_6d.mjs} +3 -3
- package/dist/{native-runtime-UxUBU8up.mjs → native-runtime-BfvvAJLd.mjs} +6 -6
- package/dist/{native-xcode-inputs-DUv7Q3ok.mjs → native-xcode-inputs-BHvnAq4o.mjs} +2 -2
- package/dist/{native-xcode-ios-DXcteLVi.mjs → native-xcode-ios-CYxrg_kK.mjs} +15 -15
- package/dist/offload-worker.mjs +19 -18
- package/dist/{ownership-CQTg6v1d.mjs → ownership-BLgOimfp.mjs} +2 -2
- package/dist/{phone-reverses-CHtco460.mjs → phone-reverses-vRveZKSG.mjs} +3 -3
- package/dist/{placement-log-oQnELAvQ.mjs → placement-log-CM0DSELs.mjs} +1 -1
- package/dist/{plan-placement-45EOlIG1.mjs → plan-placement-CIrvKq8y.mjs} +5 -5
- package/dist/{ports-DKO7EUNt.mjs → ports-CKORWlC0.mjs} +2 -2
- package/dist/{project-BCtQz48d.mjs → project-DIo71tGq.mjs} +14 -14
- package/dist/{react-native-android-MI4ktuhL.mjs → react-native-android-B7VYSlKj.mjs} +36 -27
- package/dist/{react-native-build-dixAL2G8.mjs → react-native-build-CFYTYmG4.mjs} +10 -7
- package/dist/{react-native-doctor-CvkWincj.mjs → react-native-doctor-CnpVfE0k.mjs} +5 -5
- package/dist/{react-native-ios-DF5otoBR.mjs → react-native-ios-ByeXo_NP.mjs} +15 -14
- package/dist/{recorded-build-CGHGCO8m.mjs → recorded-build-B4prJjSD.mjs} +1 -1
- package/dist/{recordings-BcOzqFD1.mjs → recordings-Byu5SzlI.mjs} +1 -1
- package/dist/{reload-DWxmO9dY.mjs → reload-DANrKhQR.mjs} +1 -1
- package/dist/{reload-DGWfNFwQ.mjs → reload-DTd9g1EG.mjs} +13 -13
- package/dist/{remote-DWYGW2f5.mjs → remote-BWuq9qHV.mjs} +3 -3
- package/dist/{remote-CV2jBcLv.mjs → remote-NOM82XE0.mjs} +8 -8
- package/dist/{result-CWyxwPvZ.mjs → result-C-ISEJ5F.mjs} +15 -15
- package/dist/{run-FZtMQgrx.mjs → run-DQwx6djG.mjs} +1 -1
- package/dist/{server-bare-Ksh1NKeI.mjs → server-bare-B_wRfchQ.mjs} +1 -1
- package/dist/{server-command-BO2DIsJV.mjs → server-command-DgXYowQf.mjs} +5 -5
- package/dist/{server-expo-ZS9_WaNG.mjs → server-expo-ByBM8DVv.mjs} +9 -7
- package/dist/server-expo-D7rwjAFp.mjs +2 -0
- package/dist/{settings-TYrzDh8T.mjs → settings-BthPoY3t.mjs} +2 -2
- package/dist/{settings-Ag4pbs0z.mjs → settings-Cz8kQJzr.mjs} +44 -8
- package/dist/{settings-payload-CUM0DYwz.mjs → settings-payload-BOcxsZ6k.mjs} +2 -2
- package/dist/{settings-write-D_9_IEx7.mjs → settings-write-BuMPL1rd.mjs} +3 -3
- package/dist/settings.schema.json +32 -2
- package/dist/{slot-launch-DW_29Bmu.mjs → slot-launch-BIm9w8kH.mjs} +5 -5
- package/dist/{stage-_8k8p7uq.mjs → stage-CX1Byp3n.mjs} +5 -4
- package/dist/{start-CdgtOksb.mjs → start-BZWr85b2.mjs} +1 -1
- package/dist/{start-CzBB5R7N.mjs → start-DI0ofPO-.mjs} +8 -8
- package/dist/{state-DsrFh3yv.mjs → state-45P8Kd6Z.mjs} +1 -1
- package/dist/{state-CfP-ccP8.mjs → state-C2vELPyr.mjs} +2 -2
- package/dist/{stats-BgTyuzib.mjs → stats-BDljWVWU.mjs} +3 -3
- package/dist/{status-C7Zzb-Eh.mjs → status-BG2S-a1d.mjs} +1 -1
- package/dist/{status-Bcdy5eHt.mjs → status-DEZjHP4q.mjs} +27 -29
- package/dist/{status-watch-DY0EZcmg.mjs → status-watch-Cs18eFkQ.mjs} +4 -4
- package/dist/status-worker.mjs +1 -1
- package/dist/{stop-iGkvEvDn.mjs → stop-B2zDplJa.mjs} +2 -2
- package/dist/{stop-CkmBkNyg.mjs → stop-BPrTEOaz.mjs} +14 -14
- package/dist/{stop-CbxsTKyZ.mjs → stop-DrxHVVX9.mjs} +4 -4
- package/dist/supervisor-run.mjs +11 -11
- package/dist/{support-CfYmOdQs.mjs → support-BeVRaMWT.mjs} +9 -9
- package/dist/{support-JZ4KRW0C.mjs → support-DBKG3Yyb.mjs} +5 -5
- package/dist/{swiftpm-artifact-inputs-C1rZDRDs.mjs → swiftpm-artifact-inputs-CfNAb6Vm.mjs} +1 -1
- package/dist/{swiftpm-macos-DRTjC7Ff.mjs → swiftpm-macos-xdHjJHIj.mjs} +7 -7
- package/dist/toolchain-CTsPS5tL.mjs +2 -0
- package/dist/{toolchain-BeD7tbBW.mjs → toolchain-CZvtCZ-m.mjs} +9 -6
- package/dist/{warm-progress-CJQ8tk5O.mjs → warm-progress-D3a0KviW.mjs} +17 -13
- package/dist/{web-BXbmysa1.mjs → web-BvAweypa.mjs} +6 -6
- package/dist/web-DDL3usMb.mjs +2 -0
- package/dist/web-run.mjs +4 -4
- package/dist/{workspace-state-DOPXG2Gp.mjs → workspace-state-CHEN_xzy.mjs} +1 -1
- package/dist/{workspaces-DCzDzydB.mjs → workspaces-BgAYIccE.mjs} +213 -50
- package/dist/{worktree-6ngObKkw.mjs → worktree-C0YZ6mnk.mjs} +1 -1
- package/dist/{worktree-BAC43Kio.mjs → worktree-kGPE9Pcw.mjs} +335 -33
- package/package.json +7 -7
- package/dist/server-expo-9hQwyLze.mjs +0 -2
- package/dist/toolchain-CNlKc9pH.mjs +0 -2
- package/dist/web-BcaySU05.mjs +0 -2
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { C as operationState, D as ownership_claim_exports, T as process_identity_exports, _ as declareSpawnsOn, d as throwIfCancelled, f as WorkspaceProcessCleanupError, h as workspaceProcessLockPath, l as cancellableSleep, m as workspaceProcessLockError, p as withWorkspaceProcessLock, t as getExecutor, x as stopDeclaringSpawnsOn } from "./exec-L37dbiIb.mjs";
|
|
2
|
-
import { A as workspaceName$1, E as workspaceDir, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, t as clearWorkspaceStateKey, u as workspaceLastUsed, w as workspaceAgentDeviceDir } from "./workspace-state-
|
|
2
|
+
import { A as workspaceName$1, E as workspaceDir, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, t as clearWorkspaceStateKey, u as workspaceLastUsed, w as workspaceAgentDeviceDir } from "./workspace-state-CHEN_xzy.mjs";
|
|
3
3
|
import { t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
|
|
4
|
-
import { a as formatElapsed, d as quotedPath$1, l as phaseLine, o as formatLongDuration, u as plural } from "./command-output-
|
|
4
|
+
import { a as formatElapsed, d as quotedPath$1, l as phaseLine, o as formatLongDuration, u as plural } from "./command-output-DsjhOzJ3.mjs";
|
|
5
5
|
import { A as withConfigLockAsync$1, N as acquireAvdClaim, _ as isPathPrefix$1, ct as measuredDirectorySizeAsync, d as getConfigDir, gt as projectDeviceSlots, it as formatBytes, k as withConfigLock$1, m as getProject, ot as isOnMountedVolume, pt as deviceSlotPlatforms, st as listMountedVolumes, v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
|
|
6
6
|
import { c as gitQuiet, l as gitQuietAsync, t as runOperationFile } from "./operation-exec-DNynwpqO.mjs";
|
|
7
|
-
import { Pt as lockReason, Vt as repoRootAsync, Xt as worktreeLockAsync, Yt as worktreeLock, pt as resolveTailscaleBinary } from "./settings-
|
|
8
|
-
import { a as macosRuntimeClaim, n as macosDir } from "./state-
|
|
9
|
-
import { B as listOrphanedAvdDirectories, C as deleteAvd, Dt as recordCreatedDevice, Et as readCreatedDevices$1, J as ownedAvdSystemImage, K as ownedAvdSerialResolver, M as isEmulatorToolAbsent, P as listAdbDevicesAsync, St as removeParkedAfter, Tt as forgetCreatedDeviceAsync, U as ownedAvdDirectory, W as ownedAvdMatchesConfiguration, _t as eraseParkedAfter, dt as wipeAvdUserData, ft as isStimOwnedAvd, g as avdPathExists, it as resolveOwnedAvdSerialAsync, lt as waitForAndroidEmulatorShutdown, ot as shutdownAndroidEmulator, p as assertOwnedAvdStoppedAsync, q as ownedAvdSerialResolverAsync, v as avdStorageExists, wt as forgetCreatedDevice, xt as readParked, y as avdStorageRoots, yt as parkSim } from "./android-
|
|
10
|
-
import { c as pidExists, f as signalProcessTree, p as signalProcessTreeAsync } from "./metro-
|
|
11
|
-
import { _ as chromeProcessStateAsync, c as webClaimRoot, i as clearWebRecord, o as readWebRecord, p as webProfileDir, t as CDP_PORT_LABEL, u as webFacts, v as liveProfileHolder, y as removeSingletonFiles } from "./state-
|
|
7
|
+
import { Pt as lockReason, Vt as repoRootAsync, Xt as worktreeLockAsync, Yt as worktreeLock, pt as resolveTailscaleBinary } from "./settings-Cz8kQJzr.mjs";
|
|
8
|
+
import { a as macosRuntimeClaim, n as macosDir } from "./state-45P8Kd6Z.mjs";
|
|
9
|
+
import { B as listOrphanedAvdDirectories, C as deleteAvd, Dt as recordCreatedDevice, Et as readCreatedDevices$1, J as ownedAvdSystemImage, K as ownedAvdSerialResolver, M as isEmulatorToolAbsent, P as listAdbDevicesAsync, St as removeParkedAfter, Tt as forgetCreatedDeviceAsync, U as ownedAvdDirectory, W as ownedAvdMatchesConfiguration, _t as eraseParkedAfter, dt as wipeAvdUserData, ft as isStimOwnedAvd, g as avdPathExists, it as resolveOwnedAvdSerialAsync, lt as waitForAndroidEmulatorShutdown, ot as shutdownAndroidEmulator, p as assertOwnedAvdStoppedAsync, q as ownedAvdSerialResolverAsync, v as avdStorageExists, wt as forgetCreatedDevice, xt as readParked, y as avdStorageRoots, yt as parkSim } from "./android-27_JgJ1T.mjs";
|
|
10
|
+
import { c as pidExists, f as signalProcessTree, p as signalProcessTreeAsync } from "./metro-Cj6W4qOO.mjs";
|
|
11
|
+
import { _ as chromeProcessStateAsync, c as webClaimRoot, i as clearWebRecord, o as readWebRecord, p as webProfileDir, t as CDP_PORT_LABEL, u as webFacts, v as liveProfileHolder, y as removeSingletonFiles } from "./state-C2vELPyr.mjs";
|
|
12
12
|
import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
|
|
13
|
-
import { N as listBuildLocks, d as readAgentDeviceRecords, i as createActivityReaderAsync, r as createActivityReader, s as idleForMs, t as agentDeviceDaemon } from "./activity-
|
|
14
|
-
import { C as renameIosSim, D as resolveOwnedIosSim, c as eraseIosSim, f as listAllIosSimsAsync, k as shutdownIosSim, o as deleteIosSim, p as listIosDeviceTypesAsync, s as deleteParkedIosSim, v as parkedSimName, y as parseRuntimeVersion } from "./ios-
|
|
15
|
-
import { r as releaseBrowserPort } from "./named-ports-
|
|
13
|
+
import { N as listBuildLocks, d as readAgentDeviceRecords, i as createActivityReaderAsync, r as createActivityReader, s as idleForMs, t as agentDeviceDaemon } from "./activity-CANftndU.mjs";
|
|
14
|
+
import { C as renameIosSim, D as resolveOwnedIosSim, c as eraseIosSim, f as listAllIosSimsAsync, k as shutdownIosSim, o as deleteIosSim, p as listIosDeviceTypesAsync, s as deleteParkedIosSim, v as parkedSimName, y as parseRuntimeVersion } from "./ios-DQEzde6f.mjs";
|
|
15
|
+
import { r as releaseBrowserPort } from "./named-ports-DZ8DrkH1.mjs";
|
|
16
16
|
import { createHash, randomUUID } from "node:crypto";
|
|
17
17
|
import { closeSync, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, rmdirSync, statSync, unlinkSync, watch, writeFileSync } from "node:fs";
|
|
18
18
|
import { isDeepStrictEqual } from "node:util";
|
|
@@ -22,7 +22,7 @@ import { ambientContext, ambientEnv, ambientWrite, withDirLock, workspaceName }
|
|
|
22
22
|
import { BUILD_HISTORY_KEY, BUILD_HISTORY_LIMIT, BUILD_LEDGER_CAP, BUILD_PHASES, LAST_BUILD_KEYS, STATS_VERSION, buildLedgerFile, buildLedgerLock, buildSlotsDir, decodeStats, hostedAppAttempt, hostedNativeRecords, isJsonObject, lastNativeUseFrom, loadPerCore, macosAppState, parseHostedNativePlacement, parseMissReason, readJsonFile, readMacosRecord, readRunEstimates, readStats as readStats$1, requireAutomaticMachine, statsFile, statsProjectKey as statsProjectKey$1, trace, trimCapacityRefusals, trimCapacityWaits, trimSamples, tryAcquireBuildSlotClaim, unreadableHostedNative, wholePhases, workspaceBuildDetailFile } from "@stim-cli/core/state";
|
|
23
23
|
import { basename as basename$1, dirname as dirname$1, isAbsolute as isAbsolute$1, join as join$1, relative as relative$1 } from "path";
|
|
24
24
|
import chalk from "chalk";
|
|
25
|
-
import { existsSync as existsSync$1, lstatSync as lstatSync$1, readdirSync as readdirSync$1, statSync as statSync$1 } from "fs";
|
|
25
|
+
import { closeSync as closeSync$1, existsSync as existsSync$1, lstatSync as lstatSync$1, openSync as openSync$1, readSync as readSync$1, readdirSync as readdirSync$1, rmdirSync as rmdirSync$1, statSync as statSync$1 } from "fs";
|
|
26
26
|
import { request } from "node:https";
|
|
27
27
|
import { lstat, readFile, readdir, rm, stat, unlink } from "node:fs/promises";
|
|
28
28
|
import { resolve4 } from "node:dns/promises";
|
|
@@ -1428,10 +1428,10 @@ function createRunRecorder({ platform, write, now, note, phases, deviceSetup })
|
|
|
1428
1428
|
setPlacement(next) {
|
|
1429
1429
|
placement = next;
|
|
1430
1430
|
},
|
|
1431
|
-
record({ failed, cacheHit = false, waited = null, durationMs, offloadedTo = null }) {
|
|
1431
|
+
record({ failed, cacheHit = false, waited = null, durationMs, offloadedTo = null, remoteDevice = false }) {
|
|
1432
1432
|
if (!projectKey || !cacheKey || recorded) return;
|
|
1433
1433
|
recorded = true;
|
|
1434
|
-
const ran = failed ? {} : phases?.() ?? {};
|
|
1434
|
+
const ran = failed || remoteDevice ? {} : phases?.() ?? {};
|
|
1435
1435
|
try {
|
|
1436
1436
|
const outcome = write({
|
|
1437
1437
|
platform,
|
|
@@ -1618,7 +1618,6 @@ function shortXcodeAction(action, args, target) {
|
|
|
1618
1618
|
function swiftpmStep(text) {
|
|
1619
1619
|
return /^Linking\b|-product$/.test(text) ? "link" : "compile";
|
|
1620
1620
|
}
|
|
1621
|
-
/** What one line of xcodebuild, Gradle or SwiftPM output says about the build's progress, or null for any other line. */
|
|
1622
1621
|
function parseBuildToolLine(msg) {
|
|
1623
1622
|
const counted = SWIFTPM_PROGRESS.exec(msg);
|
|
1624
1623
|
if (counted) {
|
|
@@ -1840,10 +1839,6 @@ function lineId(line) {
|
|
|
1840
1839
|
return;
|
|
1841
1840
|
}
|
|
1842
1841
|
}
|
|
1843
|
-
/**
|
|
1844
|
-
* The ledger file's text after appending `line`, keeping only the newest `cap` complete records. A run that records
|
|
1845
|
-
* twice (an Android launch that fails after the build was recorded) replaces its earlier record.
|
|
1846
|
-
*/
|
|
1847
1842
|
function appendCapped(existing, line, cap = BUILD_LEDGER_CAP) {
|
|
1848
1843
|
const id = lineId(line);
|
|
1849
1844
|
const lines = existing.split("\n").filter((each) => each.trim() !== "" && (id === void 0 || lineId(each) !== id));
|
|
@@ -2165,7 +2160,6 @@ function startBuildProgress({ root, platform, slot, claim, now = Date.now, load
|
|
|
2165
2160
|
}
|
|
2166
2161
|
};
|
|
2167
2162
|
}
|
|
2168
|
-
/** `offload` with the time `placement` has spent in its current phase as of `now` added to that phase. */
|
|
2169
2163
|
function withOffloadPhase(offload, placement, now) {
|
|
2170
2164
|
const phaseMs = { ...offload?.phaseMs };
|
|
2171
2165
|
const ms = Math.max(0, now - Date.parse(placement.phaseStartedAt));
|
|
@@ -3001,30 +2995,50 @@ const REACHABLE_TIMEOUT_MS = 24e4;
|
|
|
3001
2995
|
const REACHABLE_POLL_MS = 2e3;
|
|
3002
2996
|
const defaultSleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
3003
2997
|
async function withManagedTunnelLock(root, fn, options = {}) {
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
2998
|
+
const lockRoot = managedTunnelLockRoot(root);
|
|
2999
|
+
try {
|
|
3000
|
+
return await withWorkspaceProcessLock(lockRoot, "metro-tunnel", fn, {
|
|
3001
|
+
...options,
|
|
3002
|
+
rejectOwnerPurposes: ["workspace removal"]
|
|
3003
|
+
});
|
|
3004
|
+
} finally {
|
|
3005
|
+
removeEmptyDirs([join(lockRoot, ".stim"), lockRoot]);
|
|
3006
|
+
}
|
|
3008
3007
|
}
|
|
3009
3008
|
async function withManagedTunnelRemovalLock(root, fn, options = {}) {
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3009
|
+
const lockRoot = managedTunnelLockRoot(root);
|
|
3010
|
+
try {
|
|
3011
|
+
return await withWorkspaceProcessLock(lockRoot, "metro-tunnel", fn, {
|
|
3012
|
+
...options,
|
|
3013
|
+
ownerPurpose: "workspace removal"
|
|
3014
|
+
});
|
|
3015
|
+
} finally {
|
|
3016
|
+
removeEmptyDirs([join(lockRoot, ".stim"), lockRoot]);
|
|
3017
|
+
}
|
|
3014
3018
|
}
|
|
3015
3019
|
async function withManagedRemoteWorktreeLock(worktreeRoot, fn, options = {}) {
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3020
|
+
const lockRoot = managedRemoteWorktreeLockRoot(worktreeRoot);
|
|
3021
|
+
try {
|
|
3022
|
+
return await withWorkspaceProcessLock(lockRoot, "managed-remote", fn, {
|
|
3023
|
+
...options,
|
|
3024
|
+
external: true,
|
|
3025
|
+
rejectOwnerPurposes: ["worktree removal"]
|
|
3026
|
+
});
|
|
3027
|
+
} finally {
|
|
3028
|
+
removeEmptyDirs([lockRoot]);
|
|
3029
|
+
}
|
|
3021
3030
|
}
|
|
3022
3031
|
async function withManagedRemoteWorktreeRemovalLock(worktreeRoot, fn, options = {}) {
|
|
3023
|
-
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
|
|
3032
|
+
const lockRoot = managedRemoteWorktreeLockRoot(worktreeRoot);
|
|
3033
|
+
try {
|
|
3034
|
+
return await withWorkspaceProcessLock(lockRoot, "managed-remote", fn, {
|
|
3035
|
+
...options,
|
|
3036
|
+
external: true,
|
|
3037
|
+
ownerPurpose: "worktree removal"
|
|
3038
|
+
});
|
|
3039
|
+
} finally {
|
|
3040
|
+
removeEmptyDirs([lockRoot]);
|
|
3041
|
+
}
|
|
3028
3042
|
}
|
|
3029
3043
|
function managedLockHolders(root) {
|
|
3030
3044
|
const locks = [{
|
|
@@ -3045,6 +3059,30 @@ function managedLockHolders(root) {
|
|
|
3045
3059
|
}
|
|
3046
3060
|
return reasons;
|
|
3047
3061
|
}
|
|
3062
|
+
function removeEmptyDirs(dirs) {
|
|
3063
|
+
for (const dir of dirs) try {
|
|
3064
|
+
rmdirSync(dir);
|
|
3065
|
+
} catch {}
|
|
3066
|
+
}
|
|
3067
|
+
function childDirs(dir) {
|
|
3068
|
+
try {
|
|
3069
|
+
return readdirSync(dir, { withFileTypes: true }).filter((entry) => entry.isDirectory()).map((entry) => join(dir, entry.name));
|
|
3070
|
+
} catch {
|
|
3071
|
+
return [];
|
|
3072
|
+
}
|
|
3073
|
+
}
|
|
3074
|
+
function pruneEmptyProcessLockDirs() {
|
|
3075
|
+
const base = join(getConfigDir(), "process-locks");
|
|
3076
|
+
let removed = 0;
|
|
3077
|
+
for (const top of childDirs(base)) {
|
|
3078
|
+
const entries = basename(top) === "worktrees" ? childDirs(top) : [top];
|
|
3079
|
+
for (const entry of entries) {
|
|
3080
|
+
removeEmptyDirs(entry === top ? [join(top, ".stim"), top] : [entry]);
|
|
3081
|
+
if (!existsSync(entry)) removed++;
|
|
3082
|
+
}
|
|
3083
|
+
}
|
|
3084
|
+
return removed;
|
|
3085
|
+
}
|
|
3048
3086
|
function managedTunnelLockRoot(root) {
|
|
3049
3087
|
const key = createHash("sha256").update(resolve(root)).digest("hex");
|
|
3050
3088
|
return join(getConfigDir(), "process-locks", key);
|
|
@@ -3712,6 +3750,78 @@ async function regenerableDirProblem(root, path, signal) {
|
|
|
3712
3750
|
}
|
|
3713
3751
|
//#endregion
|
|
3714
3752
|
//#region src/commands/gc/workspaces.ts
|
|
3753
|
+
const RESIDUE_FILES = ["log-error-index.json", "ended-agents.json"];
|
|
3754
|
+
const RESIDUE_LOCKS = ["metadata.lock", "ended-agents.lock"];
|
|
3755
|
+
const MAINTENANCE_LOGS = ["maintenance.ndjson", "maintenance.ndjson.1"];
|
|
3756
|
+
const FIRST_RECORD_BYTES = 65536;
|
|
3757
|
+
function firstWorkspaceField(file) {
|
|
3758
|
+
let fd = null;
|
|
3759
|
+
try {
|
|
3760
|
+
fd = openSync$1(file, "r");
|
|
3761
|
+
const buffer = Buffer.alloc(FIRST_RECORD_BYTES);
|
|
3762
|
+
const text = buffer.toString("utf8", 0, readSync$1(fd, buffer, 0, buffer.length, 0));
|
|
3763
|
+
const record = JSON.parse(text.split("\n")[0] ?? "");
|
|
3764
|
+
return isJsonObject(record) && typeof record.workspace === "string" ? record.workspace : null;
|
|
3765
|
+
} catch {
|
|
3766
|
+
return null;
|
|
3767
|
+
} finally {
|
|
3768
|
+
if (fd !== null) closeSync$1(fd);
|
|
3769
|
+
}
|
|
3770
|
+
}
|
|
3771
|
+
const blocked = (reason) => ({
|
|
3772
|
+
projectRoot: null,
|
|
3773
|
+
empty: false,
|
|
3774
|
+
blocked: reason
|
|
3775
|
+
});
|
|
3776
|
+
const lockOf = (entry) => entry.replace(/\.claims$/, "");
|
|
3777
|
+
/**
|
|
3778
|
+
* Reads the leftovers of a directory that has no `workspace.json`. `blocked` names the first thing that makes the
|
|
3779
|
+
* directory something other than residue; `projectRoot` is the root its maintenance log names, only when that root
|
|
3780
|
+
* maps to the directory name. `held` lists lock names the caller holds in the directory itself.
|
|
3781
|
+
*/
|
|
3782
|
+
function inspectWorkspaceResidue(dir, held = []) {
|
|
3783
|
+
let entries;
|
|
3784
|
+
try {
|
|
3785
|
+
entries = readdirSync$1(dir).filter((entry) => !held.some((lock) => entry === lock || entry === `${lock}.claims`));
|
|
3786
|
+
} catch (error) {
|
|
3787
|
+
return blocked(`it cannot be listed: ${error instanceof Error ? error.message : String(error)}`);
|
|
3788
|
+
}
|
|
3789
|
+
const locks = new Set(entries.filter((entry) => RESIDUE_LOCKS.includes(lockOf(entry))).map(lockOf));
|
|
3790
|
+
for (const entry of entries) {
|
|
3791
|
+
if (RESIDUE_LOCKS.includes(lockOf(entry)) || RESIDUE_FILES.includes(entry)) continue;
|
|
3792
|
+
if (entry === "agent-device") {
|
|
3793
|
+
const daemon = agentDeviceDaemon(join$1(dir, entry));
|
|
3794
|
+
if (daemon !== "none" && daemon !== "dead") return blocked("its agent-device daemon may be running");
|
|
3795
|
+
continue;
|
|
3796
|
+
}
|
|
3797
|
+
if (entry === "logs") {
|
|
3798
|
+
let logs;
|
|
3799
|
+
try {
|
|
3800
|
+
logs = readdirSync$1(join$1(dir, entry));
|
|
3801
|
+
} catch {
|
|
3802
|
+
return blocked("its logs directory cannot be listed");
|
|
3803
|
+
}
|
|
3804
|
+
const other = logs.find((log) => !MAINTENANCE_LOGS.includes(log));
|
|
3805
|
+
if (other) return blocked(`its logs directory holds ${other}`);
|
|
3806
|
+
continue;
|
|
3807
|
+
}
|
|
3808
|
+
return blocked(`it holds ${entry}`);
|
|
3809
|
+
}
|
|
3810
|
+
for (const lock of locks) {
|
|
3811
|
+
const survey = (0, ownership_claim_exports.readClaimSet)(join$1(dir, lock));
|
|
3812
|
+
if (survey.live.length) return blocked(`${lock} is held`);
|
|
3813
|
+
if (survey.unresolved[0]) return blocked(`${lock} cannot be resolved: ${survey.unresolved[0].reason}`);
|
|
3814
|
+
}
|
|
3815
|
+
const named = new Set(MAINTENANCE_LOGS.map((log) => firstWorkspaceField(join$1(dir, "logs", log))).filter((root) => root !== null));
|
|
3816
|
+
if (named.size > 1) return blocked("its maintenance logs name different project roots");
|
|
3817
|
+
const [root] = named;
|
|
3818
|
+
if (root !== void 0 && (!isAbsolute$1(root) || workspaceName$1(root) !== basename$1(dir))) return blocked(`its maintenance log names ${root}, whose workspace directory has another name`);
|
|
3819
|
+
return {
|
|
3820
|
+
projectRoot: root ?? null,
|
|
3821
|
+
empty: entries.length === 0,
|
|
3822
|
+
blocked: null
|
|
3823
|
+
};
|
|
3824
|
+
}
|
|
3715
3825
|
function workspacesRoot() {
|
|
3716
3826
|
return join$1(getConfigDir(), "workspaces");
|
|
3717
3827
|
}
|
|
@@ -3724,14 +3834,16 @@ function readRecordedRoot(dir, name) {
|
|
|
3724
3834
|
try {
|
|
3725
3835
|
parsed = readJsonFile(join$1(dir, "workspace.json"));
|
|
3726
3836
|
} catch (error) {
|
|
3727
|
-
return unreadableRecordedRoot(error);
|
|
3837
|
+
return unreadableRecordedRoot(error, dir);
|
|
3728
3838
|
}
|
|
3729
3839
|
return recordedRoot(parsed, name);
|
|
3730
3840
|
}
|
|
3731
|
-
function unreadableRecordedRoot(error) {
|
|
3841
|
+
function unreadableRecordedRoot(error, dir) {
|
|
3842
|
+
const missing = error?.code === "ENOENT";
|
|
3732
3843
|
return {
|
|
3733
3844
|
projectRoot: null,
|
|
3734
|
-
problem:
|
|
3845
|
+
problem: missing ? "it has no workspace.json" : "its workspace.json does not parse",
|
|
3846
|
+
...missing ? { residue: inspectWorkspaceResidue(dir) } : {}
|
|
3735
3847
|
};
|
|
3736
3848
|
}
|
|
3737
3849
|
function recordedRoot(parsed, name) {
|
|
@@ -3798,7 +3910,7 @@ async function listWorkspaceDirsAsync(signal) {
|
|
|
3798
3910
|
recorded = recordedRoot(JSON.parse(await readFile(join$1(dir, "workspace.json"), "utf8")), name);
|
|
3799
3911
|
} catch (error) {
|
|
3800
3912
|
signal?.throwIfAborted();
|
|
3801
|
-
recorded = unreadableRecordedRoot(error);
|
|
3913
|
+
recorded = unreadableRecordedRoot(error, dir);
|
|
3802
3914
|
}
|
|
3803
3915
|
signal?.throwIfAborted();
|
|
3804
3916
|
entries.push({
|
|
@@ -3811,11 +3923,26 @@ async function listWorkspaceDirsAsync(signal) {
|
|
|
3811
3923
|
function classifyWorkspaceDirs(entries, { registryKeys, exists, isMounted, inUse }) {
|
|
3812
3924
|
const orphaned = [];
|
|
3813
3925
|
const skipped = [];
|
|
3814
|
-
for (const { dir, projectRoot, problem } of entries) {
|
|
3815
|
-
|
|
3926
|
+
for (const { dir, projectRoot: recorded, problem, residue } of entries) {
|
|
3927
|
+
const leftover = recorded === null ? residue : void 0;
|
|
3928
|
+
if (recorded === null && (!leftover || leftover.blocked !== null)) {
|
|
3929
|
+
const why = leftover?.blocked ? `${problem}; ${leftover.blocked}` : problem ?? "unknown project root";
|
|
3816
3930
|
skipped.push({
|
|
3817
3931
|
dir,
|
|
3818
|
-
reason: `workspace directory not resolved: ${
|
|
3932
|
+
reason: `workspace directory not resolved: ${why}`
|
|
3933
|
+
});
|
|
3934
|
+
continue;
|
|
3935
|
+
}
|
|
3936
|
+
const projectRoot = recorded ?? leftover?.projectRoot ?? null;
|
|
3937
|
+
if (projectRoot === null) {
|
|
3938
|
+
if (leftover?.empty) orphaned.push({
|
|
3939
|
+
dir,
|
|
3940
|
+
projectRoot: null,
|
|
3941
|
+
residue: true
|
|
3942
|
+
});
|
|
3943
|
+
else skipped.push({
|
|
3944
|
+
dir,
|
|
3945
|
+
reason: "workspace directory not resolved: its leftovers name no project root"
|
|
3819
3946
|
});
|
|
3820
3947
|
continue;
|
|
3821
3948
|
}
|
|
@@ -3846,7 +3973,8 @@ function classifyWorkspaceDirs(entries, { registryKeys, exists, isMounted, inUse
|
|
|
3846
3973
|
}
|
|
3847
3974
|
orphaned.push({
|
|
3848
3975
|
dir,
|
|
3849
|
-
projectRoot
|
|
3976
|
+
projectRoot,
|
|
3977
|
+
...leftover ? { residue: true } : {}
|
|
3850
3978
|
});
|
|
3851
3979
|
}
|
|
3852
3980
|
return {
|
|
@@ -3881,6 +4009,10 @@ async function collectOrphanedWorkspaces(registryKeys, mountedVolumes, { measure
|
|
|
3881
4009
|
});
|
|
3882
4010
|
classified.skipped.push(...current.skipped);
|
|
3883
4011
|
for (const orphan of current.orphaned) {
|
|
4012
|
+
if (orphan.projectRoot === null) {
|
|
4013
|
+
classified.orphaned.push(orphan);
|
|
4014
|
+
continue;
|
|
4015
|
+
}
|
|
3884
4016
|
const reasons = operation ? await workspaceInUseAsync(orphan.projectRoot, {}, operation.signal, operation) : workspaceInUse(orphan.projectRoot);
|
|
3885
4017
|
if (reasons.length) classified.skipped.push({
|
|
3886
4018
|
dir: orphan.dir,
|
|
@@ -4130,8 +4262,25 @@ async function clearWorkspaceOutputs(report, { olderThan, now = Date.now(), oper
|
|
|
4130
4262
|
cleared: clearedRoots
|
|
4131
4263
|
};
|
|
4132
4264
|
}
|
|
4133
|
-
function
|
|
4134
|
-
if (
|
|
4265
|
+
function residueRoot(dir) {
|
|
4266
|
+
if (existsSync$1(join$1(dir, "workspace.json"))) return null;
|
|
4267
|
+
const residue = inspectWorkspaceResidue(dir, ["native-run.lock"]);
|
|
4268
|
+
return residue.blocked === null ? residue.projectRoot : null;
|
|
4269
|
+
}
|
|
4270
|
+
function removeEmptyResidue(dir) {
|
|
4271
|
+
if (existsSync$1(join$1(dir, "workspace.json"))) return false;
|
|
4272
|
+
const residue = inspectWorkspaceResidue(dir);
|
|
4273
|
+
if (residue.blocked !== null || !residue.empty) return false;
|
|
4274
|
+
try {
|
|
4275
|
+
rmdirSync$1(dir);
|
|
4276
|
+
return true;
|
|
4277
|
+
} catch {
|
|
4278
|
+
return false;
|
|
4279
|
+
}
|
|
4280
|
+
}
|
|
4281
|
+
function stillOrphaned({ dir, projectRoot, residue }) {
|
|
4282
|
+
if (projectRoot === null) return false;
|
|
4283
|
+
if ({ projectRoot: residue ? residueRoot(dir) : readRecordedRoot(dir, basename$1(dir)).projectRoot }.projectRoot !== projectRoot || rootPresence(projectRoot) !== false || !isOnMountedVolume(projectRoot)) return false;
|
|
4135
4284
|
return !Object.keys(loadConfig$1()?.projects ?? {}).some((key) => isPathPrefix$1(projectRoot, key));
|
|
4136
4285
|
}
|
|
4137
4286
|
async function deleteOrphanedWorkspaces(orphaned, output = GC_OUTPUT, operation) {
|
|
@@ -4139,11 +4288,25 @@ async function deleteOrphanedWorkspaces(orphaned, output = GC_OUTPUT, operation)
|
|
|
4139
4288
|
for (const entry of orphaned) {
|
|
4140
4289
|
operation?.signal.throwIfAborted();
|
|
4141
4290
|
if (!existsSync$1(entry.dir)) continue;
|
|
4291
|
+
const root = entry.projectRoot;
|
|
4292
|
+
if (root === null) {
|
|
4293
|
+
if (removeEmptyResidue(entry.dir)) {
|
|
4294
|
+
output.log(chalk.green(`Removed the empty workspace directory ${entry.dir}`));
|
|
4295
|
+
output.record("workspaceDirectory", "done", entry.dir, { bytes: entry.bytes ?? null });
|
|
4296
|
+
} else {
|
|
4297
|
+
output.log(chalk.yellow(`Kept ${entry.dir}: it can no longer be confirmed orphaned.`));
|
|
4298
|
+
output.record("workspaceDirectory", "kept", entry.dir, {
|
|
4299
|
+
bytes: entry.bytes ?? null,
|
|
4300
|
+
detail: "it can no longer be confirmed orphaned"
|
|
4301
|
+
});
|
|
4302
|
+
}
|
|
4303
|
+
continue;
|
|
4304
|
+
}
|
|
4142
4305
|
let run;
|
|
4143
4306
|
try {
|
|
4144
|
-
run = await withIdleWorkspace(
|
|
4307
|
+
run = await withIdleWorkspace(root, async () => {
|
|
4145
4308
|
if (!stillOrphaned(entry)) return false;
|
|
4146
|
-
const browser = await teardownOwnedBrowser(
|
|
4309
|
+
const browser = await teardownOwnedBrowser(root, {
|
|
4147
4310
|
deleteProfile: true,
|
|
4148
4311
|
...operation ? { operation } : {}
|
|
4149
4312
|
});
|
|
@@ -4191,4 +4354,4 @@ function sizeText(bytes) {
|
|
|
4191
4354
|
return bytes === null ? "size unknown" : formatBytes(bytes);
|
|
4192
4355
|
}
|
|
4193
4356
|
//#endregion
|
|
4194
|
-
export {
|
|
4357
|
+
export { startBuildProgress as $, hostedBundleDirs as A, eachLimited as At, shutDownIdleDevices as B, startTunnelSequence as C, acquireBuildSlot as Ct, withManagedRemoteWorktreeRemovalLock as D, GC_OUTPUT as Dt, withManagedRemoteWorktreeLock as E, releaseBuildSlot as Et, collectOwnedDeviceActivity as F, buildReport as G, ACTIVE_BUILD_KEY as H, collectOwnedDeviceActivityAsync as I, estimateBuild as J, buildStatusLine as K, idleDeviceLines as L, runningInstancesInAsync as M, readConcurrency as Mt, collectIdleDevices as N, sizeConcurrency as Nt, withManagedTunnelLock as O, createGcResults as Ot, collectIdleDevicesAsync as P, runFailureRecord as Q, idleShutdownCandidates as R, pruneEmptyProcessLockDirs as S, writeUsageCache as St, terminateChild as T, listBuildSlots as Tt, NO_BUILD_PROGRESS as U, workspaceBuildInProgress as V, activeBuildState as W, recordBuildPhase as X, parseActiveBuild as Y, recordFinishedBuild as Z, emptyWorkspaceDir as _, teardownParkedAvd as _t, collectOrphanedWorkspaces as a, readRunEstimates as at, workspaceInUseAsync as b, canonical$1 as bt, isInsideWorkspaces as c, recordCapacityWait as ct, recentNativeUseReason as d, eraseParkedAvd as dt, tapBuildLog as et, rootPresence as f, eraseParkedIosSim as ft, ARTIFACT_DIRS as g, teardownOwnedIosSim as gt, workspaceDirRemoved as h, teardownOwnedBrowser as ht, clearWorkspaceOutputs as i, createRunRecorder as it, runningBundleInstancesAsync as j, mapLimited as jt, withManagedTunnelRemovalLock as k, takeGcResults as kt, keptByLock as l, recordRunStats as lt, workspaceBuildReasons as m, teardownOwnedAvd as mt, REBUILD_COST as n, errorRemedy as nt, collectWorkspaceOutputs as o, readStats$1 as ot, sizeText as p, teardownBrowserHeld as pt, bundlingActivity as q, WORKSPACE_OUTPUT_DIRS as r, STIM_VERSION as rt, deleteOrphanedWorkspaces as s, recordCapacityRefusal as st, LIGHTEN_AFTER_MS as t, thrownRunFailureRecord as tt, listWorkspaceDirs as u, statsProjectKey$1 as ut, withIdleWorkspace as v, teardownParkedIosSim as vt, stopTunnel as w, buildSlotUsage as wt, resolveSupervisorTarget as x, measureDu as xt, workspaceInUse as y, probePublicHttp as yt, parseIdleDuration as z };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as nestedWorktrees, c as registerRemove, d as removalPath, f as removalRemedy, g as worktreeCommand, h as warmedWorkspace, i as excludeWatchmanCookies, l as registerWarm, m as warmWorktreeTarget, n as dependencyInstallCommand, o as porcelainPath, p as removeWorktreeTarget, r as excludePodChurn, s as reclaimKeys, t as customIosDirs, u as removalBlockers } from "./worktree-
|
|
1
|
+
import { a as nestedWorktrees, c as registerRemove, d as removalPath, f as removalRemedy, g as worktreeCommand, h as warmedWorkspace, i as excludeWatchmanCookies, l as registerWarm, m as warmWorktreeTarget, n as dependencyInstallCommand, o as porcelainPath, p as removeWorktreeTarget, r as excludePodChurn, s as reclaimKeys, t as customIosDirs, u as removalBlockers } from "./worktree-kGPE9Pcw.mjs";
|
|
2
2
|
export { customIosDirs, worktreeCommand as default, dependencyInstallCommand, excludePodChurn, excludeWatchmanCookies, nestedWorktrees, porcelainPath, reclaimKeys, registerRemove, registerWarm, removalBlockers, removalPath, removalRemedy, removeWorktreeTarget, warmWorktreeTarget, warmedWorkspace };
|