stim 1.31.0 → 1.33.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-P84h3ssa.mjs → acquire-artifact-DTh_LxrE.mjs} +2 -2
- package/dist/{act-lcOIEy32.mjs → act-Cur4YKtK.mjs} +74 -25
- package/dist/{activity-Dw4N_RFe.mjs → activity-C8kBq9w0.mjs} +6 -6
- package/dist/{agent-device-usage-output-Boie2yB-.mjs → agent-device-usage-output-BTRaK_up.mjs} +5 -5
- package/dist/{android-BeeC15Ve.mjs → android-B2DSKg-A.mjs} +2 -2
- package/dist/{android-DhiWSOFU.mjs → android-BL-QqHjc.mjs} +87 -53
- package/dist/{android-aIuJZoDu.mjs → android-D5mCdVl2.mjs} +5 -5
- package/dist/{android-DsEj2CCs.mjs → android-Iq0M2t2d.mjs} +27 -15
- package/dist/{android-cas-CbumHXIq.mjs → android-cas-Dhcjkys1.mjs} +4 -4
- package/dist/android-cas-compiler.mjs +1 -1
- package/dist/android-image-DFk26aY6.mjs +254 -0
- package/dist/{android-project-CCEQyYJK.d.mts → android-project-BDlPnfmL.d.mts} +1 -1
- package/dist/api.d.mts +2 -1
- package/dist/api.mjs +28 -28
- package/dist/{apk-signed-tail-B9Usseps.mjs → apk-signed-tail-CPpA-3vu.mjs} +2 -2
- package/dist/{artifact-ta3xA0c4.mjs → artifact-BMjubIP2.mjs} +13 -13
- package/dist/{artifact-Cr34-Yyy.mjs → artifact-BufzdGbT.mjs} +34 -21
- package/dist/{artifact-platform-BO2Uvk_A.mjs → artifact-platform-DqCWUieN.mjs} +1 -1
- package/dist/{auto-placement-DtTRG0rk.mjs → auto-placement-D7P98glJ.mjs} +11 -9
- package/dist/{browser-web-DuULNZrS.mjs → browser-web-C74et-Nv.mjs} +15 -15
- package/dist/{build-BpFFbdXD.mjs → build-DFBGWOTc.mjs} +23 -23
- package/dist/{build-cache-BsKim4V7.mjs → build-cache-Cqj4FGnX.mjs} +20 -8
- package/dist/{build-plan-DH1rT11x.mjs → build-plan-T3Hi24ax.mjs} +7 -7
- package/dist/{cache-manifest-CfiEny4T.mjs → cache-manifest-8JX9S1QJ.mjs} +1 -1
- package/dist/cache-manifest.mjs +1 -1
- package/dist/{ccache-DVDO2ocE.mjs → ccache-BXtzEL6M.mjs} +34 -24
- package/dist/{cdp-C3svvXiE.mjs → cdp-C216kOAn.mjs} +1 -1
- package/dist/{chrome-DyDWurWG.mjs → chrome-C8sC5tdl.mjs} +1 -1
- package/dist/{cli-C0jjwTuM.mjs → cli-B2YSjc9s.mjs} +20 -20
- package/dist/cli.mjs +1 -1
- package/dist/{client-DhJOvSvh.mjs → client-0_Mnfz0a.mjs} +29 -9
- package/dist/collector-run.mjs +7 -7
- package/dist/{command-output-VrXd6qPX.mjs → command-output-DWI9tGPU.mjs} +1 -1
- package/dist/{config-D5qNWJEP.mjs → config-BW0fAtoK.mjs} +256 -246
- package/dist/{dependencies-DIU-5rnG.mjs → dependencies-CgvBZbXD.mjs} +39 -39
- package/dist/{dependency-state-DZVln1P9.mjs → dependency-state-mL5g4H6K.mjs} +2 -2
- package/dist/{detached-entry-BPlSaCwC.mjs → detached-entry-tfrgGVWb.mjs} +1 -1
- package/dist/{dev-client-DeAg0fso.mjs → dev-client-ChsHwgrn.mjs} +2 -2
- package/dist/{device-C2WsPgFt.mjs → device-B0htCt2u.mjs} +13 -13
- package/dist/{device-DuNLOlR6.mjs → device-DOehZpyx.mjs} +11 -11
- package/dist/{device-android-BjhH0Ru3.mjs → device-android-B8TQP5AX.mjs} +10 -10
- package/dist/{device-capacity-Du5wBTNJ.mjs → device-capacity-BAkETfIl.mjs} +9 -9
- package/dist/device-host-worker.mjs +58 -17
- package/dist/{device-ios-CUYUhSYO.mjs → device-ios-DFaYFdar.mjs} +9 -9
- package/dist/{device-lease-run-CHXQEn-7.mjs → device-lease-run-DpiCnRbZ.mjs} +5 -5
- package/dist/{device-pool-kUHO7MHO.mjs → device-pool-DP4sCeCC.mjs} +3 -3
- package/dist/{device-provision-e7bKS7lx.mjs → device-provision-CnNOIxCF.mjs} +10 -10
- package/dist/{doctor-BGcsAgAV.mjs → doctor-9GrW5YSP.mjs} +30 -17
- package/dist/{doctor-B6kIVgU9.mjs → doctor-C6Xn96RS.mjs} +1 -1
- package/dist/{doctor-fingerprint-o7ZI9YLn.mjs → doctor-fingerprint-DqWvIhMb.mjs} +1 -1
- package/dist/doctor-fingerprint.mjs +1 -1
- package/dist/{doctor-hva3sd9f.mjs → doctor-nRLBoajo.mjs} +54 -25
- package/dist/{doctor-watchman-DJY550yz.mjs → doctor-watchman-CDhpC3Oh.mjs} +5 -5
- package/dist/{eas-build-CBFgseh1.mjs → eas-build-CpJ4h9tG.mjs} +4 -4
- package/dist/{eas-fallback-DFXdz4d6.mjs → eas-fallback-B3z5nL1g.mjs} +6 -6
- package/dist/{eas-session-ledger-aFBLTZr2.mjs → eas-session-ledger-Bspy-VJQ.mjs} +6 -6
- package/dist/{error-diagnostics-CCsq_3uG.mjs → error-diagnostics-DoLGklYX.mjs} +10 -10
- package/dist/{exec-aULwtNly.mjs → exec-CGuDzt40.mjs} +103 -103
- package/dist/{gc-DASUa3Z_.mjs → gc-BWoOp9q7.mjs} +2 -2
- package/dist/{gc-B0K4d_PL.mjs → gc-DolXpMSB.mjs} +25 -54
- package/dist/{guide-Civo5-zV.mjs → guide-CmZB0GtP.mjs} +194 -50
- package/dist/{hosted-android-CH1Sm4wo.mjs → hosted-android-ByG-ICuh.mjs} +4 -4
- package/dist/{hosted-client-5ur3YpxY.mjs → hosted-client-D19Lv0tg.mjs} +6 -5
- package/dist/{hosted-logs-BYg4yeti.mjs → hosted-logs-D7anR6Dk.mjs} +17 -11
- package/dist/{hosted-logs-sync-BPe8xnMu.mjs → hosted-logs-sync-D182b1eJ.mjs} +5 -5
- package/dist/{hosted-macos-BagT0Gn3.mjs → hosted-macos-D0DDQxvl.mjs} +6 -6
- package/dist/{hosted-native-kaR4nUHk.mjs → hosted-native-BzXIy97W.mjs} +15 -11
- package/dist/{idle-shutdown-BWHQ7mQG.mjs → idle-shutdown-6i8CHoNq.mjs} +6 -6
- package/dist/{ios-BKR-Dq46.mjs → ios-AdhPKXO3.mjs} +8 -8
- package/dist/{ios-CdAV4-1E.mjs → ios-BdZdNsAj.mjs} +6 -6
- package/dist/{ios-CsRVik64.mjs → ios-Qam0bT9n.mjs} +1 -1
- package/dist/{ios-DUL68MI5.mjs → ios-dbXzjTxx.mjs} +28 -28
- package/dist/{ios-device-CiBA-er9.mjs → ios-device-DLdEDWJj.mjs} +1 -1
- package/dist/{ios-device-Dz8gFZ0K.mjs → ios-device-DXbHZfFe.mjs} +3 -3
- package/dist/{ios-project-Br1tVYWX.mjs → ios-project-BzfLigfh.mjs} +7 -7
- package/dist/{ios-signing-BJzvDPfU.mjs → ios-signing-D-tSX1iF.mjs} +2 -2
- package/dist/{ios-state-BEIJRJ7P.mjs → ios-state-CWsBysyN.mjs} +1 -1
- package/dist/{js-swap-BfG8XpyS.mjs → js-swap-EDVOJmqx.mjs} +6 -6
- package/dist/{launch-CrGndh8T.mjs → launch-CKHpthsw.mjs} +20 -20
- package/dist/{lightened-DZ9Ip0T3.mjs → lightened-Cv4ToJRX.mjs} +5 -5
- package/dist/{logs-C-hfMsxK.mjs → logs-DCQ3_tGS.mjs} +6 -6
- package/dist/{logs-DpIKWT3A.mjs → logs-IagR9dWI.mjs} +7 -7
- package/dist/{macos-DZ9ZSolN.mjs → macos-Ch7vuM-G.mjs} +22 -22
- package/dist/{macos-DNmKwfDy.mjs → macos-pc0aVVbN.mjs} +1 -1
- package/dist/macos-run.mjs +1 -1
- package/dist/maintenance-run.mjs +6 -6
- package/dist/{metro-mKHEMO-a.mjs → metro-B5PVz0Wv.mjs} +4 -4
- package/dist/{metro-request-RDhyx85c.mjs → metro-request-2LmFpC1z.mjs} +9 -3
- package/dist/{named-ports-B0hCk2v-.mjs → named-ports-CA0nB9Yw.mjs} +3 -3
- package/dist/{native-android-DExhFqR6.mjs → native-android-B3CEDq4R.mjs} +29 -19
- package/dist/{native-gradle-artifact-inputs-Bcmbdc23.mjs → native-gradle-artifact-inputs-BLnO2hHR.mjs} +5 -5
- package/dist/{native-runtime-D4qgnjK_.mjs → native-runtime-e1OU8gEN.mjs} +6 -6
- package/dist/{native-source-D1AzWiuP.mjs → native-source-ChAGj7R1.mjs} +1 -1
- package/dist/{native-xcode-inputs-EWma1lXh.mjs → native-xcode-inputs-DL3ETb8s.mjs} +3 -3
- package/dist/{native-xcode-ios-Y6rzmWTc.mjs → native-xcode-ios-D4e8k2Jy.mjs} +17 -17
- package/dist/offload-worker.d.mts +3 -1
- package/dist/offload-worker.mjs +37 -23
- package/dist/{operation-exec-Dp4FuIGR.mjs → operation-exec-DKlBcKAL.mjs} +1 -1
- package/dist/{ownership-CCfiBfOP.mjs → ownership-hC7xvvxF.mjs} +3 -3
- package/dist/{page-CQJlcj3x.mjs → page-Dj8IqvGM.mjs} +2 -2
- package/dist/{phone-reverses-Drj5QQCh.mjs → phone-reverses-rvyxW1Fl.mjs} +4 -4
- package/dist/{placement-log-CFT8SnlS.mjs → placement-log-nnGnu8mo.mjs} +1 -1
- package/dist/{plan-placement-DhKCH_wF.mjs → plan-placement-D3JD-T-K.mjs} +6 -6
- package/dist/{ports-BNtJ5DCj.mjs → ports-CZJJfJ8Q.mjs} +3 -3
- package/dist/{prebuild-D0hvmO4j.mjs → prebuild-Bhs7TTcz.mjs} +12 -12
- package/dist/{project-DCLkDM8C.mjs → project-DWEXiBA9.mjs} +16 -16
- package/dist/{pull-request-BzLmzAIQ.mjs → pull-request-BpMTNkMB.mjs} +2 -2
- package/dist/pull-requests.mjs +1 -1
- package/dist/{react-native-android-Dp7vctEA.mjs → react-native-android-C6Y270GS.mjs} +37 -33
- package/dist/{react-native-build-vK2lFYfN.mjs → react-native-build-DaPfzf_e.mjs} +10 -10
- package/dist/{react-native-doctor-BtWzwZHU.mjs → react-native-doctor-DGMPxkPS.mjs} +6 -6
- package/dist/{react-native-ios-DW1Ax3Yv.mjs → react-native-ios-dX48_92n.mjs} +21 -17
- package/dist/{recordings-BWnIlhZH.mjs → recordings-AKZfsW2W.mjs} +1 -1
- package/dist/{registration-BwCe64PH.mjs → registration-DKjJGQ6p.mjs} +1 -1
- package/dist/{reload-BS_ntVV_.mjs → reload-BGwblBJ9.mjs} +1 -1
- package/dist/{reload-B-d7-CsI.mjs → reload-DsOByDfy.mjs} +17 -17
- package/dist/{remote-DScVlaMz.mjs → remote-D0uJZ76R.mjs} +9 -9
- package/dist/{result-Epkl6gyG.mjs → result-DuimMZKJ.mjs} +24 -20
- package/dist/{run-2CHAJ9Oj.mjs → run-N-BbRxnC.mjs} +2 -2
- package/dist/{selection-C95m--1_.mjs → selection-xS50Mt0V.mjs} +5 -4
- package/dist/{server-bare-CFyVFZXJ.mjs → server-bare-BTlICuaX.mjs} +2 -2
- package/dist/{server-command-B1gDRJB2.mjs → server-command-BC0EgMfY.mjs} +5 -5
- package/dist/{server-expo-CP4dURQp.mjs → server-expo-15RjL0ir.mjs} +3 -3
- package/dist/server-expo-gYIypb0-.mjs +2 -0
- package/dist/{settings-C6UTYW2K.mjs → settings-B5IBDfTx.mjs} +4 -4
- package/dist/{settings-CjTRNCi3.mjs → settings-CuP55ieT.mjs} +2 -2
- package/dist/{settings-payload-zf5EnCTg.mjs → settings-payload-BIGGQ3or.mjs} +5 -5
- package/dist/{settings-write-Fe0K6BeC.mjs → settings-write-D85j8mej.mjs} +6 -6
- package/dist/settings.schema.json +40 -2
- package/dist/{simslim-93xmPh-d.mjs → simslim-DKdJx0LL.mjs} +2 -2
- package/dist/{slot-launch-B4MHzVX2.mjs → slot-launch-D4oREwhx.mjs} +6 -6
- package/dist/{stage-DDrnM0CY.mjs → stage-DKC6tDXu.mjs} +2 -2
- package/dist/{start-LSwIFlBv.mjs → start-BsEV4S-s.mjs} +12 -12
- package/dist/{start-BXl5tkv8.mjs → start-DfPSLc__.mjs} +1 -1
- package/dist/{state-CM_HvvkS.mjs → state-CtmYTRWm.mjs} +4 -4
- package/dist/{state-CiflgxTP.mjs → state-DSOUqO-o.mjs} +2 -2
- package/dist/{stats-EgpYD536.mjs → stats-ByEUblPr.mjs} +5 -5
- package/dist/{stats-report-B86Cv7Uc.mjs → stats-report-BVRCqwWA.mjs} +1 -1
- package/dist/{status-BLDvhatv.mjs → status-C6hLlDqW.mjs} +37 -28
- package/dist/{status-GQ-JqvRi.mjs → status-DTFhDnd1.mjs} +1 -1
- package/dist/{status-DBMD7ZQT.mjs → status-FP1MH9qn.mjs} +1 -1
- package/dist/{status-watch-BwG4lJ1q.mjs → status-watch-D8s823CZ.mjs} +5 -5
- package/dist/status-worker.mjs +1 -1
- package/dist/{stim-desktop-1XxET4S8.mjs → stim-desktop-_WTria-r.mjs} +2 -2
- package/dist/{stop-4SAV_RR8.mjs → stop-5LKfVv-0.mjs} +2 -2
- package/dist/{stop-WyrZQuX6.mjs → stop-BVI2-L7s.mjs} +16 -16
- package/dist/{stop-BfNhzvXO.mjs → stop-CpTy6bod.mjs} +5 -5
- package/dist/supervisor-run.mjs +137 -45
- package/dist/{support-Cffz6_Ft.mjs → support-CqyWfZZI.mjs} +18 -8
- package/dist/{support-Cs24xRQa.mjs → support-D8OH0z98.mjs} +9 -9
- package/dist/{swiftpm-artifact-inputs-yp8D5LE4.mjs → swiftpm-artifact-inputs-uq5oV7xR.mjs} +4 -4
- package/dist/{swiftpm-macos-D0CzQtpp.mjs → swiftpm-macos-BuhqYB3n.mjs} +11 -11
- package/dist/{toolchain-BEra9AIX.mjs → toolchain-D_jotUG7.mjs} +1 -1
- package/dist/{toolchain-CGdgD4x4.mjs → toolchain-s5ZmG42Z.mjs} +25 -14
- package/dist/{trigger-CfnOfpDd.mjs → trigger-BtB4kbe0.mjs} +2 -2
- package/dist/trigger-D8B7QR0q.mjs +2 -0
- package/dist/{warm-progress-_aTMvkIH.mjs → warm-progress-q11Vdvhh.mjs} +6 -6
- package/dist/{web-BE89ONcc.mjs → web-DwYCTFdh.mjs} +9 -9
- package/dist/web-cCfM8kwV.mjs +2 -0
- package/dist/web-run.mjs +8 -8
- package/dist/windows-report.mjs +1 -1
- package/dist/{workspace-state-3bF4TB8P.mjs → workspace-state-BdZ-QgmB.mjs} +3 -3
- package/dist/{workspaces-BNEyJ1B_.mjs → workspaces-B3ahAHZc.mjs} +18 -17
- package/dist/{worktree-BTrii9e_.mjs → worktree-BhsML6GV.mjs} +77 -31
- package/dist/{worktree-DB3Ypdj6.mjs → worktree-CrjsPIs2.mjs} +1 -1
- package/package.json +7 -7
- package/dist/server-expo-D3k9mvP8.mjs +0 -2
- package/dist/trigger-DBZ-GBrl.mjs +0 -2
- package/dist/web-DQPxvFVD.mjs +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { i as findProjectRoot$1 } from "./project-
|
|
4
|
-
import { i as getSwiftpmCacheUsage, n as swiftpmCacheLines, r as getAgentDeviceUsage, t as agentDeviceLines } from "./agent-device-usage-output-
|
|
5
|
-
import { t as readProjectStats } from "./stats-report-
|
|
1
|
+
import { o as formatLongDuration } from "./command-output-DWI9tGPU.mjs";
|
|
2
|
+
import { rt as formatBytes } from "./config-BW0fAtoK.mjs";
|
|
3
|
+
import { i as findProjectRoot$1 } from "./project-DWEXiBA9.mjs";
|
|
4
|
+
import { i as getSwiftpmCacheUsage, n as swiftpmCacheLines, r as getAgentDeviceUsage, t as agentDeviceLines } from "./agent-device-usage-output-BTRaK_up.mjs";
|
|
5
|
+
import { t as readProjectStats } from "./stats-report-BVRCqwWA.mjs";
|
|
6
6
|
import { archivedUsage, readArchives } from "@stim-cli/core/state";
|
|
7
7
|
import chalk from "chalk";
|
|
8
8
|
//#region src/commands/stats.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as gitPath } from "./operation-exec-
|
|
1
|
+
import { i as gitPath } from "./operation-exec-DKlBcKAL.mjs";
|
|
2
2
|
import { readStatsReport, statsProjectKey } from "@stim-cli/core/state";
|
|
3
3
|
//#region src/engine/stats-report.ts
|
|
4
4
|
/** The stats report for the project at `root`, keyed like the run recorders; Git runs with `env` and dies when `signal` aborts. */
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { O as workspaceLogErrorIndex, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { s as gitAsync } from "./operation-exec-
|
|
6
|
-
import { Bt as repoRoot, Ct as gitCommonDirOnDisk, Ot as linkedWorktreesOnDisk, Q as resolveSettings, lt as workspaceHiddenSetting, xt as gitCommonDir } from "./settings-
|
|
7
|
-
import { I as readWorkspaceLaunches, M as readMetroTunnel, P as readRemoteSession, S as readAppJson, a as findServerWorkspace, l as projectShortcut, u as detectPlatforms, v as detectIsExpo, y as detectTutorial } from "./project-
|
|
8
|
-
import { H as ownedAvdDeviceProfile, K as ownedAvdSerialResolver, N as listAdbDevices, P as listAdbDevicesAsync, bt as parkedMaxSetting, mt as POOL_SETTING_REMEDY, xt as readParked } from "./android-
|
|
9
|
-
import { c as pidExists, d as resolveProjectMetro, h as isMetroRunning, i as listeningPids, l as processCwd, o as listeningPidsByPort, u as processCwds } from "./metro-
|
|
1
|
+
import { T as process_identity_exports, t as getExecutor } from "./exec-CGuDzt40.mjs";
|
|
2
|
+
import { O as workspaceLogErrorIndex, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-BdZ-QgmB.mjs";
|
|
3
|
+
import { a as formatElapsed, i as formatDuration, r as clockTime, u as plural } from "./command-output-DWI9tGPU.mjs";
|
|
4
|
+
import { at as isOnMountedVolume, ct as volumeRootFor, d as getConfigDir, dt as deviceSlotKey, ht as projectDeviceSlots, it as isAbsentPath, ot as listMountedVolumes, p as getPlatformDeviceLimits, pt as parseDeviceSlotKey, rt as formatBytes, u as getConcurrencyLimits, v as loadConfig$1 } from "./config-BW0fAtoK.mjs";
|
|
5
|
+
import { s as gitAsync } from "./operation-exec-DKlBcKAL.mjs";
|
|
6
|
+
import { Bt as repoRoot, Ct as gitCommonDirOnDisk, Ot as linkedWorktreesOnDisk, Q as resolveSettings, lt as workspaceHiddenSetting, xt as gitCommonDir } from "./settings-B5IBDfTx.mjs";
|
|
7
|
+
import { I as readWorkspaceLaunches, M as readMetroTunnel, P as readRemoteSession, S as readAppJson, a as findServerWorkspace, l as projectShortcut, u as detectPlatforms, v as detectIsExpo, y as detectTutorial } from "./project-DWEXiBA9.mjs";
|
|
8
|
+
import { H as ownedAvdDeviceProfile, K as ownedAvdSerialResolver, N as listAdbDevices, P as listAdbDevicesAsync, bt as parkedMaxSetting, mt as POOL_SETTING_REMEDY, xt as readParked } from "./android-Iq0M2t2d.mjs";
|
|
9
|
+
import { c as pidExists, d as resolveProjectMetro, h as isMetroRunning, i as listeningPids, l as processCwd, o as listeningPidsByPort, u as processCwds } from "./metro-B5PVz0Wv.mjs";
|
|
10
10
|
import { o as parseNdjsonLine } from "./ndjson-CrjIsGzw.mjs";
|
|
11
|
-
import { E as metroLastStop, S as describeMetroLastStop, cn as hasMetroReverse, cr as attributeMachineUsage, lr as readFootprints, p as machineNumber } from "./ccache-
|
|
12
|
-
import { a as readWebPage, o as readWebRecord, u as webFacts } from "./state-
|
|
13
|
-
import { A as poolLine, C as diskLine, D as loadLine, E as gitSummaryText, F as tightVolumes, I as unprovisionedWorktrees, L as withWebFacts, M as remoteDeviceState, N as slotUsageLines, O as metroReverseTargets, P as statusActivity, S as deviceLeaseStates, _ as addReverseMissingIssue, b as capacityLoad, g as activityLabel, j as remoteDeviceLine, k as parseDfFree, r as readEasSessionLedger$1, v as applyMachineMemory, w as environmentState, x as deviceLeaseLines, y as capacity } from "./eas-session-ledger-
|
|
14
|
-
import { Ct as buildSlotUsage, G as buildStatusLine, J as parseActiveBuild, K as bundlingActivity, U as activeBuildState, V as ACTIVE_BUILD_KEY, W as buildReport, at as readStats$1, lt as statsProjectKey$1, x as resolveSupervisorTarget } from "./workspaces-
|
|
15
|
-
import { a as createDeviceProcessTables, b as leaseIsExpired, h as tailLines, m as readWebActivity, r as createActivityReader, w as parseWorkspaceLeases, x as listLeaseFiles } from "./activity-
|
|
16
|
-
import { b as parseSimctlList, f as listAllIosSimsAsync } from "./ios-
|
|
17
|
-
import {
|
|
18
|
-
import "./hosted-macos-
|
|
19
|
-
import { i as readSupervisorState } from "./stop-
|
|
20
|
-
import { l as applyStatusMeasures, n as workspacePhase, s as mergeState, u as createStatusMeasurer } from "./warm-progress-
|
|
21
|
-
import { r as workspaceRecordingEnabled } from "./recordings-
|
|
22
|
-
import { n as maintenanceLines, r as maintenanceStatus } from "./status-
|
|
23
|
-
import { c as deviceSlotUsages } from "./device-capacity-
|
|
24
|
-
import { d as readIosDevices, s as isReachable } from "./ios-device-
|
|
25
|
-
import { t as triggerMaintenance } from "./trigger-
|
|
26
|
-
import { a as createRefreshScheduler, c as watchStatusSources, n as WATCH_LIGHT_INTERVAL_MS, o as watchChangeKey, r as WATCH_MACHINE_INTERVAL_MS, s as watchPayload, t as WATCH_FALLBACK_MS } from "./status-watch-
|
|
11
|
+
import { E as metroLastStop, S as describeMetroLastStop, cn as hasMetroReverse, cr as attributeMachineUsage, lr as readFootprints, p as machineNumber } from "./ccache-BXtzEL6M.mjs";
|
|
12
|
+
import { a as readWebPage, o as readWebRecord, u as webFacts } from "./state-CtmYTRWm.mjs";
|
|
13
|
+
import { A as poolLine, C as diskLine, D as loadLine, E as gitSummaryText, F as tightVolumes, I as unprovisionedWorktrees, L as withWebFacts, M as remoteDeviceState, N as slotUsageLines, O as metroReverseTargets, P as statusActivity, S as deviceLeaseStates, _ as addReverseMissingIssue, b as capacityLoad, g as activityLabel, j as remoteDeviceLine, k as parseDfFree, r as readEasSessionLedger$1, v as applyMachineMemory, w as environmentState, x as deviceLeaseLines, y as capacity } from "./eas-session-ledger-Bspy-VJQ.mjs";
|
|
14
|
+
import { Ct as buildSlotUsage, G as buildStatusLine, J as parseActiveBuild, K as bundlingActivity, U as activeBuildState, V as ACTIVE_BUILD_KEY, W as buildReport, at as readStats$1, lt as statsProjectKey$1, x as resolveSupervisorTarget } from "./workspaces-B3ahAHZc.mjs";
|
|
15
|
+
import { a as createDeviceProcessTables, b as leaseIsExpired, h as tailLines, m as readWebActivity, r as createActivityReader, w as parseWorkspaceLeases, x as listLeaseFiles } from "./activity-C8kBq9w0.mjs";
|
|
16
|
+
import { b as parseSimctlList, f as listAllIosSimsAsync } from "./ios-BdZdNsAj.mjs";
|
|
17
|
+
import { m as probeHostedSession } from "./hosted-client-D19Lv0tg.mjs";
|
|
18
|
+
import "./hosted-macos-D0DDQxvl.mjs";
|
|
19
|
+
import { i as readSupervisorState } from "./stop-BVI2-L7s.mjs";
|
|
20
|
+
import { l as applyStatusMeasures, n as workspacePhase, s as mergeState, u as createStatusMeasurer } from "./warm-progress-q11Vdvhh.mjs";
|
|
21
|
+
import { r as workspaceRecordingEnabled } from "./recordings-AKZfsW2W.mjs";
|
|
22
|
+
import { n as maintenanceLines, r as maintenanceStatus } from "./status-DTFhDnd1.mjs";
|
|
23
|
+
import { c as deviceSlotUsages } from "./device-capacity-BAkETfIl.mjs";
|
|
24
|
+
import { d as readIosDevices, s as isReachable } from "./ios-device-DXbHZfFe.mjs";
|
|
25
|
+
import { t as triggerMaintenance } from "./trigger-BtB4kbe0.mjs";
|
|
26
|
+
import { a as createRefreshScheduler, c as watchStatusSources, n as WATCH_LIGHT_INTERVAL_MS, o as watchChangeKey, r as WATCH_MACHINE_INTERVAL_MS, s as watchPayload, t as WATCH_FALLBACK_MS } from "./status-watch-D8s823CZ.mjs";
|
|
27
27
|
import { t as watchStdoutReader } from "./stdout-reader-C8yjre1x.mjs";
|
|
28
28
|
import { createHash, randomUUID } from "node:crypto";
|
|
29
29
|
import { mkdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
30
30
|
import { join, posix, resolve } from "node:path";
|
|
31
|
-
import { rotatedLogPath } from "@stim-cli/core";
|
|
31
|
+
import { quotedPath, rotatedLogPath } from "@stim-cli/core";
|
|
32
32
|
import { DEVICE_RECLAIM_REASON, ERROR_SOURCES, archiveRoot, archivedUsage, bundleMarkerPlatform, countErrorEntries, gitMergeCacheDir, hostedAndroidPlacements, hostedAndroidRecords, hostedAndroidStatus, hostedIosPlacements, hostedIosRecords, hostedIosStatus, linkReplacedArchives, loadPerCore, logFiles, macosAppState, maxLoadPerCore, parseHostedAndroidPlacement, parseHostedIosPlacement, queryLogs, readArchives, readBuildDetail, readBuildHistory, readDeviceIdleShutdowns, readDevicePlacement, readIdleStop, readLastBuilds, readMacosRecord, recordMatches, sortByTs, unreadableHostedAndroid, unreadableHostedIos, withDerivedFacts, withGitChip, withStateReadCache } from "@stim-cli/core/state";
|
|
33
33
|
import { basename as basename$1, dirname as dirname$1, join as join$1 } from "path";
|
|
34
34
|
import chalk from "chalk";
|
|
@@ -899,6 +899,7 @@ async function readStatusFacts(probes, gitScope, cwd) {
|
|
|
899
899
|
await gitRead;
|
|
900
900
|
const history = readStats$1().record?.history;
|
|
901
901
|
const states = [];
|
|
902
|
+
let mountedVolumes;
|
|
902
903
|
const labelOnlyRoots = [];
|
|
903
904
|
const launchesByState = [];
|
|
904
905
|
const easLedger = readEasSessionLedger$1();
|
|
@@ -989,7 +990,13 @@ async function readStatusFacts(probes, gitScope, cwd) {
|
|
|
989
990
|
if (macosFacts.warning) state.warnings.push(macosFacts.warning);
|
|
990
991
|
state.live ||= macos.state === "running" || macos.state === "orphaned" || macos.build.state === "running";
|
|
991
992
|
}
|
|
992
|
-
|
|
993
|
+
const missing = isAbsentPath(path) && isOnMountedVolume(path, mountedVolumes ??= listMountedVolumes());
|
|
994
|
+
const phase = workspacePhase(state.live, saved, { now: leaseNow });
|
|
995
|
+
Object.assign(state, builds, missing && phase.phase !== "live" ? {
|
|
996
|
+
phase: "idle",
|
|
997
|
+
phaseSince: null
|
|
998
|
+
} : phase, {
|
|
999
|
+
...missing ? { pathMissing: true } : {},
|
|
993
1000
|
platforms: (() => {
|
|
994
1001
|
const context = {
|
|
995
1002
|
projectPath: path,
|
|
@@ -1434,7 +1441,8 @@ function androidStatusLines(record, slotLabel) {
|
|
|
1434
1441
|
function formatGb(mb) {
|
|
1435
1442
|
return `${(mb / 1024).toFixed(1)} GB`;
|
|
1436
1443
|
}
|
|
1437
|
-
function phaseMarker({ phase, live, warmStep }) {
|
|
1444
|
+
function phaseMarker({ phase, live, warmStep, pathMissing }) {
|
|
1445
|
+
if (pathMissing) return chalk.yellow(" [folder missing]");
|
|
1438
1446
|
if (phase === "warming") return chalk.cyan(` [warming: ${warmStep}]`);
|
|
1439
1447
|
if (phase === "ready") return chalk.green(" [ready]");
|
|
1440
1448
|
return live ? "" : chalk.dim(" [idle]");
|
|
@@ -1558,6 +1566,7 @@ function renderStatus({ archived, archivedUsage: usage, projects, states, labelO
|
|
|
1558
1566
|
for (const device of state.physicalDevices ?? []) out.push(` ${physicalDeviceLine(device, leaseNow)}`);
|
|
1559
1567
|
for (const remote of state.remoteDevices ?? []) out.push(` ${remoteDeviceLine(remote)}`);
|
|
1560
1568
|
for (const w of state.warnings) out.push(chalk.yellow(` ! ${w}`));
|
|
1569
|
+
if (state.pathMissing) out.push(chalk.yellow(` ! the folder is gone; run \`stim worktree remove ${quotedPath(path)}\` or \`stim gc --delete\` to remove the entry`));
|
|
1561
1570
|
for (const note of state.issues.filter((issue) => issue.severity === "info")) out.push(chalk.dim(` - ${note.message}`));
|
|
1562
1571
|
}
|
|
1563
1572
|
for (const pool of pools) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { rt as formatBytes } from "./config-BW0fAtoK.mjs";
|
|
2
2
|
import { t as resolveMaintenanceSettings } from "./settings-D9LtQaUw.mjs";
|
|
3
3
|
import { claimRemoveCommand, readClaimSet } from "@stim-cli/core/ownership-claim";
|
|
4
4
|
import { maintenanceRunClaims, readMaintenanceState } from "@stim-cli/core/state";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as runStatusWatch, r as statusCommand, t as readVolumes } from "./status-
|
|
1
|
+
import { n as runStatusWatch, r as statusCommand, t as readVolumes } from "./status-C6hLlDqW.mjs";
|
|
2
2
|
export { statusCommand as default, readVolumes, runStatusWatch };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as getExecutor } from "./exec-
|
|
2
|
-
import { d as androidToolPath } from "./android-
|
|
3
|
-
import { c as pidExists } from "./metro-
|
|
4
|
-
import { n as easMachineStateRoot } from "./eas-session-ledger-
|
|
5
|
-
import { b as parseSimctlList } from "./ios-
|
|
1
|
+
import { t as getExecutor } from "./exec-CGuDzt40.mjs";
|
|
2
|
+
import { d as androidToolPath } from "./android-Iq0M2t2d.mjs";
|
|
3
|
+
import { c as pidExists } from "./metro-B5PVz0Wv.mjs";
|
|
4
|
+
import { n as easMachineStateRoot } from "./eas-session-ledger-Bspy-VJQ.mjs";
|
|
5
|
+
import { b as parseSimctlList } from "./ios-BdZdNsAj.mjs";
|
|
6
6
|
import { existsSync, readdirSync, statSync, watch } from "node:fs";
|
|
7
7
|
import { basename, dirname, join } from "node:path";
|
|
8
8
|
//#region src/status-watch.ts
|
package/dist/status-worker.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as getExecutor } from "./exec-
|
|
2
|
-
import { c as ensureConfig, w as saveConfig } from "./config-
|
|
1
|
+
import { t as getExecutor } from "./exec-CGuDzt40.mjs";
|
|
2
|
+
import { c as ensureConfig, w as saveConfig } from "./config-BW0fAtoK.mjs";
|
|
3
3
|
import { randomUUID } from "node:crypto";
|
|
4
4
|
import { workspaceId } from "@stim-cli/core";
|
|
5
5
|
import { readHomeIdentity, withConfigLockAsync } from "@stim-cli/core/state";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { x as resolveSupervisorTarget } from "./workspaces-
|
|
2
|
-
import { a as resolveCollectorTargets, c as stopWorkspaceNow, i as readSupervisorState, n as clearSupervisorState, o as runStop, r as readCollectorState, s as stopCommand, t as clearCollectorState } from "./stop-
|
|
1
|
+
import { x as resolveSupervisorTarget } from "./workspaces-B3ahAHZc.mjs";
|
|
2
|
+
import { a as resolveCollectorTargets, c as stopWorkspaceNow, i as readSupervisorState, n as clearSupervisorState, o as runStop, r as readCollectorState, s as stopCommand, t as clearCollectorState } from "./stop-BVI2-L7s.mjs";
|
|
3
3
|
export { clearCollectorState, clearSupervisorState, stopCommand as default, readCollectorState, readSupervisorState, resolveCollectorTargets, resolveSupervisorTarget, runStop, stopWorkspaceNow };
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { D as ownership_claim_exports, E as debugLog,
|
|
2
|
-
import { E as workspaceDir, c as withWorkspaceStateLock, d as writeWorkspaceState, l as withWorkspaceStateLockAsync, n as clearWorkspaceStateKeys, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { A as clearWorkspaceLaunches, M as readMetroTunnel, O as clearManagedMetroTunnel, P as readRemoteSession, T as MODE_COMMAND, j as clearWorkspaceSupervisor, k as clearRemoteSession, n as findCommandWorkspace } from "./project-
|
|
6
|
-
import { t as macosAppPresent } from "./state-
|
|
7
|
-
import { nt as removeOwnedEmulatorMetroReverses } from "./android-
|
|
8
|
-
import { a as listeningPidsAsync, c as pidExists, d as resolveProjectMetro, h as isMetroRunning, p as signalProcessTreeAsync, r as killMetroTreeAsync, u as processCwds } from "./metro-
|
|
9
|
-
import { D as requestDevServerStop, Ln as resolveEasCliBin, Ot as endRecordedSession, T as logVanishedSupervisor, k as withdrawDevServerStopRequest } from "./ccache-
|
|
10
|
-
import { C as stopTunnel, ht as teardownOwnedIosSim, mt as teardownOwnedBrowser, pt as teardownOwnedAvd, x as resolveSupervisorTarget } from "./workspaces-
|
|
11
|
-
import { Q as NATIVE_RUN_WAIT_MS, Z as NATIVE_RUN_LOCK, at as requestNativeRunCancel, et as clearNativeRunCancel, it as nativeRunWaitNotice, nt as describeNativeRunHolder, rt as nativeRunHolder, tt as decideStopAction } from "./toolchain-
|
|
12
|
-
import { O as releaseWorkspaceLeasesAsync, y as fileLeaseIo } from "./activity-
|
|
13
|
-
import { i as stopHostedAndroid } from "./hosted-android-
|
|
14
|
-
import { a as stopHostedIos, n as removePhoneReverses } from "./phone-reverses-
|
|
15
|
-
import { r as stopMacosApp } from "./stop-
|
|
16
|
-
import { n as verifyCollectorOwnership } from "./ownership-
|
|
1
|
+
import { D as ownership_claim_exports, E as debugLog, T as process_identity_exports, f as WorkspaceProcessCleanupError, p as withWorkspaceProcessLock } from "./exec-CGuDzt40.mjs";
|
|
2
|
+
import { E as workspaceDir, c as withWorkspaceStateLock, d as writeWorkspaceState, l as withWorkspaceStateLockAsync, n as clearWorkspaceStateKeys, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-BdZ-QgmB.mjs";
|
|
3
|
+
import { f as refuseNoProject, l as phaseLine, p as releasedLeaseFact, u as plural } from "./command-output-DWI9tGPU.mjs";
|
|
4
|
+
import { D as upsertProject, _t as validateDeviceSlot, ft as deviceSlotPlatforms, ht as projectDeviceSlots, k as withConfigLockAsync$1, m as getProject, mt as parseDeviceSlotOption, o as clearSupervisor, pt as parseDeviceSlotKey } from "./config-BW0fAtoK.mjs";
|
|
5
|
+
import { A as clearWorkspaceLaunches, M as readMetroTunnel, O as clearManagedMetroTunnel, P as readRemoteSession, T as MODE_COMMAND, j as clearWorkspaceSupervisor, k as clearRemoteSession, n as findCommandWorkspace } from "./project-DWEXiBA9.mjs";
|
|
6
|
+
import { t as macosAppPresent } from "./state-DSOUqO-o.mjs";
|
|
7
|
+
import { nt as removeOwnedEmulatorMetroReverses } from "./android-Iq0M2t2d.mjs";
|
|
8
|
+
import { a as listeningPidsAsync, c as pidExists, d as resolveProjectMetro, h as isMetroRunning, p as signalProcessTreeAsync, r as killMetroTreeAsync, u as processCwds } from "./metro-B5PVz0Wv.mjs";
|
|
9
|
+
import { D as requestDevServerStop, Ln as resolveEasCliBin, Ot as endRecordedSession, T as logVanishedSupervisor, k as withdrawDevServerStopRequest } from "./ccache-BXtzEL6M.mjs";
|
|
10
|
+
import { C as stopTunnel, ht as teardownOwnedIosSim, mt as teardownOwnedBrowser, pt as teardownOwnedAvd, x as resolveSupervisorTarget } from "./workspaces-B3ahAHZc.mjs";
|
|
11
|
+
import { Q as NATIVE_RUN_WAIT_MS, Z as NATIVE_RUN_LOCK, at as requestNativeRunCancel, et as clearNativeRunCancel, it as nativeRunWaitNotice, nt as describeNativeRunHolder, rt as nativeRunHolder, tt as decideStopAction } from "./toolchain-s5ZmG42Z.mjs";
|
|
12
|
+
import { O as releaseWorkspaceLeasesAsync, y as fileLeaseIo } from "./activity-C8kBq9w0.mjs";
|
|
13
|
+
import { i as stopHostedAndroid } from "./hosted-android-ByG-ICuh.mjs";
|
|
14
|
+
import { a as stopHostedIos, n as removePhoneReverses } from "./phone-reverses-rvyxW1Fl.mjs";
|
|
15
|
+
import { r as stopMacosApp } from "./stop-CpTy6bod.mjs";
|
|
16
|
+
import { n as verifyCollectorOwnership } from "./ownership-hC7xvvxF.mjs";
|
|
17
17
|
import { hostedAndroidDeviceName, hostedAndroidRecords, hostedIosRecords, hostedNativeRecords, isJsonObject, parseHostedNativePlacement } from "@stim-cli/core/state";
|
|
18
18
|
import chalk from "chalk";
|
|
19
19
|
//#region src/commands/stop.ts
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { D as ownership_claim_exports,
|
|
2
|
-
import { E as workspaceDir, d as writeWorkspaceState, l as withWorkspaceStateLockAsync } from "./workspace-state-
|
|
3
|
-
import { a as macosRuntimeClaim, o as requiredMacosRecord } from "./state-
|
|
4
|
-
import { A as runningBundleInstancesAsync, j as runningInstancesInAsync, k as hostedBundleDirs } from "./workspaces-
|
|
5
|
-
import { n as stopHostedMacos } from "./hosted-macos-
|
|
1
|
+
import { D as ownership_claim_exports, T as process_identity_exports, p as withWorkspaceProcessLock } from "./exec-CGuDzt40.mjs";
|
|
2
|
+
import { E as workspaceDir, d as writeWorkspaceState, l as withWorkspaceStateLockAsync } from "./workspace-state-BdZ-QgmB.mjs";
|
|
3
|
+
import { a as macosRuntimeClaim, o as requiredMacosRecord } from "./state-DSOUqO-o.mjs";
|
|
4
|
+
import { A as runningBundleInstancesAsync, j as runningInstancesInAsync, k as hostedBundleDirs } from "./workspaces-B3ahAHZc.mjs";
|
|
5
|
+
import { n as stopHostedMacos } from "./hosted-macos-D0DDQxvl.mjs";
|
|
6
6
|
import { readMacosRecord } from "@stim-cli/core/state";
|
|
7
7
|
//#region src/macos/stop.ts
|
|
8
8
|
const APP_EXIT_MS = 5e3;
|
package/dist/supervisor-run.mjs
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c as withWorkspaceStateLock, d as writeWorkspaceState, j as workspaceStateFile$1, k as workspaceLogsDir$1, n as clearWorkspaceStateKeys, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-
|
|
3
|
-
import { E as setSupervisor,
|
|
4
|
-
import { $ as runnableMetroCommand, X as resolveProjectSettings } from "./settings-
|
|
5
|
-
import { D as clearExpoMetroTunnel, E as MODE_EXPO, N as readPidFile, R as writePidFile, T as MODE_COMMAND, d as nativeProjectIntegration, j as clearWorkspaceSupervisor, v as detectIsExpo, w as MODE_BARE } from "./project-
|
|
6
|
-
import { K as ownedAvdSerialResolver } from "./android-
|
|
1
|
+
import { T as process_identity_exports, p as withWorkspaceProcessLock } from "./exec-CGuDzt40.mjs";
|
|
2
|
+
import { c as withWorkspaceStateLock, d as writeWorkspaceState, j as workspaceStateFile$1, k as workspaceLogsDir$1, n as clearWorkspaceStateKeys, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-BdZ-QgmB.mjs";
|
|
3
|
+
import { E as setSupervisor, U as parseMachine$1, ht as projectDeviceSlots, m as getProject, o as clearSupervisor, pt as parseDeviceSlotKey } from "./config-BW0fAtoK.mjs";
|
|
4
|
+
import { $ as runnableMetroCommand, X as resolveProjectSettings } from "./settings-B5IBDfTx.mjs";
|
|
5
|
+
import { D as clearExpoMetroTunnel, E as MODE_EXPO, N as readPidFile, R as writePidFile, T as MODE_COMMAND, d as nativeProjectIntegration, j as clearWorkspaceSupervisor, v as detectIsExpo, w as MODE_BARE } from "./project-DWEXiBA9.mjs";
|
|
6
|
+
import { K as ownedAvdSerialResolver } from "./android-Iq0M2t2d.mjs";
|
|
7
7
|
import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
|
|
8
|
-
import { C as devServerStopLevel, O as vanishedSupervisorMessage, w as devServerStopRecord, x as describeDevServerStop } from "./ccache-
|
|
9
|
-
import { d as parseWatchRoots, l as parseSubscriberNames, m as runWatchman, u as parseTriggerCount } from "./eas-session-ledger-
|
|
10
|
-
import { B as workspaceBuildInProgress, v as withIdleWorkspace } from "./workspaces-
|
|
11
|
-
import { S as parseLease, _ as workspaceDeviceLastUseAt, b as leaseIsExpired, r as createActivityReader, v as deviceLeasePath, w as parseWorkspaceLeases } from "./activity-
|
|
8
|
+
import { C as devServerStopLevel, O as vanishedSupervisorMessage, w as devServerStopRecord, x as describeDevServerStop } from "./ccache-BXtzEL6M.mjs";
|
|
9
|
+
import { d as parseWatchRoots, l as parseSubscriberNames, m as runWatchman, u as parseTriggerCount } from "./eas-session-ledger-Bspy-VJQ.mjs";
|
|
10
|
+
import { B as workspaceBuildInProgress, v as withIdleWorkspace } from "./workspaces-B3ahAHZc.mjs";
|
|
11
|
+
import { S as parseLease, _ as workspaceDeviceLastUseAt, b as leaseIsExpired, r as createActivityReader, v as deviceLeasePath, w as parseWorkspaceLeases } from "./activity-C8kBq9w0.mjs";
|
|
12
12
|
import { t as describeError } from "./errors-DHm_U5gv.mjs";
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { t as relaunchWithLogFile } from "./detached-entry-
|
|
16
|
-
import { n as dueIdleDevices, r as shutDownIdleDevices } from "./idle-shutdown-
|
|
17
|
-
import { t as triggerMaintenance } from "./trigger-
|
|
13
|
+
import { f as hostConnector, m as probeHostedSession } from "./hosted-client-D19Lv0tg.mjs";
|
|
14
|
+
import { s as watchWorkspaceState, t as clearHostedMetro } from "./metro-request-2LmFpC1z.mjs";
|
|
15
|
+
import { t as relaunchWithLogFile } from "./detached-entry-tfrgGVWb.mjs";
|
|
16
|
+
import { n as dueIdleDevices, r as shutDownIdleDevices } from "./idle-shutdown-6i8CHoNq.mjs";
|
|
17
|
+
import { t as triggerMaintenance } from "./trigger-BtB4kbe0.mjs";
|
|
18
18
|
import { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
19
19
|
import { dirname, isAbsolute, join, resolve, sep } from "node:path";
|
|
20
20
|
import { LOG_ROTATE_BYTES } from "@stim-cli/core";
|
|
21
21
|
import { DEV_SERVER_STOP_REQUEST_KEY, HOSTED_METRO_LINKS_KEY, HOSTED_METRO_REQUESTS_KEY, IDLE_STOP_KEY, hostedAndroidPlacements, hostedIosPlacements, hostedMetroLinks, hostedMetroRequests, hostedNativeRecords, parseHostedNativePlacement, readDevServerStopRequest } from "@stim-cli/core/state";
|
|
22
22
|
import { fileURLToPath } from "node:url";
|
|
23
|
-
import { connect } from "node:net";
|
|
23
|
+
import { connect, createServer } from "node:net";
|
|
24
24
|
//#region src/supervisor/metro-links.ts
|
|
25
25
|
const IDLE_LINKS = 4;
|
|
26
26
|
const FRAME_BYTES = 32768;
|
|
@@ -33,6 +33,35 @@ const RETRY_MS = [
|
|
|
33
33
|
];
|
|
34
34
|
const METRO_RESET = 4410;
|
|
35
35
|
/**
|
|
36
|
+
* Carries one TCP stream over a link connection as binary frames, with backpressure both ways. A clean end on either
|
|
37
|
+
* side closes the other cleanly, and a reset resets it. `ended` runs once when `socket` closes.
|
|
38
|
+
*/
|
|
39
|
+
function pipeLink(connection, socket, ended) {
|
|
40
|
+
socket.on("error", () => socket.destroy());
|
|
41
|
+
socket.once("close", (hadError) => {
|
|
42
|
+
ended();
|
|
43
|
+
connection.flushed().then(() => connection.close(hadError ? METRO_RESET : 1e3));
|
|
44
|
+
});
|
|
45
|
+
connection.onDropped((code) => code === 1e3 ? socket.end() : socket.resetAndDestroy());
|
|
46
|
+
let paused = false;
|
|
47
|
+
connection.onBinary((frame) => {
|
|
48
|
+
if (socket.write(frame) || paused) return;
|
|
49
|
+
paused = true;
|
|
50
|
+
connection.pause();
|
|
51
|
+
socket.once("drain", () => {
|
|
52
|
+
paused = false;
|
|
53
|
+
connection.resume();
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
socket.on("data", (chunk) => {
|
|
57
|
+
socket.pause();
|
|
58
|
+
(async () => {
|
|
59
|
+
for (let offset = 0; offset < chunk.length; offset += FRAME_BYTES) await connection.sendBinary(chunk.subarray(offset, offset + FRAME_BYTES));
|
|
60
|
+
if (!socket.destroyed) socket.resume();
|
|
61
|
+
})();
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
36
65
|
* Keeps `IDLE_LINKS` authenticated connections open to `machine`, each offered to `session`'s Metro bridge there. The
|
|
37
66
|
* host pairs one with each connection the hosted device makes; this side then pipes it to loopback `metroPort` and
|
|
38
67
|
* opens a replacement. `onReady` runs when the host holds a link after holding none, and `onLost` when no linked
|
|
@@ -86,29 +115,9 @@ function openMetroLinks({ machine, session, metroPort, onReady, onLost, onError
|
|
|
86
115
|
port: metroPort
|
|
87
116
|
});
|
|
88
117
|
streams.add(metro);
|
|
89
|
-
|
|
90
|
-
metro.once("close", (hadError) => {
|
|
118
|
+
pipeLink(connection, metro, () => {
|
|
91
119
|
streams.delete(metro);
|
|
92
120
|
ended();
|
|
93
|
-
connection.flushed().then(() => connection.close(hadError ? METRO_RESET : 1e3));
|
|
94
|
-
});
|
|
95
|
-
connection.onDropped((code) => code === 1e3 ? metro.end() : metro.resetAndDestroy());
|
|
96
|
-
let paused = false;
|
|
97
|
-
connection.onBinary((frame) => {
|
|
98
|
-
if (metro.write(frame) || paused) return;
|
|
99
|
-
paused = true;
|
|
100
|
-
connection.pause();
|
|
101
|
-
metro.once("drain", () => {
|
|
102
|
-
paused = false;
|
|
103
|
-
connection.resume();
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
metro.on("data", (chunk) => {
|
|
107
|
-
metro.pause();
|
|
108
|
-
(async () => {
|
|
109
|
-
for (let offset = 0; offset < chunk.length; offset += FRAME_BYTES) await connection.sendBinary(chunk.subarray(offset, offset + FRAME_BYTES));
|
|
110
|
-
if (!metro.destroyed) metro.resume();
|
|
111
|
-
})();
|
|
112
121
|
});
|
|
113
122
|
};
|
|
114
123
|
const link = async () => {
|
|
@@ -179,6 +188,70 @@ function openMetroLinks({ machine, session, metroPort, onReady, onLost, onError
|
|
|
179
188
|
return { close: stop };
|
|
180
189
|
}
|
|
181
190
|
//#endregion
|
|
191
|
+
//#region src/supervisor/agent-relay.ts
|
|
192
|
+
const MAX_CONNECTIONS = 8;
|
|
193
|
+
function refuse(socket, message) {
|
|
194
|
+
const body = `${message}\n`;
|
|
195
|
+
socket.resume();
|
|
196
|
+
socket.end(`HTTP/1.1 502 Bad Gateway\r\ncontent-type: text/plain\r\nconnection: close\r\ncontent-length: ${Buffer.byteLength(body)}\r\n\r\n${body}`);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Listens on a loopback port and carries each connection to `session`'s agent route on `machine` over its own
|
|
200
|
+
* authenticated `device-host.agent.link` connection, so the host knows the request comes from this machine's key.
|
|
201
|
+
* The host still requires the session's agent token in each request. A connection the host does not link is answered
|
|
202
|
+
* with 502 and the reason. It holds at most 8 connections at a time, and listens on `port` when that is free, so a
|
|
203
|
+
* remote config written for an earlier relay of the session still reaches it.
|
|
204
|
+
*/
|
|
205
|
+
function openAgentRelay({ machine, session, port: preferred }) {
|
|
206
|
+
const connect = hostConnector(machine);
|
|
207
|
+
const live = /* @__PURE__ */ new Set();
|
|
208
|
+
const sockets = /* @__PURE__ */ new Set();
|
|
209
|
+
let closed = false;
|
|
210
|
+
const relay = async (socket) => {
|
|
211
|
+
sockets.add(socket);
|
|
212
|
+
socket.once("close", () => sockets.delete(socket));
|
|
213
|
+
socket.on("error", () => socket.destroy());
|
|
214
|
+
let connection;
|
|
215
|
+
try {
|
|
216
|
+
connection = await connect();
|
|
217
|
+
if (closed || socket.destroyed) return void connection.close();
|
|
218
|
+
if (!connection.supports("hosted-agent-link")) throw new Error(`${machine} runs a stim-server that cannot carry agent control over the local network. Update stim-server there, then retry.`);
|
|
219
|
+
const reply = await connection.request("device-host.agent.link", { session });
|
|
220
|
+
if ("error" in reply) throw new Error(`${machine} refused the agent link: ${reply.error.message}`);
|
|
221
|
+
if (closed || socket.destroyed) return void connection.close();
|
|
222
|
+
const linked = connection;
|
|
223
|
+
live.add(linked);
|
|
224
|
+
pipeLink(linked, socket, () => live.delete(linked));
|
|
225
|
+
socket.resume();
|
|
226
|
+
} catch (error) {
|
|
227
|
+
connection?.close();
|
|
228
|
+
if (!socket.destroyed) refuse(socket, error instanceof Error ? error.message : String(error));
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
const server = createServer({ pauseOnConnect: true }, (socket) => void relay(socket));
|
|
232
|
+
server.maxConnections = MAX_CONNECTIONS;
|
|
233
|
+
server.on("error", () => {});
|
|
234
|
+
const listen = (port) => new Promise((resolve, reject) => {
|
|
235
|
+
server.once("error", reject);
|
|
236
|
+
server.listen(port, "127.0.0.1", () => {
|
|
237
|
+
server.off("error", reject);
|
|
238
|
+
resolve(server.address().port);
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
const port = preferred ? listen(preferred).catch(() => listen(0)) : listen(0);
|
|
242
|
+
port.catch(() => {});
|
|
243
|
+
return {
|
|
244
|
+
port,
|
|
245
|
+
close: () => {
|
|
246
|
+
closed = true;
|
|
247
|
+
server.close();
|
|
248
|
+
for (const connection of live) connection.close();
|
|
249
|
+
for (const socket of sockets) socket.destroy();
|
|
250
|
+
live.clear();
|
|
251
|
+
}
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
//#endregion
|
|
182
255
|
//#region src/supervisor/hosted-metro.ts
|
|
183
256
|
function reconcileHostedMetro(requests, active) {
|
|
184
257
|
const same = (session) => JSON.stringify(requests[session]) === JSON.stringify(active[session]);
|
|
@@ -270,31 +343,50 @@ function watchHostedMetro(root, metroPort, processToken) {
|
|
|
270
343
|
for (const session of actions.open) {
|
|
271
344
|
const request = requests[session];
|
|
272
345
|
active[session] = request;
|
|
273
|
-
|
|
346
|
+
const relay = parseMachine$1(request.machine)?.transport === "local" ? openAgentRelay({
|
|
347
|
+
machine: request.machine,
|
|
348
|
+
session,
|
|
349
|
+
port: hostedMetroLinks(state)[session]?.agentPort
|
|
350
|
+
}) : null;
|
|
351
|
+
let agentPort;
|
|
352
|
+
const listening = relay ? relay.port.then((port) => void (agentPort = port)).catch(() => {}) : Promise.resolve();
|
|
353
|
+
let ready = false;
|
|
354
|
+
const pool = openMetroLinks({
|
|
274
355
|
machine: request.machine,
|
|
275
356
|
session,
|
|
276
357
|
metroPort,
|
|
277
|
-
onReady: () => {
|
|
278
|
-
|
|
358
|
+
onReady: async () => {
|
|
359
|
+
ready = true;
|
|
360
|
+
await listening;
|
|
361
|
+
if (active[session] === request && ready) publish(session, {
|
|
279
362
|
id: request.id,
|
|
280
363
|
processToken,
|
|
281
|
-
ready: true
|
|
364
|
+
ready: true,
|
|
365
|
+
...agentPort ? { agentPort } : {}
|
|
282
366
|
});
|
|
283
367
|
},
|
|
284
368
|
onLost: () => {
|
|
369
|
+
ready = false;
|
|
285
370
|
if (active[session] === request) publish(session, {
|
|
286
371
|
id: request.id,
|
|
287
|
-
processToken
|
|
372
|
+
processToken,
|
|
373
|
+
...agentPort ? { agentPort } : {}
|
|
288
374
|
});
|
|
289
375
|
},
|
|
290
376
|
onError: (message) => {
|
|
377
|
+
ready = false;
|
|
291
378
|
if (active[session] === request) publish(session, {
|
|
292
379
|
id: request.id,
|
|
293
380
|
processToken,
|
|
294
|
-
error: message
|
|
381
|
+
error: message,
|
|
382
|
+
...agentPort ? { agentPort } : {}
|
|
295
383
|
});
|
|
296
384
|
}
|
|
297
|
-
})
|
|
385
|
+
});
|
|
386
|
+
pools.set(session, { close: () => {
|
|
387
|
+
pool.close();
|
|
388
|
+
relay?.close();
|
|
389
|
+
} });
|
|
298
390
|
}
|
|
299
391
|
if (!probing && Date.now() >= probingAt) {
|
|
300
392
|
clearTimeout(probeTimer);
|
|
@@ -802,7 +894,7 @@ async function runSupervisor({ root, port, tunnel = false, resetCache = false, i
|
|
|
802
894
|
try {
|
|
803
895
|
let start;
|
|
804
896
|
if (command) {
|
|
805
|
-
const startServer = startCommand ?? (await import("./server-command-
|
|
897
|
+
const startServer = startCommand ?? (await import("./server-command-BC0EgMfY.mjs")).startCommandServer;
|
|
806
898
|
start = (opts) => startServer({
|
|
807
899
|
...opts,
|
|
808
900
|
command
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { t as getExecutor } from "./exec-
|
|
2
|
-
import { a as killOnAbort } from "./operation-exec-
|
|
3
|
-
import { D as extractEmulatorFailure, E as emulatorProbeSession, O as findBuildTool, Q as pickDefaultSystemImage, T as emulatorFailureRemedy, c as androidPoolNoCandidatesRefusal, et as profileNeedsFoldFeature, j as hostSystemImageArch, l as androidSystemImageAbi, o as androidHome, s as androidPoolCandidates, w as emulatorDiskSpaceRemedy } from "./android-
|
|
4
|
-
import { yn as pickDevClientScheme } from "./ccache-
|
|
5
|
-
import { m as unknownAndroidSystemImageRefusal, p as unknownAndroidDeviceProfileRefusal, u as layerNote } from "./device-capacity-
|
|
6
|
-
import {
|
|
1
|
+
import { t as getExecutor } from "./exec-CGuDzt40.mjs";
|
|
2
|
+
import { a as killOnAbort } from "./operation-exec-DKlBcKAL.mjs";
|
|
3
|
+
import { D as extractEmulatorFailure, E as emulatorProbeSession, O as findBuildTool, Q as pickDefaultSystemImage, T as emulatorFailureRemedy, c as androidPoolNoCandidatesRefusal, et as profileNeedsFoldFeature, j as hostSystemImageArch, l as androidSystemImageAbi, o as androidHome, s as androidPoolCandidates, w as emulatorDiskSpaceRemedy } from "./android-Iq0M2t2d.mjs";
|
|
4
|
+
import { yn as pickDevClientScheme } from "./ccache-BXtzEL6M.mjs";
|
|
5
|
+
import { m as unknownAndroidSystemImageRefusal, p as unknownAndroidDeviceProfileRefusal, u as layerNote } from "./device-capacity-BAkETfIl.mjs";
|
|
6
|
+
import { n as decideSystemImage } from "./android-image-DFk26aY6.mjs";
|
|
7
|
+
import { t as devClientScheme } from "./dev-client-ChsHwgrn.mjs";
|
|
7
8
|
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
8
9
|
import { relative } from "node:path";
|
|
9
10
|
//#region src/commands/android/support.ts
|
|
@@ -36,7 +37,7 @@ function remoteAvdFlagRefusal({ systemImageFlag, deviceProfileFlag, remoteBacken
|
|
|
36
37
|
remedy: `Drop ${given} for a remote run. For a local owned emulator, drop --remote and unset android.remote with \`stim settings unset android.remote --scope <machine|workspace|repo|committed>\`.`
|
|
37
38
|
};
|
|
38
39
|
}
|
|
39
|
-
function systemImageRefusal({ slot, flag, resolved, origin = null, physical, remoteBackend, listImages }) {
|
|
40
|
+
function systemImageRefusal({ slot, flag, resolved, origin = null, physical, remoteBackend, listImages, installImages }) {
|
|
40
41
|
if (slot && slot !== "default" && remoteBackend) return {
|
|
41
42
|
code: "STIM_BAD_ARG",
|
|
42
43
|
message: "Named slots currently support local simulators and physical devices.",
|
|
@@ -61,7 +62,16 @@ function systemImageRefusal({ slot, flag, resolved, origin = null, physical, rem
|
|
|
61
62
|
}
|
|
62
63
|
const refusal = unknownAndroidSystemImageRefusal(resolved, images);
|
|
63
64
|
if (!refusal) return null;
|
|
64
|
-
const
|
|
65
|
+
const decided = decideSystemImage({
|
|
66
|
+
requested: resolved,
|
|
67
|
+
installed: images,
|
|
68
|
+
policy: installImages
|
|
69
|
+
});
|
|
70
|
+
if (decided.kind !== "refuse") return null;
|
|
71
|
+
const { message, remedy } = layerNote({
|
|
72
|
+
message: refusal.message,
|
|
73
|
+
remedy: decided.remedy
|
|
74
|
+
}, "android.systemImage", flag, origin);
|
|
65
75
|
return {
|
|
66
76
|
code: "STIM_BAD_ARG",
|
|
67
77
|
message,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { k as workspaceLogsDir } from "./workspace-state-
|
|
2
|
-
import { h as shortUdid, l as phaseLine } from "./command-output-
|
|
3
|
-
import { _ as inertSettingWarning, a as SETTING_SHAPE_REMEDY, b as iosProjectDirSetting, p as cacheProviderSettingError, rt as settingShapeErrors, st as unknownSettingKeys, x as iosProjectDirSettingError } from "./settings-
|
|
4
|
-
import { J as describeDiagnostic } from "./toolchain-
|
|
5
|
-
import { P as parseIosSimulatorApp } from "./ios-
|
|
1
|
+
import { k as workspaceLogsDir } from "./workspace-state-BdZ-QgmB.mjs";
|
|
2
|
+
import { h as shortUdid, l as phaseLine } from "./command-output-DWI9tGPU.mjs";
|
|
3
|
+
import { _ as inertSettingWarning, a as SETTING_SHAPE_REMEDY, b as iosProjectDirSetting, p as cacheProviderSettingError, rt as settingShapeErrors, st as unknownSettingKeys, x as iosProjectDirSettingError } from "./settings-B5IBDfTx.mjs";
|
|
4
|
+
import { J as describeDiagnostic } from "./toolchain-s5ZmG42Z.mjs";
|
|
5
|
+
import { P as parseIosSimulatorApp } from "./ios-BdZdNsAj.mjs";
|
|
6
6
|
import { p as resolveOptimizations } from "./errors-DHm_U5gv.mjs";
|
|
7
|
-
import { d as resolveBuildPlacement } from "./selection-
|
|
8
|
-
import { l as parseDeviceWait } from "./device-lease-run-
|
|
9
|
-
import { g as unknownIosRuntimeRefusal, h as unknownIosDeviceTypeRefusal, t as DEFAULT_DEVICE_SLOT_WAIT_MS, u as layerNote } from "./device-capacity-
|
|
10
|
-
import { t as IosDeviceMismatchError } from "./device-ios-
|
|
7
|
+
import { d as resolveBuildPlacement } from "./selection-xS50Mt0V.mjs";
|
|
8
|
+
import { l as parseDeviceWait } from "./device-lease-run-DpiCnRbZ.mjs";
|
|
9
|
+
import { g as unknownIosRuntimeRefusal, h as unknownIosDeviceTypeRefusal, t as DEFAULT_DEVICE_SLOT_WAIT_MS, u as layerNote } from "./device-capacity-BAkETfIl.mjs";
|
|
10
|
+
import { t as IosDeviceMismatchError } from "./device-ios-DFaYFdar.mjs";
|
|
11
11
|
import { basename, join } from "node:path";
|
|
12
12
|
import chalk from "chalk";
|
|
13
13
|
function buildLogFile(root) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as getExecutor } from "./exec-
|
|
2
|
-
import { s as gitAsync } from "./operation-exec-
|
|
3
|
-
import { n as buildCacheKey } from "./build-cache-
|
|
1
|
+
import { t as getExecutor } from "./exec-CGuDzt40.mjs";
|
|
2
|
+
import { s as gitAsync } from "./operation-exec-DKlBcKAL.mjs";
|
|
3
|
+
import { n as buildCacheKey } from "./build-cache-Cqj4FGnX.mjs";
|
|
4
4
|
import { n as fingerprintNativeInputs, r as manifestDigest } from "./native-inputs-TRTTTRxt.mjs";
|
|
5
|
-
import { a as sourceManifest, r as nativeFileDigest } from "./native-source-
|
|
5
|
+
import { a as sourceManifest, r as nativeFileDigest } from "./native-source-ChAGj7R1.mjs";
|
|
6
6
|
import { createHash } from "node:crypto";
|
|
7
7
|
import { join, relative, resolve, sep } from "node:path";
|
|
8
8
|
import { isJsonObject } from "@stim-cli/core/state";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { y as sharedBuildCache } from "./workspace-state-
|
|
3
|
-
import { J as resolveCacheProviderConfig, Vt as repoRootAsync, it as settingValueAt, z as projectSettingsContextAsync } from "./settings-
|
|
4
|
-
import { r as register } from "./cache-manifest-
|
|
5
|
-
import { h as macosToolchainAsync, st as runCancellationSignal } from "./toolchain-
|
|
6
|
-
import "./build-cache-
|
|
1
|
+
import { a as trackReportResource, b as spawnDeclared, t as getExecutor } from "./exec-CGuDzt40.mjs";
|
|
2
|
+
import { y as sharedBuildCache } from "./workspace-state-BdZ-QgmB.mjs";
|
|
3
|
+
import { J as resolveCacheProviderConfig, Vt as repoRootAsync, it as settingValueAt, z as projectSettingsContextAsync } from "./settings-B5IBDfTx.mjs";
|
|
4
|
+
import { r as register } from "./cache-manifest-8JX9S1QJ.mjs";
|
|
5
|
+
import { h as macosToolchainAsync, st as runCancellationSignal } from "./toolchain-s5ZmG42Z.mjs";
|
|
6
|
+
import "./build-cache-Cqj4FGnX.mjs";
|
|
7
7
|
import { l as artifactCachePolicy, p as resolveOptimizations } from "./errors-DHm_U5gv.mjs";
|
|
8
|
-
import { r as nativeFileDigest } from "./native-source-
|
|
9
|
-
import { a as validateInfoPlist, i as stageBundle, n as resolveBundleExtras, r as setBundleName, t as reidentifyBundle } from "./stage-
|
|
10
|
-
import { t as validateMacosArtifactPlatform } from "./artifact-platform-
|
|
11
|
-
import { t as logLines } from "./run-
|
|
12
|
-
import { n as swiftpmArtifactInputs, r as swiftpmArtifactSnapshot, t as readSwiftpmArtifactToolchain } from "./swiftpm-artifact-inputs-
|
|
8
|
+
import { r as nativeFileDigest } from "./native-source-ChAGj7R1.mjs";
|
|
9
|
+
import { a as validateInfoPlist, i as stageBundle, n as resolveBundleExtras, r as setBundleName, t as reidentifyBundle } from "./stage-DKC6tDXu.mjs";
|
|
10
|
+
import { t as validateMacosArtifactPlatform } from "./artifact-platform-DqCWUieN.mjs";
|
|
11
|
+
import { t as logLines } from "./run-N-BbRxnC.mjs";
|
|
12
|
+
import { n as swiftpmArtifactInputs, r as swiftpmArtifactSnapshot, t as readSwiftpmArtifactToolchain } from "./swiftpm-artifact-inputs-uq5oV7xR.mjs";
|
|
13
13
|
import { createHash } from "node:crypto";
|
|
14
14
|
import { createReadStream, createWriteStream, existsSync, realpathSync } from "node:fs";
|
|
15
15
|
import { tmpdir } from "node:os";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { h as macosToolchainAsync, m as macosToolchain } from "./toolchain-
|
|
1
|
+
import { h as macosToolchainAsync, m as macosToolchain } from "./toolchain-s5ZmG42Z.mjs";
|
|
2
2
|
export { macosToolchain, macosToolchainAsync };
|