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,12 +1,12 @@
|
|
|
1
1
|
import { t as getExecutor } from "./exec-L37dbiIb.mjs";
|
|
2
|
-
import { r as readWorkspaceState$1 } from "./workspace-state-
|
|
3
|
-
import { v as launchErrorPreview } from "./command-output-
|
|
2
|
+
import { r as readWorkspaceState$1 } from "./workspace-state-CHEN_xzy.mjs";
|
|
3
|
+
import { v as launchErrorPreview } from "./command-output-DsjhOzJ3.mjs";
|
|
4
4
|
import { ft as deviceSlotKey, m as getProject, pt as deviceSlotPlatforms } from "./config-CNmN-ndb.mjs";
|
|
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-
|
|
5
|
+
import { I as readWorkspaceLaunches } from "./project-DIo71tGq.mjs";
|
|
6
|
+
import { o as androidHome, u as androidToolCwd } from "./android-27_JgJ1T.mjs";
|
|
7
|
+
import { d as resolveProjectMetro } from "./metro-Cj6W4qOO.mjs";
|
|
8
|
+
import { i as parseLogcatLine, n as androidLogGroups, r as isAndroidCrashText } from "./android-DGLG_VQ3.mjs";
|
|
9
|
+
import { S as parseLease, v as deviceLeasePath, y as fileLeaseIo } from "./activity-CANftndU.mjs";
|
|
10
10
|
import { r as deviceConsoleLevel } from "./ios-device-ygijU78G.mjs";
|
|
11
11
|
import { createHash, randomUUID } from "node:crypto";
|
|
12
12
|
import { existsSync, readFileSync, renameSync } from "node:fs";
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import { D as ownership_claim_exports, T as process_identity_exports, _ as declareSpawnsOn, d as throwIfCancelled, f as WorkspaceProcessCleanupError, t as getExecutor, w as withDrainingCancellation, x as stopDeclaringSpawnsOn } from "./exec-L37dbiIb.mjs";
|
|
2
|
-
import { E as workspaceDir, u as workspaceLastUsed } from "./workspace-state-
|
|
3
|
-
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-CHEN_xzy.mjs";
|
|
3
|
+
import { d as quotedPath$1, h as shortUdid, o as formatLongDuration, u as plural } from "./command-output-DsjhOzJ3.mjs";
|
|
4
4
|
import { A as withConfigLockAsync$1, C as removeProject, N as acquireAvdClaim, at as isAbsentPath, ct as measuredDirectorySizeAsync, d as getConfigDir, gt as projectDeviceSlots, it as formatBytes, ot as isOnMountedVolume, rt as directorySizeAsync, st as listMountedVolumes, v as loadConfig$1 } from "./config-CNmN-ndb.mjs";
|
|
5
5
|
import { t as runOperationFile } from "./operation-exec-DNynwpqO.mjs";
|
|
6
|
-
import { $t as TRASH_MANIFEST, Ft as matchWorktreeEntry, Wt as resolveSourceCheckoutAsync, Zt as TRASH_CLAIMS, en as deleteTrashEntry, jt as listWorktreesAsync } from "./settings-
|
|
7
|
-
import { i as findProjectRoot$1, v as detectIsExpo } from "./project-
|
|
8
|
-
import { B as listOrphanedAvdDirectories, Et as readCreatedDevices$1, R as listAvdsAsync, Tt as forgetCreatedDeviceAsync, U as ownedAvdDirectory, bt as parkedMaxSetting, h as avdNameAbsent, mt as POOL_SETTING_REMEDY } from "./android-
|
|
9
|
-
import {
|
|
10
|
-
import { n as easMachineStateRoot$1, o as removeEasSessionClaimAsync, r as readEasSessionLedger$1 } from "./eas-session-ledger-
|
|
11
|
-
import { At as
|
|
12
|
-
import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
|
|
13
|
-
import { N as listBuildLocks, k as removeExpiredLease } from "./activity-CdpXXSq2.mjs";
|
|
14
|
-
import { d as listAllIosSims, f as listAllIosSimsAsync } from "./ios-BveW7qK1.mjs";
|
|
6
|
+
import { $t as TRASH_MANIFEST, Ft as matchWorktreeEntry, Wt as resolveSourceCheckoutAsync, Zt as TRASH_CLAIMS, en as deleteTrashEntry, jt as listWorktreesAsync } from "./settings-Cz8kQJzr.mjs";
|
|
7
|
+
import { i as findProjectRoot$1, v as detectIsExpo } from "./project-DIo71tGq.mjs";
|
|
8
|
+
import { B as listOrphanedAvdDirectories, Et as readCreatedDevices$1, R as listAvdsAsync, Tt as forgetCreatedDeviceAsync, U as ownedAvdDirectory, bt as parkedMaxSetting, h as avdNameAbsent, mt as POOL_SETTING_REMEDY } from "./android-27_JgJ1T.mjs";
|
|
9
|
+
import { At as collectParkedSims, Bt as findOrphanedDevices, Cr as memorySweepIsScoped, Ct as includesGradleVersions, Dt as DEVICE_LIST_TIMEOUT_MS, Er as scopedMemoryReport, Et as collectInventory, Gt as collectEasSessionSweep, Ht as findStaleProjectDevices, It as describeUnverifiableDevices, Jt as withRemoteSessionGcLocks, Kt as deleteEasSessions, Lt as deviceSweepIsScoped, Mt as deleteParkedSims, Nr as sizeCaches, Nt as deleteProjectDevices, Or as phase, Ot as collectDeviceLeases, Pt as describeDeadProjectDevices, Rt as eraseParkedDevices, Sr as memoryScope, St as gradleVersionsPending, Tr as reclaimMemory, Tt as getMachineCacheReport, Ut as unverifiedDeviceCommand, Vt as findStaleDeviceRecords, Wt as withAndroidAvdSizes, _t as trimCaches, an as withEasProjectLock, br as memoryCacheKind, bt as deleteGradleVersions, ct as includesParkedDevices, dt as isWorkspacesScope, ft as markOverCapCompilationCache, gt as selectsBeyondCaches, hr as parseArchiveSelector, ht as selectCaches, it as openGcLog, jr as discoverCaches, jt as deleteParkedAvds, kt as collectParkedAvds, lt as includesRecordings, mt as previewScopedEmptying, nt as gcOptionsOf, ot as emptyCaches, pt as planCacheEmptying, qn as runProcessOperation, qt as describeError, st as includesArchives, ut as includesWorkspaceOutputs, vr as collectMemoryReport, vt as collectGradleVersions, wr as memoryWorkPending, xr as memoryLines, xt as gradleVersionLines, zt as findDeadProjectOwnedDevices } from "./device-capacity-D_IlxZRL.mjs";
|
|
10
|
+
import { n as easMachineStateRoot$1, o as removeEasSessionClaimAsync, r as readEasSessionLedger$1 } from "./eas-session-ledger-BDpSdFDM.mjs";
|
|
11
|
+
import { At as eachLimited, B as shutDownIdleDevices, Dt as GC_OUTPUT, L as idleDeviceLines, Mt as readConcurrency, N as collectIdleDevices, Nt as sizeConcurrency, Ot as createGcResults, P as collectIdleDevicesAsync, S as pruneEmptyProcessLockDirs, Tt as listBuildSlots, a as collectOrphanedWorkspaces, b as workspaceInUseAsync, c as isInsideWorkspaces, f as rootPresence, g as ARTIFACT_DIRS, i as clearWorkspaceOutputs, jt as mapLimited, n as REBUILD_COST, o as collectWorkspaceOutputs, p as sizeText, r as WORKSPACE_OUTPUT_DIRS, s as deleteOrphanedWorkspaces, t as LIGHTEN_AFTER_MS, u as listWorkspaceDirs, v as withIdleWorkspace, z as parseIdleDuration } from "./workspaces-BgAYIccE.mjs";
|
|
15
12
|
import { t as resolveMaintenanceSettings } from "./settings-D9LtQaUw.mjs";
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
13
|
+
import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
|
|
14
|
+
import { N as listBuildLocks, k as removeExpiredLease } from "./activity-CANftndU.mjs";
|
|
15
|
+
import { d as listAllIosSims, f as listAllIosSimsAsync } from "./ios-DQEzde6f.mjs";
|
|
16
|
+
import { r as readCollectors } from "./ownership-BLgOimfp.mjs";
|
|
17
|
+
import { A as deleteSelectedArchives, O as classifyProjectEntries, j as sweepArchiveStaging, k as reclaimProject } from "./worktree-kGPE9Pcw.mjs";
|
|
18
|
+
import { p as writeCacheFile } from "./warm-progress-D3a0KviW.mjs";
|
|
19
|
+
import { a as restoreProblem, o as workspaceKeys } from "./lightened-KHWHmzGs.mjs";
|
|
20
|
+
import { C as candidateRootsAsync, D as worktreeRemovalReason, E as worktreePullRequestNote, S as maintenancePinned, T as removeWorktrees, _ as finishedWorkspaces, a as previewMaintenance, b as cachedDeviceActivity, c as deleteTempLeftovers, d as appRoots, f as artifactWorktrees, g as stopIdleWorkspace, h as planIdleStop, l as tempLeftoverLines, m as collectArtifactsAsync, o as triggeringRoot, p as clearArtifact, s as collectTempLeftovers, t as deleteIdleWorkspaceDevices, u as tempLeftoverSection, w as collectWorktreeSweep, x as cachedDeviceActivityAsync, y as ownedDeviceUsage } from "./act-Bh3t-NuH.mjs";
|
|
21
|
+
import { i as getSwiftpmCacheUsage, n as swiftpmCacheLines, r as getAgentDeviceUsage, t as agentDeviceLines } from "./agent-device-usage-output-CuROXefb.mjs";
|
|
22
22
|
import { claimRemoveCommand, isClaimRefusal, isClaimUnavailable, readClaimSet, releaseClaim, tryAcquireClaim } from "@stim-cli/core/ownership-claim";
|
|
23
23
|
import { existsSync, lstatSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
24
24
|
import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
|
|
@@ -121,10 +121,6 @@ function archiveWorkPending(selection, otherWork) {
|
|
|
121
121
|
//#endregion
|
|
122
122
|
//#region src/commands/gc/eas-ledger.ts
|
|
123
123
|
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
124
|
-
/**
|
|
125
|
-
* An entry is dropped only when its id cannot be an EAS session id and its workspace root is provably gone:
|
|
126
|
-
* absolute, missing, and on a mounted volume, the same proof gc uses for dead project entries.
|
|
127
|
-
*/
|
|
128
124
|
function isStaleEasLedgerEntry(claim, mountedVolumes, exists = existsSync) {
|
|
129
125
|
if (UUID.test(claim.sessionId)) return false;
|
|
130
126
|
const root = claim.workspaceRoot;
|
|
@@ -238,7 +234,11 @@ function machineCacheLines(report, now = Date.now()) {
|
|
|
238
234
|
}
|
|
239
235
|
//#endregion
|
|
240
236
|
//#region src/commands/gc/status-caches.ts
|
|
241
|
-
const KINDS = [
|
|
237
|
+
const KINDS = [
|
|
238
|
+
"disk-usage",
|
|
239
|
+
"pull-request",
|
|
240
|
+
"git-merge"
|
|
241
|
+
];
|
|
242
242
|
const KEPT_REASON = {
|
|
243
243
|
unreadable: "the file records no readable path of its own",
|
|
244
244
|
unknown: "Stim cannot tell whether the folder it measures still exists",
|
|
@@ -1000,7 +1000,7 @@ function orphanedWorkspaceLines(orphaned) {
|
|
|
1000
1000
|
const lines = [`Orphaned workspace directories (${orphaned.length}):`];
|
|
1001
1001
|
for (const entry of orphaned) {
|
|
1002
1002
|
lines.push(` ${entry.dir}${entry.bytes === void 0 ? "" : ` - ${sizeText(entry.bytes)}`}`);
|
|
1003
|
-
lines.push(` recorded project root ${entry.projectRoot} is gone and no registry entry names it`);
|
|
1003
|
+
lines.push(entry.projectRoot === null ? " it is empty and has no workspace.json" : ` ${entry.residue ? "the project root its logs name" : "recorded project root"} ${entry.projectRoot} is gone and no registry entry names it`);
|
|
1004
1004
|
}
|
|
1005
1005
|
lines.push(" --delete re-checks each directory, then removes it whole.");
|
|
1006
1006
|
return lines;
|
|
@@ -2296,7 +2296,7 @@ async function collectGcReport({ olderThan = null, cache = null, worktrees = fal
|
|
|
2296
2296
|
const selected = selectCaches(discoverCaches(env, operation?.cwd), scope).filter((c) => !withWorkspaces || !isInsideWorkspaces(c.dir));
|
|
2297
2297
|
if (selected.length) phase("caches", `measuring ${plural(selected.length, "shared cache")}`, operation);
|
|
2298
2298
|
const sized = await sizeCaches(selected, operation);
|
|
2299
|
-
const caches = scope === null ? previewScopedEmptying(sized, env) : planCacheEmptying(sized, all, env);
|
|
2299
|
+
const caches = scope === null ? markOverCapCompilationCache(previewScopedEmptying(sized, env), env) : planCacheEmptying(sized, all, env);
|
|
2300
2300
|
if (scope) return {
|
|
2301
2301
|
archives: includesArchives(scope) ? await collectArchives(scope, olderThan, now, operation?.signal) : void 0,
|
|
2302
2302
|
skipped: [],
|
|
@@ -2446,14 +2446,14 @@ async function collectGcReport({ olderThan = null, cache = null, worktrees = fal
|
|
|
2446
2446
|
const unsweepableReason = cfg === null ? "no Stim config found" : deviceSweepIsScoped(env) ? "STIM_HOME scopes this config, but simulators and AVDs are machine-global" : null;
|
|
2447
2447
|
phase("devices", "listing simulators and emulators", operation);
|
|
2448
2448
|
if (unsweepableReason) {
|
|
2449
|
-
let
|
|
2449
|
+
let allSims = [];
|
|
2450
2450
|
let avdNames = [];
|
|
2451
2451
|
try {
|
|
2452
|
-
|
|
2452
|
+
allSims = await listAllIosSimsAsync({
|
|
2453
2453
|
timeoutMs: DEVICE_LIST_TIMEOUT_MS,
|
|
2454
2454
|
operation,
|
|
2455
2455
|
signal: operation?.signal
|
|
2456
|
-
})
|
|
2456
|
+
});
|
|
2457
2457
|
} catch (error) {
|
|
2458
2458
|
if (error instanceof WorkspaceProcessCleanupError) throw error;
|
|
2459
2459
|
operation?.signal.throwIfAborted();
|
|
@@ -2468,7 +2468,14 @@ async function collectGcReport({ olderThan = null, cache = null, worktrees = fal
|
|
|
2468
2468
|
if (error instanceof WorkspaceProcessCleanupError) throw error;
|
|
2469
2469
|
operation?.signal.throwIfAborted();
|
|
2470
2470
|
}
|
|
2471
|
-
|
|
2471
|
+
const deadOwned = cfg === null ? [] : findDeadProjectOwnedDevices({
|
|
2472
|
+
config: cfg,
|
|
2473
|
+
deadProjects,
|
|
2474
|
+
sims: allSims,
|
|
2475
|
+
avds: avdNames
|
|
2476
|
+
});
|
|
2477
|
+
const deadOwnedIds = new Set(deadOwned.map((device) => device.id));
|
|
2478
|
+
deviceSweepNotices.push(...describeDeadProjectDevices(deadOwned), ...describeUnverifiableDevices(allSims.filter((sim) => !deadOwnedIds.has(sim.udid)).map((sim) => sim.name), avdNames.filter((name) => !deadOwnedIds.has(name)), { reason: unsweepableReason }));
|
|
2472
2479
|
} else {
|
|
2473
2480
|
let sims = [];
|
|
2474
2481
|
let simsChecked = true;
|
|
@@ -2891,6 +2898,7 @@ async function pruneDeadProjects(deadProjects, output, operation) {
|
|
|
2891
2898
|
}
|
|
2892
2899
|
const result = await reclaimProject(path, {
|
|
2893
2900
|
archive: { removedBy: "gc" },
|
|
2901
|
+
deleteOwnedDevices: deviceSweepIsScoped(operation?.env ?? process.env),
|
|
2894
2902
|
stopRequester: { by: "stim gc --delete" },
|
|
2895
2903
|
operation
|
|
2896
2904
|
}).catch((error) => {
|
|
@@ -2921,7 +2929,10 @@ async function pruneDeadProjects(deadProjects, output, operation) {
|
|
|
2921
2929
|
if (result.killedPid) output.log(chalk.dim(` killed orphaned Metro pid ${result.killedPid}`));
|
|
2922
2930
|
if (result.stoppedSession) output.log(chalk.dim(` stopped remote session ${result.stoppedSession}`));
|
|
2923
2931
|
if (result.stoppedTunnel) output.log(chalk.dim(` stopped ${result.stoppedTunnel} tunnel`));
|
|
2924
|
-
for (const name of result.deletedDevices)
|
|
2932
|
+
for (const name of result.deletedDevices) {
|
|
2933
|
+
output.log(chalk.dim(` deleted owned device ${name}`));
|
|
2934
|
+
output.record("device", "done", name);
|
|
2935
|
+
}
|
|
2925
2936
|
for (const s of result.skippedDevices) {
|
|
2926
2937
|
output.log(chalk.yellow(` ${s.name}: ${s.reason}`));
|
|
2927
2938
|
output.record("device", result.failedDevices.includes(s) ? "failed" : "kept", s.name, {
|
|
@@ -2965,7 +2976,7 @@ async function reclaimParkedDevices(report, deps, output) {
|
|
|
2965
2976
|
}
|
|
2966
2977
|
function reportActionable(report) {
|
|
2967
2978
|
const { deadProjects, invalidProjects, orphanedDevices, staleDevices, staleDeviceRecords, buildLocks, buildSlots, deviceLeases, easSessionSweep, caches, olderThan, all, cacheScope: cache } = report;
|
|
2968
|
-
return archiveWorkPending(report.archives, deadProjects.length + invalidProjects.length > 0 || report.orphanedWorkspaces.length > 0 || Boolean(report.workspaceOutputs?.workspaces.some((entry) => entry.willClear)) || Boolean(report.worktreeDependencies?.candidates.length) || report.workspaceLogs.some((entry) => entry.willTrim) || report.recordings.some((entry) => entry.willDelete && !entry.withWorkspace) || Boolean(report.tempLeftovers?.entries.some((entry) => entry.willDelete)) || Boolean(report.trash?.entries.some((entry) => entry.willDelete)) || Boolean(report.worktreeSweep?.worktrees.some((entry) => !entry.skipped)) || report.parkedSims.length > 0 || report.parkedAvds.length + report.parkedHostedDevices.filter((device) => device.listed !== false).length > 0 || orphanedDevices.length > 0 || staleDevices.length + report.finishedDevices.length > 0 || staleDeviceRecords.length > 0 || report.staleLedgerEntries.length + report.staleEasLedgerEntries.length > 0 || report.staleStatusCaches.length > 0 || buildLocks.stale.length > 0 || buildSlots.stale.length > 0 || deviceLeases.expired.length > 0 || easSessionSweep.orphaned.length > 0 || (olderThan !== null || all) && caches.length > 0 || scopedWorkPending(cache, report));
|
|
2979
|
+
return archiveWorkPending(report.archives, deadProjects.length + invalidProjects.length > 0 || report.orphanedWorkspaces.length > 0 || Boolean(report.workspaceOutputs?.workspaces.some((entry) => entry.willClear)) || Boolean(report.worktreeDependencies?.candidates.length) || report.workspaceLogs.some((entry) => entry.willTrim) || report.recordings.some((entry) => entry.willDelete && !entry.withWorkspace) || Boolean(report.tempLeftovers?.entries.some((entry) => entry.willDelete)) || Boolean(report.trash?.entries.some((entry) => entry.willDelete)) || Boolean(report.worktreeSweep?.worktrees.some((entry) => !entry.skipped)) || report.parkedSims.length > 0 || report.parkedAvds.length + report.parkedHostedDevices.filter((device) => device.listed !== false).length > 0 || orphanedDevices.length > 0 || staleDevices.length + report.finishedDevices.length > 0 || staleDeviceRecords.length > 0 || report.staleLedgerEntries.length + report.staleEasLedgerEntries.length > 0 || report.staleStatusCaches.length > 0 || buildLocks.stale.length > 0 || buildSlots.stale.length > 0 || deviceLeases.expired.length > 0 || easSessionSweep.orphaned.length > 0 || (olderThan !== null || all) && caches.length > 0 || caches.some((entry) => entry.willEmpty) || scopedWorkPending(cache, report));
|
|
2969
2980
|
}
|
|
2970
2981
|
async function runGcCore(opts, deps, execution, reportOnly = false) {
|
|
2971
2982
|
const { output, takeResults } = execution;
|
|
@@ -3117,6 +3128,10 @@ async function runGcCore(opts, deps, execution, reportOnly = false) {
|
|
|
3117
3128
|
output.record("buildLock", "done", `${lock.platform} build lock`, { id: lock.path });
|
|
3118
3129
|
output.log(chalk.green(`Cleared the ${lock.platform} build lock left by pid ${lock.pid ?? "?"} (${lock.projectRoot || "unrecorded workspace"})`));
|
|
3119
3130
|
}
|
|
3131
|
+
if (report.cacheScope === null) {
|
|
3132
|
+
const emptyLockDirs = pruneEmptyProcessLockDirs();
|
|
3133
|
+
if (emptyLockDirs > 0) output.log(chalk.dim(`Removed ${emptyLockDirs} empty process lock entries`));
|
|
3134
|
+
}
|
|
3120
3135
|
for (const slot of buildSlots.stale) {
|
|
3121
3136
|
throwIfCancelled(signal, "GC");
|
|
3122
3137
|
const cleared = (0, ownership_claim_exports.clearFreeClaimSet)({
|
|
@@ -3171,12 +3186,13 @@ async function runGcCore(opts, deps, execution, reportOnly = false) {
|
|
|
3171
3186
|
throwIfCancelled(signal, "GC");
|
|
3172
3187
|
if (all) deleteFailures += await emptyCaches(caches, output, signal, deps.operation);
|
|
3173
3188
|
else if (olderThan === null) {
|
|
3174
|
-
if (caches.
|
|
3175
|
-
} else deleteFailures += (await trimCaches(caches, olderThan, output, signal, deps.operation)).failures;
|
|
3189
|
+
if (caches.some((entry) => !entry.willEmpty)) output.log(chalk.dim("Shared caches left alone: pass --cache all to empty them, or --older-than <days> to trim them."));
|
|
3190
|
+
} else deleteFailures += (await trimCaches(caches.filter((entry) => !entry.willEmpty), olderThan, output, signal, deps.operation)).failures;
|
|
3191
|
+
if (!all) deleteFailures += await emptyCaches(caches.filter((entry) => entry.willEmpty), output, signal, deps.operation);
|
|
3176
3192
|
return payload(deleteFailures);
|
|
3177
3193
|
}
|
|
3178
3194
|
function gcCommand(program) {
|
|
3179
|
-
program.command("gc").description("Report what Stim has left behind: dead project entries, orphaned workspace directories, clean Stim-managed linked worktrees whose branch is merged or whose pull request was merged or closed, orphaned owned devices and EAS sessions, records of devices that no longer exist, build locks whose builder is gone, expired physical-device leases, the shared build caches, the build outputs and logs of each workspace, the memory of watchman and of the Gradle and Kotlin daemons, and recognized leftovers in TMPDIR. Reports by default; pass --delete to act.").option("--worktrees", "also remove clean, idle Stim-managed linked worktrees, not only merged ones: with --delete run `stim worktree remove` (never --force) on each; idle means unused for --older-than days, 7 without it").option("--delete", "actually prune the reported entries, reap the reported devices, lighten every workspace that is not building and ran no ios, android or macos command in the last 15 minutes by clearing its build outputs, a running dev server or booted device included, trim its Metro, client and device logs to their newest 8 MiB, and, unless maintenance.mode is off, stop each workspace idle past maintenance.idleStopHours as stim stop does").option("--older-than <days>", "also reap owned devices whose workspace has not been used this long, trim shared cache entries nothing has used in that time and device recordings made before it, and clear workspace build outputs only for workspaces idle this long and parked devices only once parked this long", (v) => {
|
|
3195
|
+
program.command("gc").description("Report what Stim has left behind: dead project entries, orphaned workspace directories, clean Stim-managed linked worktrees whose branch is merged or whose pull request was merged or closed, orphaned owned devices and EAS sessions, records of devices that no longer exist, build locks whose builder is gone, expired physical-device leases, the shared build caches, the build outputs and logs of each workspace, the memory of watchman and of the Gradle and Kotlin daemons, and recognized leftovers in TMPDIR. Reports by default; pass --delete to act.").option("--worktrees", "also remove clean, idle Stim-managed linked worktrees, not only merged ones: with --delete run `stim worktree remove` (never --force) on each; idle means unused for --older-than days, 7 without it").option("--delete", "actually prune the reported entries, reap the reported devices, lighten every workspace that is not building and ran no ios, android or macos command in the last 15 minutes by clearing its build outputs, a running dev server or booted device included, trim its Metro, client and device logs to their newest 8 MiB, and, unless maintenance.mode is off, stop each workspace idle past maintenance.idleStopHours as stim stop does, and shut down the shared watchman daemon (after removing its stale roots) when no client, subscription or trigger uses it").option("--older-than <days>", "also reap owned devices whose workspace has not been used this long, trim shared cache entries nothing has used in that time and device recordings made before it, and clear workspace build outputs only for workspaces idle this long and parked devices only once parked this long", (v) => {
|
|
3180
3196
|
const n = parseInt(v, 10);
|
|
3181
3197
|
if (!Number.isFinite(n) || String(n) !== String(v).trim()) throw new InvalidArgumentError("must be a whole number of days, e.g. --older-than 30");
|
|
3182
3198
|
return n;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
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 { Bt as findOrphanedDevices, Ft as describeParkedSims, Ht as findStaleProjectDevices, It as describeUnverifiableDevices, Mt as deleteParkedSims, Vt as findStaleDeviceRecords, ht as selectCaches } from "./device-capacity-D_IlxZRL.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-3DHVCn-k.mjs";
|
|
3
3
|
export { collectGcReport, gcCommand as default, deleteParkedSims, describeParkedSims, describeUnverifiableDevices, executeGc, findOrphanedDevices, findStaleDeviceRecords, findStaleProjectDevices, formatGcReport, readGcReport, runGc, selectCaches, withGcMaintenanceClaim };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as ANDROID_AVD_CONFIG_HELP } from "./settings-
|
|
2
|
-
import { i as findProjectRoot$1 } from "./project-
|
|
3
|
-
import { h as RECENT_LAUNCH_MS } from "./eas-session-ledger-
|
|
4
|
-
import { o as guideStatus, t as WATCHMAN_NESTED_WORKTREES } from "./doctor-watchman-
|
|
5
|
-
import "./status-watch-
|
|
1
|
+
import { t as ANDROID_AVD_CONFIG_HELP } from "./settings-Cz8kQJzr.mjs";
|
|
2
|
+
import { i as findProjectRoot$1 } from "./project-DIo71tGq.mjs";
|
|
3
|
+
import { h as RECENT_LAUNCH_MS } from "./eas-session-ledger-BDpSdFDM.mjs";
|
|
4
|
+
import { o as guideStatus, t as WATCHMAN_NESTED_WORKTREES } from "./doctor-watchman-B8e3s9ko.mjs";
|
|
5
|
+
import "./status-watch-Cs18eFkQ.mjs";
|
|
6
6
|
import { SETTINGS, SETTINGS_SCHEMA_URL, TUTORIAL_VERSION } from "@stim-cli/core/state";
|
|
7
7
|
import chalk from "chalk";
|
|
8
8
|
//#region src/guide/agent.ts
|
|
@@ -1641,7 +1641,8 @@ RULES
|
|
|
1641
1641
|
invalidProjects { path } the registry key is not absolute
|
|
1642
1642
|
orphanedPorts { project, label, port }
|
|
1643
1643
|
orphanedWorkspaces { dir, projectRoot, bytes } --delete removes the
|
|
1644
|
-
whole workspace directory
|
|
1644
|
+
whole workspace directory; projectRoot is null
|
|
1645
|
+
for an empty directory with no workspace.json
|
|
1645
1646
|
linkedWorktrees { path, idleDays, mergedInto, pullRequest,
|
|
1646
1647
|
pullRequestUnknown, willRemove, reason,
|
|
1647
1648
|
detail, eligibleAt, buildState } mergedInto is the
|
|
@@ -1732,9 +1733,10 @@ RULES
|
|
|
1732
1733
|
whose absolute workspace root is missing on a
|
|
1733
1734
|
mounted volume; --delete forgets the entry
|
|
1734
1735
|
only and contacts no EAS session
|
|
1735
|
-
staleStatusCaches { kind: "disk-usage" | "pull-request"
|
|
1736
|
-
file, bytes } entries of
|
|
1737
|
-
|
|
1736
|
+
staleStatusCaches { kind: "disk-usage" | "pull-request" | "git-merge",
|
|
1737
|
+
path, file, bytes } entries of
|
|
1738
|
+
$STIM_HOME/disk-usage, pull-requests and
|
|
1739
|
+
git-merge whose path is gone from a
|
|
1738
1740
|
mounted volume; --delete removes the file
|
|
1739
1741
|
idleDevices { kind, id, name, project, slot, lastActivityAt,
|
|
1740
1742
|
idleForMs, buildInProgress } booted owned
|
|
@@ -1869,12 +1871,14 @@ RULES
|
|
|
1869
1871
|
"busy" | "unknown", reclaimable, reason,
|
|
1870
1872
|
detail } without --cache, or with --cache
|
|
1871
1873
|
watchman or gradle-daemons; reclaimable marks
|
|
1872
|
-
the ones gc --delete
|
|
1873
|
-
|
|
1874
|
+
the ones gc --delete would stop (watchman) or
|
|
1875
|
+
gc --delete --cache gradle-daemons would
|
|
1876
|
+
(\`guide cleanup memory\`)
|
|
1874
1877
|
watchmanRoots { path, stale: "missing" | "pruned-worktree" |
|
|
1875
1878
|
null, subscriptions, triggers, removable,
|
|
1876
1879
|
detail } removable marks the stale roots
|
|
1877
|
-
--cache watchman would
|
|
1880
|
+
gc --delete (or --cache watchman) would
|
|
1881
|
+
watch-del
|
|
1878
1882
|
memoryNotices { message } why the memory sweep was skipped
|
|
1879
1883
|
bytes is null when the size is unknown: not measured, or the measurement
|
|
1880
1884
|
failed. idleDays is null when the last use is unknown. listed is false for
|
|
@@ -2860,6 +2864,9 @@ project's before exiting. You get your shell back with a bundler running: no
|
|
|
2860
2864
|
backgrounding idiom, no sleep, no poll loop, and no chance of building against
|
|
2861
2865
|
another worktree's bundler.
|
|
2862
2866
|
|
|
2867
|
+
If Expo cannot be resolved in a linked worktree, run \`stim worktree warm\`
|
|
2868
|
+
there before retrying. The refusal also names dependency installation.
|
|
2869
|
+
|
|
2863
2870
|
--json one line of facts on stdout, everything else on stderr:
|
|
2864
2871
|
{ port, supervisorPid, mode, logsDir, alreadyRunning }
|
|
2865
2872
|
--wait <seconds> how long to wait for server and remote tunnel readiness
|
|
@@ -3028,8 +3035,9 @@ WHAT THE SUPERVISOR IS
|
|
|
3028
3035
|
for the bundle lines.
|
|
3029
3036
|
|
|
3030
3037
|
expo-child and command-child put the Node the app pins (.nvmrc,
|
|
3031
|
-
.node-version, .tool-versions nodejs, or package.json volta.node)
|
|
3032
|
-
|
|
3038
|
+
.node-version, .tool-versions nodejs, or package.json volta.node), looking
|
|
3039
|
+
from the app directory up to its repository or worktree root, first on PATH
|
|
3040
|
+
when an nvm, fnm, Volta, asdf, mise or linked Homebrew
|
|
3033
3041
|
node/node@NN install satisfies the pin and the node already on PATH does
|
|
3034
3042
|
not; the metro log then records a project_node event naming it. When no
|
|
3035
3043
|
install has the version the pin names, the newest install of the pinned
|
|
@@ -4057,7 +4065,8 @@ Branch on the code, never on the message.`,
|
|
|
4057
4065
|
the first diagnostics are the phase names and the last error lines the
|
|
4058
4066
|
script printed, ahead of the compiler diagnostics.
|
|
4059
4067
|
Three Android refusals share this code without gradle itself failing:
|
|
4060
|
-
- NO ANDROID SDK, before gradle starts:
|
|
4068
|
+
- NO ANDROID SDK, before gradle starts: local React Native emulator runs
|
|
4069
|
+
refuse before Metro or device setup. Nothing exists at the SDK path
|
|
4061
4070
|
Stim resolves (ANDROID_HOME, else ANDROID_SDK_ROOT, else the default
|
|
4062
4071
|
location), and there is no android/local.properties. Set ANDROID_HOME to the SDK or write sdk.dir
|
|
4063
4072
|
into android/local.properties; \`stim doctor --platform android\` reports
|
|
@@ -4299,7 +4308,9 @@ too old to speak protocol 2, incompatible
|
|
|
4299
4308
|
toolchain/runtime/CPU, low disk, busy, sync/build failure, artifact failure,
|
|
4300
4309
|
or a checkout that changed while it built. Unsupported build kinds also refuse.
|
|
4301
4310
|
No local xcodebuild, Gradle or SwiftPM compile or alternate machine follows a
|
|
4302
|
-
refusal. For stim
|
|
4311
|
+
refusal. For stim android, a known toolchain refusal on the named machine stops
|
|
4312
|
+
before prebuild; busy, low disk and unreachable are checked again afterward.
|
|
4313
|
+
For stim ios, a toolchain difference on the named machine, such as Xcode,
|
|
4303
4314
|
the simulator runtime or the CPU, refuses before this machine runs prebuild or pod
|
|
4304
4315
|
install, even when prebuild would have produced an app the local cache already holds, or the
|
|
4305
4316
|
machine already holds the exact artifact. A
|
|
@@ -4794,7 +4805,8 @@ so a Debug run on one is wired to a LAN origin instead of localhost.`,
|
|
|
4794
4805
|
owned by this Stim home, or it is not booted or running. Permission and push
|
|
4795
4806
|
also refuse when no app is recorded for the device. Run the platform command
|
|
4796
4807
|
the remedy names (\`stim ios\` or \`stim android\`, with \`--slot\` for a named
|
|
4797
|
-
slot) and retry.
|
|
4808
|
+
slot) and retry. A non-Mac client cannot run a local iOS simulator; run the
|
|
4809
|
+
iOS tool on a Mac with a local Stim-owned simulator. No tool runs before this refusal.`
|
|
4798
4810
|
},
|
|
4799
4811
|
STIM_DEVICE_TOOL_UNSUPPORTED: {
|
|
4800
4812
|
summary: "that device tool has no equivalent on that platform",
|
|
@@ -5576,6 +5588,16 @@ not on any remote" (worktree remove)
|
|
|
5576
5588
|
source path and warm cannot move it, it prints "removed <dir>/Pods/Manifest.lock
|
|
5577
5589
|
so pod install runs" and \`stim ios\` runs \`pod install\`.
|
|
5578
5590
|
|
|
5591
|
+
"carry left out <app>/<platform>: <reason>"
|
|
5592
|
+
The app is an Expo project whose ios/ or android/ Git ignores, and Stim
|
|
5593
|
+
cannot show the source checkout's copy was generated from the app's current
|
|
5594
|
+
inputs: Stim has no prebuild record for it, its last prebuild did not
|
|
5595
|
+
finish, or the record names an earlier native fingerprint. Warm does not
|
|
5596
|
+
copy it, so the first \`stim <platform>\` in this worktree generates it
|
|
5597
|
+
fresh. Nothing to fix. To let later warms copy it, delete <platform>/ in
|
|
5598
|
+
the source checkout and run \`stim <platform>\` there, so Stim generates it
|
|
5599
|
+
fresh and records that.
|
|
5600
|
+
|
|
5579
5601
|
"carry carried <dir>/Pods but there is no <dir>/Podfile.lock"
|
|
5580
5602
|
Warm copied Pods but the destination has no Podfile.lock. Follow the printed
|
|
5581
5603
|
pod-install command before building.
|
|
@@ -6203,7 +6225,9 @@ not the caller's. The returned fingerprint remains null; transfer digests never
|
|
|
6203
6225
|
become reusable APK cache keys. Workers with native-gradle-peer-cache can offer a
|
|
6204
6226
|
completed APK for declared source and resolved variant, ABI and build options,
|
|
6205
6227
|
rechecking current private inputs against the saved receipt at offer and fetch.
|
|
6206
|
-
|
|
6228
|
+
When this machine has a JDK, native-gradle-peer-jdk also selects that exact
|
|
6229
|
+
JDK major for the private-input check. Older workers skip this lookup and use
|
|
6230
|
+
normal build placement. A hit skips source upload and compilation even while that worker is busy or
|
|
6207
6231
|
this machine has room. A miss follows normal placement; older Gradle workers
|
|
6208
6232
|
still build normally. Off mode, explicit local builds and disabled remote cache
|
|
6209
6233
|
reads skip peer lookup. Hosts without native-gradle-build refuse before upload.
|
|
@@ -6232,6 +6256,7 @@ cleanup stops that workspace, including resources created before a build fails.
|
|
|
6232
6256
|
|
|
6233
6257
|
Or install npm install --global @stim-cli/ci and use stim-ci directly.
|
|
6234
6258
|
Platforms: ios, android, macos, web. Everything after -- is argv, not a shell.
|
|
6259
|
+
Without --, run installs and launches the app, then stops it with exit code 0.
|
|
6235
6260
|
build is the only step that compiles (or restores from the cache, or with
|
|
6236
6261
|
--eas-profile downloads an EAS development build). It records the app for this
|
|
6237
6262
|
checkout, platform and selectors (iOS scheme and configuration, Android variant)
|
|
@@ -6714,8 +6739,10 @@ ${HOSTED_RECORDING("simulator")}
|
|
|
6714
6739
|
|
|
6715
6740
|
If hosting.agentDriver is none, the driver cannot enforce its policy, or the
|
|
6716
6741
|
host does not advertise hosted-ios-agent, agent reports
|
|
6717
|
-
{ driver: 'none', setting: 'hosting.agentDriver' }.
|
|
6718
|
-
|
|
6742
|
+
{ driver: 'none', setting: 'hosting.agentDriver' }. A run whose host disables
|
|
6743
|
+
the driver prints a notice; plain status also names the host setting when
|
|
6744
|
+
agent control is unavailable. Update the host and check its setting and
|
|
6745
|
+
agent-device installation. No other simulator becomes reachable.
|
|
6719
6746
|
Client hello carries only name and version, not features, so the host cannot gate
|
|
6720
6747
|
daemon startup or grant issuance on client support. The client checks the host's
|
|
6721
6748
|
hosted-ios-agent feature before using a grant.
|
|
@@ -7759,7 +7786,7 @@ WHAT MAKES THE CACHE ACTUALLY HIT: .FINGERPRINTIGNORE
|
|
|
7759
7786
|
looks exactly like a cache that is not there.
|
|
7760
7787
|
|
|
7761
7788
|
Stim ignores paths a fresh checkout never has and no native Debug build
|
|
7762
|
-
reads: android/local.properties, android/.idea, *.xcodeproj/xcuserdata, and,
|
|
7789
|
+
reads: android/local.properties, android/.idea, *.xcodeproj/xcuserdata, .git (and its contents), .expo, and,
|
|
7763
7790
|
while a .gitignore pattern matches them (even when committed), the
|
|
7764
7791
|
\`react-native bundle\` output ios/main.jsbundle and ios/assets. A project
|
|
7765
7792
|
does not repeat those.
|
|
@@ -8072,7 +8099,7 @@ OPT-IN CONCURRENCY LIMITS (UNLIMITED BY DEFAULT)
|
|
|
8072
8099
|
summary: "every flag per command, Android variants and flavors, the per-run simulator model, runtime and system image",
|
|
8073
8100
|
body: () => `THE OPTION SURFACE, IN FULL
|
|
8074
8101
|
start --json --wait <seconds> --remote --reset-cache
|
|
8075
|
-
ios --remote-build <local|auto|remote|remote-only|name> --slot <name> --json --plan --no-metro-check --no-build-cache --scheme <name> --configuration <name> --device-type <name> --runtime <version> --simulator-app <xcode|siniulator|stim-desktop> --device [udid] --wait <seconds> --no-wait --remote <eas|proxy|local|auto|remote|remote-only|machine>
|
|
8102
|
+
ios --remote-build <local|auto|remote|remote-only|name> --slot <name> --json --plan --no-metro-check --no-build-cache --scheme <name> --configuration <name> --device-type <name> --runtime <version> --install-runtime --simulator-app <xcode|siniulator|stim-desktop> --device [udid] --wait <seconds> --no-wait --remote <eas|proxy|local|auto|remote|remote-only|machine>
|
|
8076
8103
|
android --remote-build <local|auto|remote|remote-only|name> --slot <name> --json --plan --no-metro-check --no-build-cache --variant <name> --system-image <id> --device-profile <id> --device [serial] --wait <seconds> --no-wait --remote <proxy|eas|local|auto|remote|remote-only|machine>
|
|
8077
8104
|
ios/android --wait bounds owned-device slot waits (default 600s), or physical
|
|
8078
8105
|
leases with --device (default 60s). Remote targets do not join this local
|
|
@@ -8291,6 +8318,17 @@ OPT-IN CONCURRENCY LIMITS (UNLIMITED BY DEFAULT)
|
|
|
8291
8318
|
cannot (stale node_modules, a leftover path, an error), warm deletes
|
|
8292
8319
|
ios/Pods/Manifest.lock so \`stim ios\` runs \`pod install\`.
|
|
8293
8320
|
|
|
8321
|
+
In an Expo project whose ios/ or android/ Git ignores, warm copies that
|
|
8322
|
+
directory only when the source's last Stim prebuild of it ran on the app's
|
|
8323
|
+
current native fingerprint, and records the same prebuild in the worktree.
|
|
8324
|
+
Otherwise it leaves the directory out and prints
|
|
8325
|
+
"carry left out <app>/<platform>: <reason>"; the first
|
|
8326
|
+
\`stim <platform>\` there generates it fresh. A directory generated outside
|
|
8327
|
+
Stim has no record and is left out. To make it eligible, delete it in the
|
|
8328
|
+
source checkout and run \`stim <platform>\` there so Stim generates it
|
|
8329
|
+
fresh; running Stim over the existing directory records it as current even
|
|
8330
|
+
when it came from an older template.
|
|
8331
|
+
|
|
8294
8332
|
Other generated state stays eligible: .gradle, .cxx, *.tsbuildinfo, build
|
|
8295
8333
|
directories, and embedded JavaScript need project-specific decisions about
|
|
8296
8334
|
regeneration. Native intermediates can record the source checkout's paths;
|
|
@@ -8354,6 +8392,26 @@ OPT-IN CONCURRENCY LIMITS (UNLIMITED BY DEFAULT)
|
|
|
8354
8392
|
ios.runtime, android.systemImage, android.deviceProfile) for that one
|
|
8355
8393
|
invocation, exactly as \`--configuration\` overrides ios.configuration.
|
|
8356
8394
|
|
|
8395
|
+
\`stim ios --runtime 26.5 --install-runtime --remote local\` installs that
|
|
8396
|
+
missing iOS runtime with Xcode, then continues the run. Use
|
|
8397
|
+
\`--remote <mac>\` for a named approved hosting Mac, including from Linux.
|
|
8398
|
+
ios.autoInstallRuntime enables the same opt-in for an explicit ios.runtime
|
|
8399
|
+
or --runtime version; it defaults to false. Installation requires an exact
|
|
8400
|
+
major.minor[.patch] version, about 8-10 GB to download (actual size varies),
|
|
8401
|
+
and at least 20 GB free on the simulator volume for download and unpacking.
|
|
8402
|
+
A child-aware ownership claim serializes Stim installs in this Mac's Stim
|
|
8403
|
+
home and the installer takes an available build slot. Run output shows
|
|
8404
|
+
Xcode progress locally and periodic waiting messages remotely; status shows
|
|
8405
|
+
the install phase and remote machine. Without opt-in, a missing runtime
|
|
8406
|
+
still refuses. Automatic placement, eas/proxy and physical-device runs do
|
|
8407
|
+
not install runtimes: choose --remote local or one named Mac first.
|
|
8408
|
+
Xcode Settings > Components lists downloadable versions supported by Xcode;
|
|
8409
|
+
Stim retains Xcode's error for unavailable versions. Installed versions
|
|
8410
|
+
appear in stim doctor and xcrun simctl list runtimes. Runtimes are shared
|
|
8411
|
+
Xcode components, not Stim-owned devices: remove them manually through
|
|
8412
|
+
Xcode Settings > Components after checking other workspaces no longer need
|
|
8413
|
+
them. Stim does not prune them.
|
|
8414
|
+
|
|
8357
8415
|
A name that is not INSTALLED on this machine refuses with STIM_BAD_ARG
|
|
8358
8416
|
before anything is created, and the message lists the installed names, so a
|
|
8359
8417
|
wrong guess is one command, not a created simulator. A blank value is the
|
|
@@ -9085,8 +9143,9 @@ In on mode a pass runs, cheapest to rebuild first:
|
|
|
9085
9143
|
3. build-cache and Metro entries, least recently used first, down to
|
|
9086
9144
|
maintenance.capTargetPercent of caches.buildCacheMaxGb or
|
|
9087
9145
|
caches.metroCacheMaxGb, and entries unused for olderThanDays
|
|
9088
|
-
4. the Swift compilation cache, emptied whole
|
|
9089
|
-
|
|
9146
|
+
4. the Swift compilation cache, emptied whole once it is over
|
|
9147
|
+
caches.swiftCompilationCacheMaxGb (default 0, no cap), whatever the free
|
|
9148
|
+
disk, and kept while an iOS build holds its shared
|
|
9090
9149
|
claim (taken for each xcodebuild run that compiles with it) or that
|
|
9091
9150
|
claim is unresolved; the emptying holds the exclusive claim
|
|
9092
9151
|
5. linked worktrees whose branch or pull request finished (gc's finished
|
|
@@ -9284,8 +9343,9 @@ WHAT RECLAIMS AN OWNED DEVICE
|
|
|
9284
9343
|
shuts DOWN (never deletes) owned devices with no
|
|
9285
9344
|
driver, claim or activity for that long
|
|
9286
9345
|
|
|
9287
|
-
\`gc --delete
|
|
9288
|
-
|
|
9346
|
+
\`gc --delete\` also shuts down an unused watchman daemon, and \`gc --delete
|
|
9347
|
+
--cache gradle-daemons\` stops idle Gradle and Kotlin daemons. They are shared
|
|
9348
|
+
helper processes, not devices (\`guide cleanup memory\`).
|
|
9289
9349
|
|
|
9290
9350
|
\`worktree remove\` and \`gc --delete\` are the only two commands that delete;
|
|
9291
9351
|
\`gc --delete\` deletes worktrees only through \`worktree remove\`. \`gc
|
|
@@ -9758,8 +9818,15 @@ ORPHANED WORKSPACE DIRECTORIES
|
|
|
9758
9818
|
"Orphaned workspace directories" when the recorded project root is gone,
|
|
9759
9819
|
its volume is mounted, no registry key equals it or sits under it, and the
|
|
9760
9820
|
workspace is not in use. \`gc --delete\` re-checks each one, then removes
|
|
9761
|
-
it. A directory with
|
|
9762
|
-
|
|
9821
|
+
it. A directory with an unparseable workspace.json, or a root on an
|
|
9822
|
+
unmounted volume, is reported under Skipped and never deleted.
|
|
9823
|
+
A directory with no workspace.json that holds only leftovers of a removed
|
|
9824
|
+
workspace is reported the same way: maintenance.ndjson, log-error-index.json,
|
|
9825
|
+
ended-agents.json, empty lock files and an agent-device directory with no
|
|
9826
|
+
running daemon. It counts as gone when it is empty, or when the project
|
|
9827
|
+
root its maintenance log names maps to the directory name and is gone. Any
|
|
9828
|
+
other file (state.json, for one), a held lock or a log naming no root keeps
|
|
9829
|
+
it under Skipped. The empty directory report has no project root.
|
|
9763
9830
|
|
|
9764
9831
|
DELETED WORKTREES STILL REGISTERED
|
|
9765
9832
|
A worktree deleted outside Stim keeps its registry entry; \`stim status\`
|
|
@@ -9794,9 +9861,11 @@ TMPDIR LEFTOVERS
|
|
|
9794
9861
|
STALE STATUS CACHE ENTRIES
|
|
9795
9862
|
\`stim status\` caches each folder's size under $STIM_HOME/disk-usage and
|
|
9796
9863
|
each worktree's pull request under $STIM_HOME/pull-requests, which the
|
|
9797
|
-
maintenance worktree check and \`gc --delete\` also write.
|
|
9864
|
+
maintenance worktree check and \`gc --delete\` also write. The merge check
|
|
9865
|
+
caches each worktree's verdict under $STIM_HOME/git-merge. \`worktree
|
|
9798
9866
|
remove\` drops the entries of the worktree it removed (its checkout,
|
|
9799
|
-
node_modules and workspace folder,
|
|
9867
|
+
node_modules and workspace folder, its pull request and its merge
|
|
9868
|
+
verdict), not the size
|
|
9800
9869
|
entries of its owned devices' data folders. \`gc\` reports the
|
|
9801
9870
|
entries of a folder or worktree that was removed some other way under "Stale
|
|
9802
9871
|
status cache entries", and \`gc --delete\` removes them. An entry counts as
|
|
@@ -9855,6 +9924,10 @@ WHICH stim-* DEVICES gc DELETES
|
|
|
9855
9924
|
\`rm -rf <dir>\` for AVD data with no registration), and
|
|
9856
9925
|
never runs it. Boot, shutdown and teardown re-check ownership by the same
|
|
9857
9926
|
rule, so a device that stops matching is left alone.
|
|
9927
|
+
With STIM_HOME set, gc skips the device sweep because simulators and AVDs
|
|
9928
|
+
are machine-global, but pruning a dead project still deletes the devices its
|
|
9929
|
+
record marks as owned. gc lists them as to be deleted under "Device sweep
|
|
9930
|
+
notices"; every other stim-* device is reported as not touched.
|
|
9858
9931
|
|
|
9859
9932
|
ANDROID DATA WITHOUT A REGISTRATION
|
|
9860
9933
|
\`gc\` also reports stim-*.avd directories whose .ini registration is
|
|
@@ -9874,6 +9947,9 @@ BUILD LOCKS
|
|
|
9874
9947
|
\`gc --delete\` clears them. A lock whose builder IS running is a build in
|
|
9875
9948
|
progress -- it is named in the report and touched by nothing, because
|
|
9876
9949
|
removing it would put a second workspace on the same compile.
|
|
9950
|
+
\`gc --delete\` also removes the empty directories under ~/.stim/process-locks
|
|
9951
|
+
that removed projects and worktrees leave behind; it never touches a lock
|
|
9952
|
+
that holds a claim.
|
|
9877
9953
|
|
|
9878
9954
|
DEVICE LEASES
|
|
9879
9955
|
A workspace can hold a timed lease on a physical device. The lease is one
|
|
@@ -10024,7 +10100,7 @@ THE ONE CASE GC WILL NOT REAP
|
|
|
10024
10100
|
Wall-clock timestamps and command names are not ownership proof.`
|
|
10025
10101
|
},
|
|
10026
10102
|
memory: {
|
|
10027
|
-
summary: "watchman and Gradle and Kotlin daemon memory in gc, and when gc --delete --cache
|
|
10103
|
+
summary: "watchman and Gradle and Kotlin daemon memory in gc, and when gc --delete and gc --delete --cache gradle-daemons stop them",
|
|
10028
10104
|
body: () => `MEMORY
|
|
10029
10105
|
Every \`gc\` without --cache, and \`gc --cache watchman\` or
|
|
10030
10106
|
\`gc --cache gradle-daemons\`, reports the long-lived helpers that grow while
|
|
@@ -10032,19 +10108,22 @@ THE ONE CASE GC WILL NOT REAP
|
|
|
10032
10108
|
daemons. Each line gives the pid, physical footprint (the measure status
|
|
10033
10109
|
uses; resident size when the footprint cannot be read), uptime and whether
|
|
10034
10110
|
it is idle, and a kept one says why. The reclaimable line totals what
|
|
10035
|
-
the
|
|
10111
|
+
the commands below would free now.
|
|
10036
10112
|
|
|
10037
|
-
|
|
10038
|
-
|
|
10039
|
-
|
|
10113
|
+
Watchman is stopped by a plain \`gc --delete\` and by \`gc --delete --cache
|
|
10114
|
+
watchman\`; \`--cache all\` and every other \`--cache\` value leave it alone.
|
|
10115
|
+
The Gradle and Kotlin daemons are stopped only by \`--cache gradle-daemons\`:
|
|
10116
|
+
stim gc --delete (or: stim gc --delete --cache watchman)
|
|
10040
10117
|
runs \`watchman watch-del\` on each stale root
|
|
10041
10118
|
with no subscription or trigger, then
|
|
10042
10119
|
\`watchman shutdown-server\` only when
|
|
10043
10120
|
\`debug-status\` lists no client but gc's own
|
|
10044
|
-
call
|
|
10045
|
-
|
|
10046
|
-
|
|
10047
|
-
|
|
10121
|
+
call, every root's subscriptions and
|
|
10122
|
+
triggers were readable and no root has a
|
|
10123
|
+
trigger; otherwise the daemon is kept and
|
|
10124
|
+
the report names each client, as the Stim
|
|
10125
|
+
workspace whose dev server it belongs to
|
|
10126
|
+
where it can
|
|
10048
10127
|
stim gc --delete --cache gradle-daemons
|
|
10049
10128
|
stops each Gradle daemon its own
|
|
10050
10129
|
\`gradle --status\` reports IDLE, then each
|
|
@@ -10271,8 +10350,13 @@ DEVICE RECORDINGS
|
|
|
10271
10350
|
stays.
|
|
10272
10351
|
|
|
10273
10352
|
SHARED BUILD CACHES
|
|
10274
|
-
The caches that make a second workspace fast are alive by design and
|
|
10275
|
-
|
|
10353
|
+
The caches that make a second workspace fast are alive by design and, with
|
|
10354
|
+
one exception, not touched by a plain \`gc --delete\`. The exception is the
|
|
10355
|
+
Swift compilation cache (the Xcode CAS under $STIM_HOME/compilation-cache):
|
|
10356
|
+
once it is over caches.swiftCompilationCacheMaxGb (default 0, no cap), a
|
|
10357
|
+
plain \`gc --delete\` empties it whole, since age trimming would corrupt its
|
|
10358
|
+
index. It is kept, with the build named, while an iOS build holds its shared
|
|
10359
|
+
claim or that claim is unresolved. Every \`gc\` run reports them anyway,
|
|
10276
10360
|
each row tagged (registered) or (detected), with its size:
|
|
10277
10361
|
stim gc # report, caches included
|
|
10278
10362
|
stim gc --delete --older-than 30 # trim entries nothing has used
|
|
@@ -10399,6 +10483,15 @@ KEYS STIM READS
|
|
|
10399
10483
|
The \`--runtime\` flag overrides this per invocation,
|
|
10400
10484
|
and an uninstalled version refuses the same way,
|
|
10401
10485
|
naming the layer the value came from
|
|
10486
|
+
ios.autoInstallRuntime false (default). With true and an explicit ios.runtime
|
|
10487
|
+
or --runtime version, install a missing iOS runtime
|
|
10488
|
+
with Xcode on the local or named approved Mac before
|
|
10489
|
+
continuing. --install-runtime opts in for one run.
|
|
10490
|
+
Requires 20 GB free for download and unpacking;
|
|
10491
|
+
typically downloads 8-10 GB (actual size varies).
|
|
10492
|
+
Automatic placement, eas/proxy and physical phones
|
|
10493
|
+
do not install runtimes. Shared runtimes are removed
|
|
10494
|
+
manually in Xcode Settings > Components.
|
|
10402
10495
|
ios.scheme e.g. "RNTester" -- the shared Xcode scheme to build
|
|
10403
10496
|
when the workspace lists several and none matches
|
|
10404
10497
|
its name, which otherwise refuses with
|
|
@@ -11366,7 +11459,7 @@ stats. A listed paired name with a cache hit compiles nothing, contacts no worke
|
|
|
11366
11459
|
and records buildMachine with builtOn absent. Build failures retain the selected
|
|
11367
11460
|
value; builtOn is here or the configured machine entry when compilation ran.
|
|
11368
11461
|
Prebuild and pod install still run on this machine before a named offload; stim ios
|
|
11369
|
-
|
|
11462
|
+
and stim android check the machine's toolchain first. A refusal
|
|
11370
11463
|
starts no local xcodebuild, Gradle or SwiftPM compile.
|
|
11371
11464
|
A React Native offload sends the tracked and untracked files, and the gitignored
|
|
11372
11465
|
files the native fingerprint hashes or the Expo config reads, such as .env.local
|
|
@@ -11460,7 +11553,9 @@ do not query peer caches. Older workers continue normal placement. This peer
|
|
|
11460
11553
|
lookup also covers declared native Gradle worker APKs when the worker supports
|
|
11461
11554
|
native-gradle-peer-cache. It rechecks current private inputs against the saved
|
|
11462
11555
|
receipt at offer and fetch for the requested source, resolved variant, ABI and
|
|
11463
|
-
build options.
|
|
11556
|
+
build options. With a known local JDK, lookup also requires native-gradle-peer-jdk
|
|
11557
|
+
and rechecks on that exact JDK major; older workers use normal build placement.
|
|
11558
|
+
Caller fingerprints stay null; worker keys stay worker-scoped.
|
|
11464
11559
|
React Native and Expo development builds also query enabled paired workers
|
|
11465
11560
|
with react-native-peer-cache after local and configured-provider misses. Their
|
|
11466
11561
|
post-mutation fingerprint, native build choices and compatible toolchain must
|