stim 1.26.0 → 1.27.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-DVsvSwf7.mjs → acquire-artifact-BKN2Yuhg.mjs} +2 -2
- package/dist/{act-C-BqJEpu.mjs → act-ROviTF_t.mjs} +297 -122
- package/dist/{activity-Lnb_EoRY.mjs → activity-Cd-ysFes.mjs} +6 -6
- package/dist/{agent-device-usage-output-DbXy5tg8.mjs → agent-device-usage-output-C5nCKWp9.mjs} +5 -5
- package/dist/{android-CSbLRD53.mjs → android--HBgpvpW.mjs} +5 -5
- package/dist/{android-CiNQw3kq.mjs → android-Cd6w7_qw.mjs} +96 -43
- package/dist/{android-B5P81yI-.mjs → android-Deb9X3_Y.mjs} +37 -15
- package/dist/{android-DTAcRwBC.mjs → android-DriNoAVy.mjs} +23 -18
- package/dist/{android-cas-BTVhZ0Qs.mjs → android-cas-D5e6ecUg.mjs} +4 -4
- package/dist/android-cas-compiler.mjs +1 -1
- package/dist/api.d.mts +13 -3
- package/dist/api.mjs +39 -29
- package/dist/{apk-signed-tail-B46U9hXc.mjs → apk-signed-tail-BHQHx3Rm.mjs} +2 -2
- package/dist/{artifact-BxREhAaV.mjs → artifact-0AGJYB9O.mjs} +18 -23
- package/dist/{artifact-CsAP6AGK.mjs → artifact-faemIZv5.mjs} +19 -24
- package/dist/{artifact-platform-CMRc0M_r.mjs → artifact-platform-BO2Uvk_A.mjs} +1 -1
- package/dist/auto-placement-z-H5pJza.mjs +350 -0
- package/dist/{browser-web-rYPyqhTf.mjs → browser-web-slD8AvLp.mjs} +16 -16
- package/dist/{build-cache-DrXNCy3T.mjs → build-cache-gBJ-WKzA.mjs} +43 -21
- package/dist/{build-DPhApsjV.mjs → build-hS0QyFlQ.mjs} +35 -31
- package/dist/{build-plan-DrMMdayj.mjs → build-plan-CBqYbzYM.mjs} +7 -6
- package/dist/{cache-manifest-BEZ9Bpl1.mjs → cache-manifest-DEjqGGat.mjs} +1 -1
- package/dist/cache-manifest.mjs +1 -1
- package/dist/{budget-k2mZGvvk.mjs → ccache-BWTze1Ls.mjs} +560 -1603
- package/dist/{cdp-BG3FJCCx.mjs → cdp-C3svvXiE.mjs} +1 -1
- package/dist/{chrome-BvV8ssI3.mjs → chrome-DyDWurWG.mjs} +1 -1
- package/dist/{cli-BBKFGOFl.mjs → cli-ftXDLto1.mjs} +24 -23
- package/dist/cli.mjs +1 -1
- package/dist/{client-D9CaRks-.mjs → client-xsdxrhWA.mjs} +48 -62
- package/dist/collector-run.d.mts +10 -9
- package/dist/collector-run.mjs +42 -27
- package/dist/{command-output-BF5AR2dL.mjs → command-output-Dj-WT4BP.mjs} +1 -1
- package/dist/{config-BktkY_zC.mjs → config-Cn94Jc0g.mjs} +23 -4
- package/dist/{dependencies-Dw6wfQdv.mjs → dependencies-BGokZ-Ng.mjs} +108 -60
- package/dist/{dependency-state-DFB41vfr.mjs → dependency-state-C3OtgG94.mjs} +14 -7
- package/dist/{detached-entry-KmieOKgN.mjs → detached-entry-BPlSaCwC.mjs} +1 -1
- package/dist/{dev-client-DXR_tPVY.mjs → dev-client-BMca82xo.mjs} +2 -2
- package/dist/{device-BcYeHSFu.mjs → device-BJm0irrq.mjs} +16 -16
- package/dist/{device-capacity-DCSvUF0l.mjs → device-capacity-6LP7QsaA.mjs} +101 -16
- package/dist/device-host-worker.mjs +19 -19
- package/dist/{device-ios-BLGfXQeK.mjs → device-ios-534c14fz.mjs} +251 -23
- package/dist/{device-lease-run-BmvIl7bI.mjs → device-lease-run-DwsGfjUN.mjs} +5 -5
- package/dist/{device-pool-Dluix4H3.mjs → device-pool-BnQqvs6o.mjs} +3 -3
- package/dist/{device-BK-zwyd_.mjs → device-tM41-TUq.mjs} +25 -24
- package/dist/{doctor-Cp-BhzTS.mjs → doctor-Dbx1ZpD2.mjs} +1 -1
- package/dist/{doctor-Bhg1ii70.mjs → doctor-DyqE9n1J.mjs} +28 -16
- package/dist/{doctor-OnwP94ne.mjs → doctor-F-3VUUyN.mjs} +76 -32
- package/dist/{doctor-fingerprint-D3a04Mhu.mjs → doctor-fingerprint-o7ZI9YLn.mjs} +1 -1
- package/dist/doctor-fingerprint.mjs +1 -1
- package/dist/{doctor-watchman-BStK05nt.mjs → doctor-watchman-CxDbyrrt.mjs} +5 -5
- package/dist/{eas-build-Dsj93iM9.mjs → eas-build-CjNSWmjo.mjs} +4 -4
- package/dist/eas-fallback-9fqb46kW.mjs +87 -0
- package/dist/{eas-session-ledger-B5vygTiD.mjs → eas-session-ledger-DrP4OuuM.mjs} +6 -6
- package/dist/{error-diagnostics-BOOm9Db7.mjs → error-diagnostics-snej9k4j.mjs} +51 -25
- package/dist/{exec-VFRpu1iA.mjs → exec-aULwtNly.mjs} +57 -6
- package/dist/{gc-C_79zvz4.mjs → gc-BRwAY3qT.mjs} +2 -2
- package/dist/{gc-ldgr-hXU.mjs → gc-CGZ1Yg88.mjs} +160 -45
- package/dist/{guide-D7K0X6KG.mjs → guide-_rfEh_zM.mjs} +580 -183
- package/dist/{hosted-android-Bk54ej6n.mjs → hosted-android-BMKzUNnY.mjs} +4 -4
- package/dist/{hosted-client-fHO8yqzc.mjs → hosted-client-D7Pk_Oo1.mjs} +12 -8
- package/dist/{hosted-logs-BfbmDM4M.mjs → hosted-logs-B1gqQuva.mjs} +8 -8
- package/dist/{hosted-logs-sync-B0pvmOk-.mjs → hosted-logs-sync-Dg3qrZmV.mjs} +5 -5
- package/dist/{hosted-macos-CPl0OZ9h.mjs → hosted-macos-B9w4H8hc.mjs} +6 -6
- package/dist/{hosted-native-CpDB3-PO.mjs → hosted-native-CdgaiuyP.mjs} +17 -16
- package/dist/{idle-shutdown-FfxL1KdG.mjs → idle-shutdown-Cbvo5KEh.mjs} +7 -8
- package/dist/{ios-ftxdQbJS.mjs → ios-B5HlVMhQ.mjs} +92 -37
- package/dist/{ios-B7-lToDu.mjs → ios-Bk4mWbtS.mjs} +8 -8
- package/dist/{ios-ENC4sRPA.mjs → ios-CsRVik64.mjs} +7 -1
- package/dist/{ios-WxpDJ5T1.mjs → ios-E26qSpkb.mjs} +27 -11
- package/dist/{ios-device-CsyryvpT.mjs → ios-device-C_QkIf1Z.mjs} +3 -3
- package/dist/{ios-device-B6HK951C.mjs → ios-device-CiBA-er9.mjs} +1 -1
- package/dist/{ios-project-Ty5pHl9O.mjs → ios-project-D8Jcy_br.mjs} +22 -9
- package/dist/{ios-signing-4c_qXvQm.mjs → ios-signing-BJzvDPfU.mjs} +2 -2
- package/dist/{ios-state-Cw7-WQf2.mjs → ios-state-BZ03NFgF.mjs} +1 -1
- package/dist/{js-swap-BMhXYVDS.mjs → js-swap-Dg2a945i.mjs} +8 -7
- package/dist/{launch-DOp8RjDz.mjs → launch-CRyBeNsA.mjs} +42 -38
- package/dist/lightened-BCsdAGj_.mjs +171 -0
- package/dist/{logs-dQDki6Tt.mjs → logs-CC_-ZzEE.mjs} +7 -7
- package/dist/{logs-s1dRIG1E.mjs → logs-aJQb-RDg.mjs} +46 -21
- package/dist/{macos-B0VEV3Gf.mjs → macos-BGmTpnv9.mjs} +1 -1
- package/dist/{macos-DBBPNnIA.mjs → macos-DlCBhMw5.mjs} +73 -38
- package/dist/macos-run.mjs +1 -1
- package/dist/maintenance-run.mjs +7 -7
- package/dist/{metro-CjC10t6E.mjs → metro-CvyD-xwe.mjs} +4 -4
- package/dist/{metro-gateway-B6_PgD0L.mjs → metro-gateway-BnHdqMO_.mjs} +3 -3
- package/dist/{named-ports-BG0j1X4g.mjs → named-ports-BCyMWA6b.mjs} +3 -3
- package/dist/{native-android-CL2NGiik.mjs → native-android-DlpxCyOP.mjs} +17 -18
- package/dist/{native-gradle-artifact-inputs-btSUulme.mjs → native-gradle-artifact-inputs-C13qT7R_.mjs} +5 -5
- package/dist/{native-runtime-Dq3RBcON.mjs → native-runtime-DqaIBO5w.mjs} +9 -8
- package/dist/{native-source-D-4Dh4JU.mjs → native-source-D1AzWiuP.mjs} +1 -1
- package/dist/{native-xcode-inputs-BW7H8JGu.mjs → native-xcode-inputs-B1W8SrxB.mjs} +3 -3
- package/dist/{native-xcode-ios-CBXJAxfC.mjs → native-xcode-ios-QPP0Rm68.mjs} +17 -17
- package/dist/{ndjson-CgE_o3Dl.mjs → ndjson-Dy2W4vRa.mjs} +2 -2
- package/dist/offload-worker.mjs +23 -24
- package/dist/{operation-exec-CUZifp6Z.mjs → operation-exec-Dp4FuIGR.mjs} +1 -1
- package/dist/{ownership-BjYvMNX_.mjs → ownership-Bx-0cku-.mjs} +3 -3
- package/dist/{page-CzEA_-5_.mjs → page-CQJlcj3x.mjs} +2 -2
- package/dist/{phone-reverses-lmj6kcPm.mjs → phone-reverses-C9yAaKEv.mjs} +18 -4
- package/dist/{placement-log-DIFPQAXp.mjs → placement-log-BXUbiZM6.mjs} +3 -3
- package/dist/{plan-placement-IiiSQhtz.mjs → plan-placement-UxnQjv5Z.mjs} +36 -10
- package/dist/{ports-C2_w1Z0Z.mjs → ports-uUrghqWN.mjs} +3 -3
- package/dist/{prebuild-gmouvmJZ.mjs → prebuild-BDpToDgR.mjs} +16 -17
- package/dist/{project-BUu6Is4k.mjs → project-DYj-HVx6.mjs} +17 -17
- package/dist/{pull-request-CbNlkFok.mjs → pull-request-BzLmzAIQ.mjs} +2 -2
- package/dist/pull-requests.mjs +1 -1
- package/dist/{react-native-android-Cgg99REN.mjs → react-native-android-DDBccgJw.mjs} +32 -26
- package/dist/{react-native-build-oNwqF5Wb.mjs → react-native-build-DaK2IFyP.mjs} +9 -9
- package/dist/{react-native-doctor-BhA3KUte.mjs → react-native-doctor-B-Mw6DcR.mjs} +6 -6
- package/dist/{react-native-ios-B-nf4rjN.mjs → react-native-ios-DjYwUF9U.mjs} +23 -17
- package/dist/{recordings-BldzVKq0.mjs → recordings-C20iUZfp.mjs} +1 -1
- package/dist/{registration-CN6nlhcD.mjs → registration-BwCe64PH.mjs} +1 -1
- package/dist/{reload-C9OduiNc.mjs → reload-DJBeF_rC.mjs} +1 -1
- package/dist/{reload-CCR7KC_l.mjs → reload-fUdkH2_p.mjs} +16 -16
- package/dist/{remote-C8S7FlPF.mjs → remote-y6n99WMW.mjs} +22 -9
- package/dist/{result-7F5hEwQJ.mjs → result-CTqBw2Te.mjs} +32 -21
- package/dist/{run-BqB0v3pt.mjs → run-DaCeNKRm.mjs} +3 -3
- package/dist/{selection-BNPBZ6T5.mjs → selection-Bs8phwhN.mjs} +37 -29
- package/dist/{server-bare-A75rDIdD.mjs → server-bare-BOh-iZEj.mjs} +2 -2
- package/dist/{server-command-CssKFOD7.mjs → server-command-8CuA51Cv.mjs} +6 -6
- package/dist/{server-expo-eQfOdydb.mjs → server-expo-ABQs2XFA.mjs} +4 -4
- package/dist/server-expo-Ba_Y21vB.mjs +2 -0
- package/dist/{settings-CosW5X-S.mjs → settings-BDVI8Ivc.mjs} +331 -62
- package/dist/{settings-OaGQF-ri.mjs → settings-CMHhQNwI.mjs} +24 -3
- package/dist/settings-payload-cm60Zhib.mjs +257 -0
- package/dist/settings-write-BdNRLlBn.mjs +185 -0
- package/dist/settings.schema.json +51 -33
- package/dist/{simslim-Bax1qcxu.mjs → simslim-DCQwzoPy.mjs} +2 -2
- package/dist/{slot-launch-CYCEhfBY.mjs → slot-launch-0l7RqSpr.mjs} +6 -6
- package/dist/{stage-jKQ7CP_B.mjs → stage-F4cAfJGi.mjs} +2 -2
- package/dist/{start-C_wefNKB.mjs → start-DcqnF9p8.mjs} +1 -1
- package/dist/{start-_BdJ32cZ.mjs → start-DrPwER_2.mjs} +27 -22
- package/dist/{state-C1i2nMOP.mjs → state-BX1y5syV.mjs} +4 -4
- package/dist/{state-C4OdpOTF.mjs → state-CZxLyetD.mjs} +2 -2
- package/dist/{stats-tEpEEH-u.mjs → stats-GxuCbles.mjs} +5 -5
- package/dist/{stats-report-n2U5plhk.mjs → stats-report-B86Cv7Uc.mjs} +1 -1
- package/dist/{status-CRXz-Gtj.mjs → status-7ULDEJ1e.mjs} +1 -1
- package/dist/{status-DQrqodLj.mjs → status-BfnK9pUd.mjs} +25 -25
- package/dist/{status-B9M7x4CZ.mjs → status-Bj7ZYvvc.mjs} +1 -1
- package/dist/{status-watch-B5wDIH_o.mjs → status-watch-BfabQn03.mjs} +5 -5
- package/dist/status-worker.mjs +1 -1
- package/dist/{stim-desktop-6Dqp-gjX.mjs → stim-desktop-CbWo21kb.mjs} +2 -2
- package/dist/{stop-ySNQHXMG.mjs → stop-CH79S3IZ.mjs} +5 -5
- package/dist/{stop-DRqQVqDJ.mjs → stop-D-EAr25B.mjs} +21 -20
- package/dist/{stop-CmdNhGlC.mjs → stop-x1Yu3He4.mjs} +2 -2
- package/dist/supervisor-run.mjs +17 -17
- package/dist/{support-CVOCp0Ft.mjs → support-Be0UeVZU.mjs} +10 -10
- package/dist/{support-BGSCBoib.mjs → support-CNg_YsOk.mjs} +6 -6
- package/dist/{swiftpm-artifact-inputs-CfUzt_0Z.mjs → swiftpm-artifact-inputs-uPqYvGBv.mjs} +4 -4
- package/dist/{swiftpm-macos-x6HPpl_2.mjs → swiftpm-macos-Ch4YjY_A.mjs} +11 -12
- package/dist/{toolchain-J4J8MrAr.mjs → toolchain-CbCG6C5Z.mjs} +321 -15
- package/dist/{toolchain-DoavrvIA.mjs → toolchain-JYAOquPg.mjs} +1 -1
- package/dist/{trigger-KVaWWNyn.mjs → trigger-DMou-X7j.mjs} +2 -2
- package/dist/trigger-qp2ji5wE.mjs +2 -0
- package/dist/{warm-progress-DvhTX_eu.mjs → warm-progress-C0RsbngN.mjs} +731 -727
- package/dist/{web-Bihbf7-u.mjs → web-Cq_AQ4DK.mjs} +9 -9
- package/dist/web-Je6abcpz.mjs +2 -0
- package/dist/web-run.mjs +9 -9
- package/dist/windows-report.mjs +1 -1
- package/dist/{workspace-state-pUg3_RRA.mjs → workspace-state-BjqdjnJR.mjs} +3 -3
- package/dist/{workspaces-g2lhdBXF.mjs → workspaces-DFbj07jp.mjs} +1795 -70
- package/dist/{worktree-BKuklFh_.mjs → worktree-COAJ3-OD.mjs} +934 -514
- package/dist/{worktree-Bm4cb-nU.mjs → worktree-JGUd_53L.mjs} +1 -1
- package/package.json +7 -7
- package/dist/ccache-Bx5TbxwG.mjs +0 -143
- package/dist/eas-fallback-FwkeqqGi.mjs +0 -381
- package/dist/hosted-ios-D55QhYaD.mjs +0 -15
- package/dist/native-run-BfIDFKLH.mjs +0 -275
- package/dist/server-expo-wvcj5tiZ.mjs +0 -2
- package/dist/settings-write-QjYfSrjF.mjs +0 -360
- package/dist/trigger-DzJu208Q.mjs +0 -2
- package/dist/web-BFLueSh-.mjs +0 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { c as throwIfCancelled } from "./exec-
|
|
2
|
-
import { c as call, l as connectHost } from "./hosted-client-
|
|
3
|
-
import { i as requestHostedMetro } from "./metro-gateway-
|
|
4
|
-
import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-
|
|
1
|
+
import { c as throwIfCancelled } from "./exec-aULwtNly.mjs";
|
|
2
|
+
import { c as call, l as connectHost } from "./hosted-client-D7Pk_Oo1.mjs";
|
|
3
|
+
import { i as requestHostedMetro } from "./metro-gateway-BnHdqMO_.mjs";
|
|
4
|
+
import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-CdgaiuyP.mjs";
|
|
5
5
|
//#region src/device-host/hosted-android.ts
|
|
6
6
|
async function prepareHostedAndroid(machine, selectors, recorded, mode) {
|
|
7
7
|
return await prepareHostedNative(machine, selectors, recorded, "android", false, mode);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { c as throwIfCancelled, o as cancellableSleep } from "./exec-
|
|
2
|
-
import {
|
|
3
|
-
import { t as BuildConnection } from "./client-
|
|
4
|
-
import {
|
|
1
|
+
import { c as throwIfCancelled, o as cancellableSleep } from "./exec-aULwtNly.mjs";
|
|
2
|
+
import { Y as diagnoseConnectFailure, ot as resolveEndpoint } from "./config-Cn94Jc0g.mjs";
|
|
3
|
+
import { t as BuildConnection } from "./client-xsdxrhWA.mjs";
|
|
4
|
+
import { g as configuredMachines } from "./selection-Bs8phwhN.mjs";
|
|
5
5
|
import { createHash } from "node:crypto";
|
|
6
6
|
import { lstatSync, readFileSync, readdirSync, readlinkSync } from "node:fs";
|
|
7
7
|
import { join } from "node:path";
|
|
@@ -54,10 +54,14 @@ async function connectHost(machine, timeoutMs = CONNECT_TIMEOUT_MS, strict = fal
|
|
|
54
54
|
});
|
|
55
55
|
if (signal?.aborted && opened instanceof BuildConnection) opened.close();
|
|
56
56
|
signal?.throwIfAborted();
|
|
57
|
-
if (!(opened instanceof BuildConnection))
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
if (!(opened instanceof BuildConnection)) {
|
|
58
|
+
const diagnosis = opened.refused || opened.code === "server-outdated" ? null : await diagnoseConnectFailure(machine, opened, signal);
|
|
59
|
+
throw Object.assign(new Error(opened.code === "server-outdated" ? `${machine} runs a stim-server that speaks an older protocol than this Stim. Run stim doctor for the command that updates it there, then retry.` : opened.refused ? `${machine} refused this machine: ${opened.failure.replace(/\.+$/, "")}. Run stim doctor.` : diagnosis?.message ?? `${machine} is unreachable: ${opened.failure}. Run stim doctor to see which layer failed.`), {
|
|
60
|
+
code: strict ? "STIM_HOSTING_REFUSED" : opened.refused ? "STIM_HOSTING_REFUSED" : opened.code ?? "closed",
|
|
61
|
+
hostCode: opened.code,
|
|
62
|
+
...diagnosis ? { remedy: diagnosis.remedy } : {}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
61
65
|
return {
|
|
62
66
|
machine,
|
|
63
67
|
credential,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { t as getExecutor } from "./exec-
|
|
2
|
-
import { E as workspaceDir, k as workspaceLogsDir$1 } from "./workspace-state-
|
|
3
|
-
import { B as deviceSlotFileKey,
|
|
4
|
-
import { l as phaseLine } from "./command-output-
|
|
5
|
-
import { n as macosDir } from "./state-
|
|
6
|
-
import { n as androidLogGroups, r as isAndroidCrashText } from "./android-
|
|
7
|
-
import {
|
|
8
|
-
import { c as call } from "./hosted-client-
|
|
1
|
+
import { t as getExecutor } from "./exec-aULwtNly.mjs";
|
|
2
|
+
import { E as workspaceDir, k as workspaceLogsDir$1 } from "./workspace-state-BjqdjnJR.mjs";
|
|
3
|
+
import { B as deviceSlotFileKey, q as validateDeviceSlot, rt as parseMachine$1 } from "./config-Cn94Jc0g.mjs";
|
|
4
|
+
import { l as phaseLine } from "./command-output-Dj-WT4BP.mjs";
|
|
5
|
+
import { n as macosDir } from "./state-CZxLyetD.mjs";
|
|
6
|
+
import { n as androidLogGroups, r as isAndroidCrashText } from "./android-Deb9X3_Y.mjs";
|
|
7
|
+
import { c as readNdjsonGenerations$1, i as createNdjsonWriter } from "./ndjson-Dy2W4vRa.mjs";
|
|
8
|
+
import { c as call } from "./hosted-client-D7Pk_Oo1.mjs";
|
|
9
9
|
import { mkdirSync, readFileSync, realpathSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
10
10
|
import { dirname, join } from "node:path";
|
|
11
11
|
import { LOG_ROTATE_BYTES, ambientWrite, withDirLockAsync } from "@stim-cli/core";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { n as pullHostedNativeLogs, r as readHostedNativeLogs, t as pullHostedMacosLogs } from "./hosted-logs-
|
|
2
|
-
import { l as phaseLine } from "./command-output-
|
|
3
|
-
import { l as connectHost } from "./hosted-client-
|
|
4
|
-
import { n as readHostedIos, t as readHostedAndroid } from "./ios-state-
|
|
5
|
-
import "./hosted-macos-
|
|
1
|
+
import { n as pullHostedNativeLogs, r as readHostedNativeLogs, t as pullHostedMacosLogs } from "./hosted-logs-B1gqQuva.mjs";
|
|
2
|
+
import { l as phaseLine } from "./command-output-Dj-WT4BP.mjs";
|
|
3
|
+
import { l as connectHost } from "./hosted-client-D7Pk_Oo1.mjs";
|
|
4
|
+
import { n as readHostedIos, t as readHostedAndroid } from "./ios-state-BZ03NFgF.mjs";
|
|
5
|
+
import "./hosted-macos-B9w4H8hc.mjs";
|
|
6
6
|
import { watch } from "node:fs";
|
|
7
7
|
import { dirname, relative, resolve, sep } from "node:path";
|
|
8
8
|
import { ambientWrite, configDir } from "@stim-cli/core";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { o as cancellableSleep } from "./exec-
|
|
2
|
-
import { a as agentAccess, i as closeAgentConnection, o as removeAgentAccess, t as pullHostedMacosLogs } from "./hosted-logs-
|
|
3
|
-
import { l as phaseLine } from "./command-output-
|
|
4
|
-
import { n as macosDir } from "./state-
|
|
5
|
-
import {
|
|
6
|
-
import { _ as unknownSession, a as SESSION_TIMEOUT_MS, c as call, d as hostedSession, g as stoppedSession, h as sha256, i as RESERVE_TIMEOUT_MS, l as connectHost, m as settle, o as attach, r as PREPARE_TIMEOUT_MS, s as bundleManifest, t as INSTALL_TIMEOUT_MS, u as heldNoLonger, v as upload } from "./hosted-client-
|
|
1
|
+
import { o as cancellableSleep } from "./exec-aULwtNly.mjs";
|
|
2
|
+
import { a as agentAccess, i as closeAgentConnection, o as removeAgentAccess, t as pullHostedMacosLogs } from "./hosted-logs-B1gqQuva.mjs";
|
|
3
|
+
import { l as phaseLine } from "./command-output-Dj-WT4BP.mjs";
|
|
4
|
+
import { n as macosDir } from "./state-CZxLyetD.mjs";
|
|
5
|
+
import { ot as runCancellationSignal } from "./toolchain-CbCG6C5Z.mjs";
|
|
6
|
+
import { _ as unknownSession, a as SESSION_TIMEOUT_MS, c as call, d as hostedSession, g as stoppedSession, h as sha256, i as RESERVE_TIMEOUT_MS, l as connectHost, m as settle, o as attach, r as PREPARE_TIMEOUT_MS, s as bundleManifest, t as INSTALL_TIMEOUT_MS, u as heldNoLonger, v as upload } from "./hosted-client-D7Pk_Oo1.mjs";
|
|
7
7
|
import { randomUUID } from "node:crypto";
|
|
8
8
|
import { join } from "node:path";
|
|
9
9
|
import { ambientContext, ambientWrite } from "@stim-cli/core";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { o as cancellableSleep } from "./exec-
|
|
2
|
-
import { E as workspaceDir, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-
|
|
3
|
-
import { a as agentAccess, i as closeAgentConnection, n as pullHostedNativeLogs, o as removeAgentAccess } from "./hosted-logs-
|
|
4
|
-
import {
|
|
5
|
-
import { _ as unknownSession, a as SESSION_TIMEOUT_MS, c as call, d as hostedSession, g as stoppedSession, h as sha256, i as RESERVE_TIMEOUT_MS, l as connectHost, m as settle, n as OFFER_TIMEOUT_MS, o as attach, p as requireHostedAppMode, r as PREPARE_TIMEOUT_MS, s as bundleManifest, t as INSTALL_TIMEOUT_MS, u as heldNoLonger, v as upload } from "./hosted-client-
|
|
6
|
-
import { a as requireHostedMetro, i as requestHostedMetro, n as closeHostedMetro } from "./metro-gateway-
|
|
7
|
-
import { s as writeHostedNative } from "./ios-state-
|
|
1
|
+
import { o as cancellableSleep, x as withDrainingCancellation } from "./exec-aULwtNly.mjs";
|
|
2
|
+
import { E as workspaceDir, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-BjqdjnJR.mjs";
|
|
3
|
+
import { a as agentAccess, i as closeAgentConnection, n as pullHostedNativeLogs, o as removeAgentAccess } from "./hosted-logs-B1gqQuva.mjs";
|
|
4
|
+
import { ot as runCancellationSignal } from "./toolchain-CbCG6C5Z.mjs";
|
|
5
|
+
import { _ as unknownSession, a as SESSION_TIMEOUT_MS, c as call, d as hostedSession, g as stoppedSession, h as sha256, i as RESERVE_TIMEOUT_MS, l as connectHost, m as settle, n as OFFER_TIMEOUT_MS, o as attach, p as requireHostedAppMode, r as PREPARE_TIMEOUT_MS, s as bundleManifest, t as INSTALL_TIMEOUT_MS, u as heldNoLonger, v as upload } from "./hosted-client-D7Pk_Oo1.mjs";
|
|
6
|
+
import { a as requireHostedMetro, i as requestHostedMetro, n as closeHostedMetro } from "./metro-gateway-BnHdqMO_.mjs";
|
|
7
|
+
import { s as writeHostedNative } from "./ios-state-BZ03NFgF.mjs";
|
|
8
8
|
import { randomUUID } from "node:crypto";
|
|
9
9
|
import { readFileSync } from "node:fs";
|
|
10
10
|
import { join } from "node:path";
|
|
@@ -124,12 +124,19 @@ function hostedMetroPortProbe(machine, note) {
|
|
|
124
124
|
return !window.busy.has(port);
|
|
125
125
|
};
|
|
126
126
|
}
|
|
127
|
-
|
|
127
|
+
function placeHostedNative(target, options) {
|
|
128
|
+
const context = ambientContext();
|
|
129
|
+
return withDrainingCancellation(context, runCancellationSignal(context), () => placeHostedNativeOnce(target, options));
|
|
130
|
+
}
|
|
131
|
+
async function placeHostedNativeOnce(target, { root, slot, bundle, handoff, bundleId, selectors, release, mode = release ? "release" : "development", devClientScheme, reserved, note, enterPhase = () => {}, metro = requestHostedMetro, metroPort, platform = "ios" }) {
|
|
128
132
|
let host = target.host;
|
|
133
|
+
const signal = runCancellationSignal(ambientContext());
|
|
134
|
+
const closeOnAbort = () => host.connection.close();
|
|
135
|
+
signal?.addEventListener("abort", closeOnAbort, { once: true });
|
|
129
136
|
try {
|
|
130
137
|
if (mode === "development" && metro === requestHostedMetro) requireHostedMetro(root);
|
|
131
138
|
enterPhase("device");
|
|
132
|
-
host = await connectHost(host.machine, void 0, true);
|
|
139
|
+
host = await connectHost(host.machine, void 0, true, signal);
|
|
133
140
|
target.host = host;
|
|
134
141
|
requireHostedAppMode(host, platform, mode);
|
|
135
142
|
let session = (target.session ? await attach(host, target.session.id, void 0, platform) : null) ?? await reserveHostedNative(host, target, {
|
|
@@ -266,6 +273,7 @@ async function placeHostedNative(target, { root, slot, bundle, handoff, bundleId
|
|
|
266
273
|
} catch (error) {
|
|
267
274
|
throw hostingRefusal(host.machine, error);
|
|
268
275
|
} finally {
|
|
276
|
+
signal?.removeEventListener("abort", closeOnAbort);
|
|
269
277
|
if (platform === "android") host.connection.close();
|
|
270
278
|
}
|
|
271
279
|
}
|
|
@@ -286,13 +294,6 @@ async function stopHostedNative(root, slot, signal, platform = "ios") {
|
|
|
286
294
|
signal?.addEventListener("abort", cancel, { once: true });
|
|
287
295
|
try {
|
|
288
296
|
host = await connectHost(placement.machine, void 0, false, signal);
|
|
289
|
-
try {
|
|
290
|
-
await pullHostedNativeLogs(root, name, placement, host, true, platform, signal);
|
|
291
|
-
} catch (error) {
|
|
292
|
-
signal?.throwIfAborted();
|
|
293
|
-
ambientWrite("stderr", `Could not copy final native logs from ${placement.machine}: ${error.message}\n`);
|
|
294
|
-
}
|
|
295
|
-
signal?.throwIfAborted();
|
|
296
297
|
const stopped = await settle(host, hostedSession(host, await call(host, "device-host.stop", { session: placement.session }), platform), ["stopping"], SESSION_TIMEOUT_MS, platform, signal);
|
|
297
298
|
signal?.throwIfAborted();
|
|
298
299
|
if (stopped.state !== "stopped") throw unknownSession(host, stopped);
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import { k as workspaceLogsDir$1, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-
|
|
2
|
-
import { V as deviceSlotKey, _ as loadConfig$1 } from "./config-
|
|
3
|
-
import { o as formatLongDuration } from "./command-output-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { k as workspaceLogsDir$1, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-BjqdjnJR.mjs";
|
|
2
|
+
import { V as deviceSlotKey, _ as loadConfig$1 } from "./config-Cn94Jc0g.mjs";
|
|
3
|
+
import { o as formatLongDuration } from "./command-output-Dj-WT4BP.mjs";
|
|
4
|
+
import { i as createNdjsonWriter } from "./ndjson-Dy2W4vRa.mjs";
|
|
5
|
+
import { L as workspaceBuildInProgress, ft as teardownOwnedIosSim, j as collectOwnedDeviceActivity, ut as teardownOwnedAvd } from "./workspaces-DFbj07jp.mjs";
|
|
6
6
|
import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { d as listAllIosSims } from "./ios-WxpDJ5T1.mjs";
|
|
7
|
+
import { _ as workspaceDeviceLastUseAt } from "./activity-Cd-ysFes.mjs";
|
|
8
|
+
import { d as listAllIosSims } from "./ios-E26qSpkb.mjs";
|
|
10
9
|
import { join } from "node:path";
|
|
11
10
|
import { LOG_ROTATE_BYTES } from "@stim-cli/core";
|
|
12
11
|
import { DEVICE_IDLE_SHUTDOWN_KEY, DEVICE_RECLAIM_REASON, readDeviceIdleShutdowns } from "@stim-cli/core/state";
|
|
@@ -1,39 +1,40 @@
|
|
|
1
|
-
import { a as recordWorkspaceUseAsync, k as workspaceLogsDir$1 } from "./workspace-state-
|
|
2
|
-
import { B as deviceSlotFileKey, W as parseDeviceSlotOption, q as validateDeviceSlot } from "./config-
|
|
3
|
-
import { _ as stepTimer, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-
|
|
4
|
-
import {
|
|
5
|
-
import { t as NO_PROJECT_REFUSAL } from "./project-
|
|
6
|
-
import { ft as POOL_SETTING_REMEDY, vt as parkedMaxSetting } from "./android-
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
1
|
+
import { a as recordWorkspaceUseAsync, k as workspaceLogsDir$1 } from "./workspace-state-BjqdjnJR.mjs";
|
|
2
|
+
import { B as deviceSlotFileKey, W as parseDeviceSlotOption, q as validateDeviceSlot } from "./config-Cn94Jc0g.mjs";
|
|
3
|
+
import { _ as stepTimer, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-Dj-WT4BP.mjs";
|
|
4
|
+
import { B as publicUrlSetting, C as iosSigningIdentitySettingError, F as metroWarmupUrlSetting, N as metroPortSetting, S as iosSigningIdentitySetting, T as iosSigningIdentitySha1SettingError, a as SETTING_SHAPE_REMEDY, g as deviceReclaimIdleMinutesSetting, ot as tunnelModeSetting, v as iosLanHostSetting, w as iosSigningIdentitySha1Setting, y as iosLanHostSettingError, z as projectSettingsContextAsync } from "./settings-BDVI8Ivc.mjs";
|
|
5
|
+
import { t as NO_PROJECT_REFUSAL } from "./project-DYj-HVx6.mjs";
|
|
6
|
+
import { ft as POOL_SETTING_REMEDY, vt as parkedMaxSetting } from "./android-DriNoAVy.mjs";
|
|
7
|
+
import { En as runProcessOperation, Et as binOnPath, Qt as DEFAULT_METRO_PORT, qn as ownedSessionName, wn as exitAfterFlush } from "./ccache-BWTze1Ls.mjs";
|
|
8
|
+
import { J as runFailureRecord, X as tapBuildLog, Y as startBuildProgress, Z as thrownRunFailureRecord, et as createRunRecorder, ot as statsProjectKey$1, z as NO_BUILD_PROGRESS } from "./workspaces-DFbj07jp.mjs";
|
|
9
|
+
import { Q as cancelledFailure, at as runCancellation, k as COMPILATION_CACHE_NOT_RUN, ot as runCancellationSignal, st as withNativeBuildRun } from "./toolchain-CbCG6C5Z.mjs";
|
|
10
|
+
import { i as createIosSimSnapshot } from "./ios-E26qSpkb.mjs";
|
|
10
11
|
import { d as optimizationBuildProfile, l as artifactCachePolicy } from "./errors-DHm_U5gv.mjs";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { f as waitFlagConflict, o as leaseExpiryText } from "./device-lease-run-
|
|
18
|
-
import { _ as resolveIosWait, a as deviceModelRefusal, b as resolveSimulatorAppFlag, c as iosProjectPathError, d as ownedSimFailure, g as resolveIosBuildSetup, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, r as createIosDeviceWaitRun, u as isReleaseConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-
|
|
19
|
-
import { r as isEasBuildFailure } from "./eas-build-
|
|
20
|
-
import { r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-
|
|
21
|
-
import "./dev-client-
|
|
22
|
-
import { t as didSetUpDevice } from "./device-
|
|
12
|
+
import { S as setRemoteLogSink, d as simulatorRuntime } from "./client-xsdxrhWA.mjs";
|
|
13
|
+
import { s as parseBuildMachineOption } from "./selection-Bs8phwhN.mjs";
|
|
14
|
+
import { r as hostedMetroSettings } from "./metro-gateway-BnHdqMO_.mjs";
|
|
15
|
+
import { i as writeDevicePlacementAsync } from "./ios-state-BZ03NFgF.mjs";
|
|
16
|
+
import { t as devClientPortBusy } from "./hosted-native-CdgaiuyP.mjs";
|
|
17
|
+
import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-BCsdAGj_.mjs";
|
|
18
|
+
import { f as waitFlagConflict, o as leaseExpiryText } from "./device-lease-run-DwsGfjUN.mjs";
|
|
19
|
+
import { _ as resolveIosWait, a as deviceModelRefusal, b as resolveSimulatorAppFlag, c as iosProjectPathError, d as ownedSimFailure, g as resolveIosBuildSetup, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, r as createIosDeviceWaitRun, u as isReleaseConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-Be0UeVZU.mjs";
|
|
20
|
+
import { r as isEasBuildFailure } from "./eas-build-CjNSWmjo.mjs";
|
|
21
|
+
import { i as launchOutcomeRecord, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-DqaIBO5w.mjs";
|
|
22
|
+
import "./dev-client-BMca82xo.mjs";
|
|
23
|
+
import { t as didSetUpDevice } from "./device-tM41-TUq.mjs";
|
|
23
24
|
import { t as unsupportedPlan } from "./project-plan-BPwbLwQu.mjs";
|
|
24
|
-
import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-
|
|
25
|
-
import { a as
|
|
26
|
-
import { t as acquireIosArtifact } from "./artifact-
|
|
27
|
-
import { a as hostedIosSelectors, i as hostedIosMetroNote, n as connectIosTarget, o as iosPlacementBudget, r as deviceRemoteConflict, s as selectIosPlacement, t as connectIosBackend } from "./remote-
|
|
28
|
-
import { a as iosPoolCandidates, c as isWirelessIosDevice, f as resolveIosPhysicalDevice, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds } from "./ios-device-
|
|
29
|
-
import { i as lanOriginUrlFor, l as verifyIosMetroRun, n as chooseLanAddress, o as finishIosRun, t as DEFAULT_DEPS } from "./dependencies-
|
|
30
|
-
import {
|
|
25
|
+
import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-CBqYbzYM.mjs";
|
|
26
|
+
import { a as iosLedgerDevice, c as writeLastBuild, o as lastBuildRecord, s as reportIosResult } from "./ios-project-D8Jcy_br.mjs";
|
|
27
|
+
import { t as acquireIosArtifact } from "./artifact-faemIZv5.mjs";
|
|
28
|
+
import { a as hostedIosSelectors, i as hostedIosMetroNote, n as connectIosTarget, o as iosPlacementBudget, r as deviceRemoteConflict, s as selectIosPlacement, t as connectIosBackend } from "./remote-y6n99WMW.mjs";
|
|
29
|
+
import { a as iosPoolCandidates, c as isWirelessIosDevice, f as resolveIosPhysicalDevice, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds } from "./ios-device-C_QkIf1Z.mjs";
|
|
30
|
+
import { i as lanOriginUrlFor, l as verifyIosMetroRun, n as chooseLanAddress, o as finishIosRun, t as DEFAULT_DEPS } from "./dependencies-BGokZ-Ng.mjs";
|
|
31
|
+
import { join } from "node:path";
|
|
31
32
|
import { workspaceId } from "@stim-cli/core";
|
|
32
33
|
import { hostedIosStatus, parseMachine } from "@stim-cli/core/state";
|
|
33
34
|
import chalk from "chalk";
|
|
34
35
|
import { InvalidArgumentError } from "commander";
|
|
35
36
|
//#region src/commands/ios/hosted.ts
|
|
36
|
-
async function finishHostedIosRun({ target, d, artifact, root, slot, release, appMode, isExpo, metroCheck, metroPort, logsDir, fail, note, phase, enterPhase, enterActivity, selectors, projectBundleId, ...report }) {
|
|
37
|
+
async function finishHostedIosRun({ target, d, artifact, root, slot, release, appMode, isExpo, metroCheck, metroPort, logsDir, fail, note, phase, enterPhase, enterActivity, selectors, projectBundleId, logWriter, ...report }) {
|
|
37
38
|
const bundleId = artifact.bundleId ?? (await d.readBundleId(artifact.path) || await projectBundleId());
|
|
38
39
|
if (!bundleId) return fail({
|
|
39
40
|
code: "STIM_INSTALL_FAILED",
|
|
@@ -41,6 +42,7 @@ async function finishHostedIosRun({ target, d, artifact, root, slot, release, ap
|
|
|
41
42
|
});
|
|
42
43
|
const devClientScheme = appMode === "development" && isExpo ? d.devClientScheme(root, artifact.path) ?? void 0 : void 0;
|
|
43
44
|
const launchedAt = d.now();
|
|
45
|
+
let marked = false;
|
|
44
46
|
let run;
|
|
45
47
|
try {
|
|
46
48
|
run = await d.placeHostedIos(target, {
|
|
@@ -54,7 +56,25 @@ async function finishHostedIosRun({ target, d, artifact, root, slot, release, ap
|
|
|
54
56
|
mode: appMode,
|
|
55
57
|
...appMode === "development" && isExpo ? { devClientScheme } : {},
|
|
56
58
|
metroPort,
|
|
57
|
-
reserved: (placement) =>
|
|
59
|
+
reserved: (placement) => {
|
|
60
|
+
if (placement.device && !marked) {
|
|
61
|
+
marked = true;
|
|
62
|
+
logWriter().write({
|
|
63
|
+
src: "build",
|
|
64
|
+
level: "info",
|
|
65
|
+
marker: true,
|
|
66
|
+
event: "launch_attempt",
|
|
67
|
+
ts: d.now(),
|
|
68
|
+
platform: "ios",
|
|
69
|
+
appId: bundleId,
|
|
70
|
+
deviceId: placement.session,
|
|
71
|
+
remote: true,
|
|
72
|
+
host: target.host.machine,
|
|
73
|
+
msg: `launching ${bundleId} on ${target.host.machine}`
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
return d.writeHostedIos(root, slot, placement);
|
|
77
|
+
},
|
|
58
78
|
note,
|
|
59
79
|
enterPhase
|
|
60
80
|
});
|
|
@@ -76,6 +96,7 @@ async function finishHostedIosRun({ target, d, artifact, root, slot, release, ap
|
|
|
76
96
|
}, slot);
|
|
77
97
|
let launched = run.launched;
|
|
78
98
|
let launchWarning;
|
|
99
|
+
let unattributed = false;
|
|
79
100
|
if (appMode === "development") {
|
|
80
101
|
const hostedLogs = d.followHostedLaunchLogs(root, slot, "ios", launchedAt);
|
|
81
102
|
let verification;
|
|
@@ -117,7 +138,17 @@ async function finishHostedIosRun({ target, d, artifact, root, slot, release, ap
|
|
|
117
138
|
});
|
|
118
139
|
launched = verification.state === true ? true : verification.state === "bundling" ? "bundling" : "unverified";
|
|
119
140
|
launchWarning = verification.warning;
|
|
141
|
+
unattributed = verification.unattributed ?? false;
|
|
120
142
|
}
|
|
143
|
+
logWriter().write(launchOutcomeRecord({
|
|
144
|
+
launchState: launched,
|
|
145
|
+
release,
|
|
146
|
+
process: appMode === "process",
|
|
147
|
+
bundleId,
|
|
148
|
+
configuration: report.configuration,
|
|
149
|
+
metroPort,
|
|
150
|
+
unattributed
|
|
151
|
+
}));
|
|
121
152
|
if (launched === "unverified") note(`Launch on ${target.host.machine} is unverified; check the hosted app, then retry stim ios --remote ${target.host.machine}.`);
|
|
122
153
|
const cache = artifact.cache;
|
|
123
154
|
const device = run.placement.device;
|
|
@@ -207,9 +238,9 @@ function iosCommand(program) {
|
|
|
207
238
|
registerIos(program);
|
|
208
239
|
}
|
|
209
240
|
function registerIos(program, deps = {}) {
|
|
210
|
-
program.command("ios").description("Build (or restore from the fingerprint cache), install and launch this workspace's app on its owned simulator. React Native and Expo Debug runs start the dev server when it is not running.").option("--eas-profile <name>", "Download a matching EAS development build; on a miss, print the build command without running it").option("--slot <name>", "Reusable device slot within this workspace (default: default)", parseDeviceSlotOption).option("--remote-build <value>", "Build on auto,
|
|
241
|
+
program.command("ios").description("Build (or restore from the fingerprint cache), install and launch this workspace's app on its owned simulator. React Native and Expo Debug runs start the dev server when it is not running.").option("--eas-profile <name>", "Download a matching EAS development build; on a miss, print the build command without running it").option("--slot <name>", "Reusable device slot within this workspace (default: default)", parseDeviceSlotOption).option("--remote-build <value>", "Build on local, auto, remote (remote machines first), remote-only (never here), or one named machine; a name refuses without fallback", parseBuildMachineOption).option("--json", "Emit the facts as a single JSON line on stdout; every other line goes to stderr").option("--plan", "Predict the next build without building, booting or installing: resolve the fingerprint, check the local then remote cache, and print the expected cache result and duration. Writes no Stim state.").option("--scheme <name>", "Shared Xcode app scheme to build; overrides automatic scheme selection, not the app URL scheme").option("--no-metro-check", "Skip the \"is this workspace's dev server running?\" check: do not start it, and build anyway").option("--no-build-cache", "Build fresh, ignoring cached artifacts (local and the project's build-cache provider); the fresh build still replaces the cache entry").option("--configuration <name>", "Xcode configuration to build (e.g. Release). A non-Debug configuration embeds the JS bundle and skips Metro entirely. Overrides the ios.configuration setting. Default: Debug").option("--device-type <name>", "Simulator model to create this workspace's owned sim as, exactly as `xcrun simctl list devicetypes` names it (e.g. \"iPad Pro 13-inch (M5)\"). Overrides the ios.deviceType setting for this invocation. A model no installed runtime can create refuses with STIM_BAD_ARG and prints the models they do offer.").option("--runtime <version>", "Simulator runtime to create this workspace's owned sim on, as a version (\"18.5\") or a runtime's full name (\"iOS 18.5\"); nothing else matches. Overrides the ios.runtime setting for this invocation. An unknown version refuses with STIM_BAD_ARG and prints the installed runtimes.").option("--simulator-app <app>", "Open the owned simulator in xcode, siniulator, or stim-desktop for this run, overriding the machine iosSimulatorApp setting. Also opens an already running simulator; local simulators only.").option("--device [udid]", "Build the iphoneos slice for a connected iPhone, install it, and launch it, instead of using this workspace's owned simulator. The phone can be cabled or paired over Wi-Fi. With no UDID, the first cabled device this workspace can lease is used, waiting for one that is busy; a Wi-Fi device is used only when no cabled one is connected and ready. In Debug the app is wired to this workspace's Metro over the LAN. Stim never creates, boots, or deletes a physical device.").option("--remote <target>", "Run on eas, proxy, or an approved Mac in remote.machines; named Macs never fall back locally. auto places on an approved Mac when this machine is full or busy. remote tries remote.machines in order first and runs here only when none takes it. remote-only never runs here. local runs here, whatever ios.remote says.", (value) => {
|
|
211
242
|
if (parseMachine(value)) return value.trim();
|
|
212
|
-
throw new InvalidArgumentError("expected eas, proxy, auto,
|
|
243
|
+
throw new InvalidArgumentError("expected eas, proxy, local, auto, remote, remote-only, or a remote Mac name");
|
|
213
244
|
}).option("--wait <seconds>", "How long to wait for another workspace to release the phone it leases, before refusing with STIM_DEVICE_BUSY (default 60, 0 refuses at once). Without --device, wait for an owned-device slot (default 600 seconds; --no-wait refuses immediately).").option("--no-wait", "Install on a phone another workspace leases instead of waiting: this run takes no lease and, when both workspaces build the same app id, the install terminates the holder's running app. Without --device, refuse a full device cap or existing slot queue immediately.").action(async (opts) => {
|
|
214
245
|
if (opts.plan) {
|
|
215
246
|
await planIos(opts, {
|
|
@@ -234,6 +265,12 @@ function runIosOperation(context, root, opts = {}, deps = {}, onFailure = () =>
|
|
|
234
265
|
platform: "ios",
|
|
235
266
|
slot: opts.slot ?? "default"
|
|
236
267
|
}, async (claim) => {
|
|
268
|
+
const lightened = await restoreLightenedDependencies(root, context);
|
|
269
|
+
if (lightened) {
|
|
270
|
+
printLightenedFailure(context, lightened, Boolean(opts.json));
|
|
271
|
+
onFailure(lightened);
|
|
272
|
+
return null;
|
|
273
|
+
}
|
|
237
274
|
await recordWorkspaceUseAsync(root, /* @__PURE__ */ new Date(), context.env, context.cwd, context.signal);
|
|
238
275
|
const progress = startBuildProgress({
|
|
239
276
|
root,
|
|
@@ -307,6 +344,10 @@ function iosSlotDeps(d, slot) {
|
|
|
307
344
|
...args,
|
|
308
345
|
slot
|
|
309
346
|
}),
|
|
347
|
+
ensureBooted: (args) => base.ensureBooted({
|
|
348
|
+
...args,
|
|
349
|
+
slot
|
|
350
|
+
}),
|
|
310
351
|
checkDeviceCapacity: (args) => base.checkDeviceCapacity({
|
|
311
352
|
...args,
|
|
312
353
|
slot
|
|
@@ -435,7 +476,15 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
|
|
|
435
476
|
let devicePlacement;
|
|
436
477
|
let builtConfiguration = null;
|
|
437
478
|
let acquiredBuild = null;
|
|
438
|
-
|
|
479
|
+
let builtScheme;
|
|
480
|
+
let builtDevice = null;
|
|
481
|
+
const recordFailedBuild = (build, errorCode, why = {}) => writeLastBuild(root, lastBuildRecord({
|
|
482
|
+
ledger: {
|
|
483
|
+
scheme: builtScheme,
|
|
484
|
+
device: builtDevice,
|
|
485
|
+
message: why.message,
|
|
486
|
+
remedy: why.remedy
|
|
487
|
+
},
|
|
439
488
|
devicePlacement,
|
|
440
489
|
buildMachine,
|
|
441
490
|
...build,
|
|
@@ -461,7 +510,10 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
|
|
|
461
510
|
if (remedy) note(chalk.dim(phaseLine("remedy", remedy)));
|
|
462
511
|
if (logPath) note(chalk.dim(phaseLine("log", logPath)));
|
|
463
512
|
const failedBuild = build ?? acquiredBuild;
|
|
464
|
-
if (failedBuild) recordFailedBuild(failedBuild, code
|
|
513
|
+
if (failedBuild) recordFailedBuild(failedBuild, code, {
|
|
514
|
+
message,
|
|
515
|
+
remedy
|
|
516
|
+
});
|
|
465
517
|
if (acquiredBuild) logWriter().write(runFailureRecord({
|
|
466
518
|
code,
|
|
467
519
|
message,
|
|
@@ -549,6 +601,7 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
|
|
|
549
601
|
const configuration = opts.easProfile !== void 0 ? null : resolveConfiguration(opts.configuration, settings);
|
|
550
602
|
builtConfiguration = configuration ?? "Debug";
|
|
551
603
|
const buildScheme = resolveSchemeSelection(opts, settings);
|
|
604
|
+
builtScheme = buildScheme;
|
|
552
605
|
const release = isReleaseConfiguration(configuration);
|
|
553
606
|
const appMode = {
|
|
554
607
|
metro: "development",
|
|
@@ -573,7 +626,6 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
|
|
|
573
626
|
const deviceSlotWait = {
|
|
574
627
|
automatic: false,
|
|
575
628
|
waitMs: deviceSlotWaitMs,
|
|
576
|
-
displayName: basename(root),
|
|
577
629
|
reclaimIdleMinutes: deviceReclaimIdleMinutesSetting(settings),
|
|
578
630
|
...deviceWaitRun.policy,
|
|
579
631
|
onWait: (ms) => {
|
|
@@ -621,6 +673,7 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
|
|
|
621
673
|
}),
|
|
622
674
|
simSnapshot,
|
|
623
675
|
noWait: deviceSlotWaitMs === 0,
|
|
676
|
+
waitMs: deviceSlotWaitMs,
|
|
624
677
|
note,
|
|
625
678
|
phase,
|
|
626
679
|
log: (entry) => logWriter().write(entry)
|
|
@@ -818,6 +871,7 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
|
|
|
818
871
|
const prepareMs = prepare();
|
|
819
872
|
if (device.created || prepareMs >= 2e3) phase("device", `${deviceLabel(device, device.deviceUdid)} ${device.created ? "created" : "prepared"} (${formatDuration(prepareMs)})`);
|
|
820
873
|
}
|
|
874
|
+
builtDevice = iosLedgerDevice(device);
|
|
821
875
|
let bootDuration = "";
|
|
822
876
|
let bootPending = false;
|
|
823
877
|
let bootPromise;
|
|
@@ -970,7 +1024,7 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
|
|
|
970
1024
|
if (cancelled) return fail(cancelled);
|
|
971
1025
|
if (acquiredBuild) {
|
|
972
1026
|
const { code } = error;
|
|
973
|
-
recordFailedBuild(acquiredBuild, typeof code === "string" ? code : void 0);
|
|
1027
|
+
recordFailedBuild(acquiredBuild, typeof code === "string" ? code : void 0, { message: error instanceof Error ? error.message : String(error) });
|
|
974
1028
|
logWriter().write(thrownRunFailureRecord(error, progress.phase()));
|
|
975
1029
|
}
|
|
976
1030
|
recordRun({
|
|
@@ -1121,7 +1175,8 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
|
|
|
1121
1175
|
phase,
|
|
1122
1176
|
enterPhase: progress.step,
|
|
1123
1177
|
enterActivity: progress.activity,
|
|
1124
|
-
selectors
|
|
1178
|
+
selectors,
|
|
1179
|
+
logWriter
|
|
1125
1180
|
});
|
|
1126
1181
|
if (!localBoot) {
|
|
1127
1182
|
progress.step("device");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-
|
|
2
|
-
import {
|
|
3
|
-
import { f as podAction, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, s as iosConfigurationSetting, t as appNameFromPath, u as isReleaseConfiguration, v as resolveRuntime } from "./support-
|
|
4
|
-
import { n as ensureWorkspaceStorageSafely } from "./native-runtime-
|
|
5
|
-
import { t as devClientScheme } from "./dev-client-
|
|
6
|
-
import {
|
|
7
|
-
import { d as replaceCollector, u as collectorEntry } from "./dependencies-
|
|
8
|
-
import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-
|
|
1
|
+
import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-Dj-WT4BP.mjs";
|
|
2
|
+
import { xn as schemesFromInfoPlist, yn as pickDevClientScheme } from "./ccache-BWTze1Ls.mjs";
|
|
3
|
+
import { f as podAction, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, s as iosConfigurationSetting, t as appNameFromPath, u as isReleaseConfiguration, v as resolveRuntime } from "./support-Be0UeVZU.mjs";
|
|
4
|
+
import { n as ensureWorkspaceStorageSafely } from "./native-runtime-DqaIBO5w.mjs";
|
|
5
|
+
import { t as devClientScheme } from "./dev-client-BMca82xo.mjs";
|
|
6
|
+
import { c as writeLastBuild, i as iosFacts, n as cacheDescription, o as lastBuildRecord } from "./ios-project-D8Jcy_br.mjs";
|
|
7
|
+
import { d as replaceCollector, u as collectorEntry } from "./dependencies-BGokZ-Ng.mjs";
|
|
8
|
+
import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-B5HlVMhQ.mjs";
|
|
9
9
|
export { appNameFromPath, buildLogFile, cacheDescription, collectorEntry, iosCommand as default, devClientScheme, deviceLabel, ensureWorkspaceStorageSafely, formatDuration, iosConfigurationSetting, iosFacts, isReleaseConfiguration, lastBuildRecord, phaseLine, pickDevClientScheme, podAction, registerIos, replaceCollector, resolveConfiguration, resolveDeviceType, resolveRuntime, runIosOperation, schemesFromInfoPlist, shortHash, shortUdid, writeLastBuild };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as getExecutor } from "./exec-
|
|
1
|
+
import { t as getExecutor } from "./exec-aULwtNly.mjs";
|
|
2
2
|
//#region src/collector/ios.ts
|
|
3
3
|
const MESSAGE_TYPE_LEVEL = {
|
|
4
4
|
Debug: "debug",
|
|
@@ -90,6 +90,12 @@ const NOISE_RULES = [
|
|
|
90
90
|
exactSubsystem: "com.apple.runtime-issues",
|
|
91
91
|
category: "CFNetwork Performance Diagnostic",
|
|
92
92
|
level: "warn"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: "swiftui-invalid-configuration",
|
|
96
|
+
exactSubsystem: "com.apple.SwiftUI",
|
|
97
|
+
category: "Invalid Configuration",
|
|
98
|
+
level: "warn"
|
|
93
99
|
}
|
|
94
100
|
];
|
|
95
101
|
function ruleMatches(rule, { subsystem, category, message }) {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { l as WorkspaceProcessCleanupError, n as isTimeoutError, o as cancellableSleep, t as getExecutor } from "./exec-
|
|
2
|
-
import { P as formatBytes, _ as loadConfig$1 } from "./config-
|
|
1
|
+
import { l as WorkspaceProcessCleanupError, n as isTimeoutError, o as cancellableSleep, t as getExecutor } from "./exec-aULwtNly.mjs";
|
|
2
|
+
import { P as formatBytes, _ as loadConfig$1 } from "./config-Cn94Jc0g.mjs";
|
|
3
3
|
import { n as stripAnsi, r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
|
|
4
|
-
import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-
|
|
5
|
-
import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-
|
|
6
|
-
import { Ct as forgetCreatedDeviceAsync, Et as recordCreatedDeviceAsync, dt as isStimOwnedSim } from "./android-
|
|
7
|
-
import { n as signedTailFor } from "./apk-signed-tail-
|
|
4
|
+
import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
|
|
5
|
+
import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-CbWo21kb.mjs";
|
|
6
|
+
import { Ct as forgetCreatedDeviceAsync, Et as recordCreatedDeviceAsync, dt as isStimOwnedSim } from "./android-DriNoAVy.mjs";
|
|
7
|
+
import { n as signedTailFor } from "./apk-signed-tail-BHQHx3Rm.mjs";
|
|
8
8
|
import { createHash } from "node:crypto";
|
|
9
9
|
import { closeSync, existsSync, lstatSync, mkdtempSync, openSync, readSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
10
10
|
import { tmpdir, totalmem } from "node:os";
|
|
@@ -621,6 +621,9 @@ async function readSpringBoardPid(udid) {
|
|
|
621
621
|
return null;
|
|
622
622
|
}
|
|
623
623
|
}
|
|
624
|
+
function springBoardRunning(launchctlList) {
|
|
625
|
+
return /^\d+[ \t]+\S+[ \t]+com\.apple\.SpringBoard$/m.test(launchctlList);
|
|
626
|
+
}
|
|
624
627
|
async function waitForSpringBoard(udid, deadline) {
|
|
625
628
|
for (;;) {
|
|
626
629
|
let output = null;
|
|
@@ -645,7 +648,10 @@ async function waitForSpringBoard(udid, deadline) {
|
|
|
645
648
|
state: "unreadable",
|
|
646
649
|
reason: `Could not read SpringBoard's startup state: ${output.trim() || "no output"}.`
|
|
647
650
|
};
|
|
648
|
-
if (Number(state[1]) > 0) return {
|
|
651
|
+
if (Number(state[1]) > 0) return {
|
|
652
|
+
state: "started",
|
|
653
|
+
pid: Number(state[1])
|
|
654
|
+
};
|
|
649
655
|
}
|
|
650
656
|
if (Date.now() >= deadline) return { state: "timed-out" };
|
|
651
657
|
await cancellableSleep(SPRINGBOARD_POLL_MS);
|
|
@@ -706,7 +712,7 @@ async function awaitBootCommand(args, attemptMs, onLine) {
|
|
|
706
712
|
const detail = lines.length ? `: ${lines.join(" | ")}` : "";
|
|
707
713
|
throw new Error(`${command} failed with exit code ${result.code ?? "unknown"}${detail}`);
|
|
708
714
|
}
|
|
709
|
-
async function bootIosSim(udid, { timeoutMs = IOS_BOOT_TIMEOUT_MS, attemptMs = BOOTSTATUS_ATTEMPT_MS, simulatorApp, env, openViewer = true, label = udid, out = () => {} } = {}) {
|
|
715
|
+
async function bootIosSim(udid, { timeoutMs = IOS_BOOT_TIMEOUT_MS, attemptMs = BOOTSTATUS_ATTEMPT_MS, simulatorApp, env, openViewer = true, label = udid, out = () => {}, onPhase } = {}) {
|
|
710
716
|
const exec = getExecutor();
|
|
711
717
|
const viewer = configuredIosSimulatorViewer(simulatorApp, env);
|
|
712
718
|
const started = Date.now();
|
|
@@ -747,6 +753,7 @@ async function bootIosSim(udid, { timeoutMs = IOS_BOOT_TIMEOUT_MS, attemptMs = B
|
|
|
747
753
|
monitor.unref();
|
|
748
754
|
try {
|
|
749
755
|
try {
|
|
756
|
+
onPhase?.({ phase: "boot_requested" });
|
|
750
757
|
await awaitBootCommand([
|
|
751
758
|
"simctl",
|
|
752
759
|
"boot",
|
|
@@ -779,15 +786,24 @@ async function bootIosSim(udid, { timeoutMs = IOS_BOOT_TIMEOUT_MS, attemptMs = B
|
|
|
779
786
|
if (state !== "Booting" && state !== "Booted" && state !== void 0) throw new Error(`Simulator ${udid} reports "${state ?? "missing"}" after ${waited}s of boot wait.`);
|
|
780
787
|
if (deadline - Date.now() <= 0) throw new Error(`Simulator ${udid} did not finish booting within ${Math.round(timeoutMs / 1e3)}s.`);
|
|
781
788
|
}
|
|
789
|
+
onPhase?.({ phase: "bootstatus_done" });
|
|
782
790
|
phase = "waiting for SpringBoard";
|
|
783
|
-
|
|
791
|
+
const springBoard = await waitForSpringBoard(udid, deadline);
|
|
792
|
+
if (springBoard.state === "timed-out") throw new Error(`Simulator ${udid} did not finish booting within ${Math.round(timeoutMs / 1e3)}s.`);
|
|
793
|
+
if (springBoard.state === "started") onPhase?.({
|
|
794
|
+
phase: "springboard_started",
|
|
795
|
+
pid: springBoard.pid
|
|
796
|
+
});
|
|
784
797
|
} catch (error) {
|
|
785
798
|
const named = memoryCulpritAdvice(await memoryCulpritsUnderAsync(sample(), exec));
|
|
786
799
|
throw new Error(`${error?.message || error} Last boot output: ${phase}. Highest observed memory pressure: ${worst ?? "unknown"}; unavailable samples: ${unknown}.${coverage()}${named ? ` ${named}` : ""} ${recovery} These observations do not establish an OOM crash.`, { cause: error });
|
|
787
800
|
} finally {
|
|
788
801
|
clearInterval(monitor);
|
|
789
802
|
}
|
|
790
|
-
if (openViewer)
|
|
803
|
+
if (openViewer) {
|
|
804
|
+
await viewer.open(udid);
|
|
805
|
+
onPhase?.({ phase: "viewer_opened" });
|
|
806
|
+
}
|
|
791
807
|
}
|
|
792
808
|
async function shutdownIosSim(udid, operation) {
|
|
793
809
|
if (!operation) {
|
|
@@ -1168,4 +1184,4 @@ function parseIosRuntimes(out) {
|
|
|
1168
1184
|
}] : []);
|
|
1169
1185
|
}
|
|
1170
1186
|
//#endregion
|
|
1171
|
-
export {
|
|
1187
|
+
export { springBoardRunning as A, reportMemoryCulprits as B, renameIosSim as C, resolveOwnedIosSim as D, resolveIosCreation as E, hostMemoryPressureAdvice as F, deviceHoldsBundle as G, memoryCulpritFindings as H, memoryCulpritsUnder as I, memoryCulpritsUnderAsync as L, waitForSpringBoard as M, configuredIosSimulatorViewer as N, sanitizeDeviceLabel as O, parseIosSimulatorApp as P, readHostMemoryPressure as R, readSpringBoardPid as S, resetIosPrivacy as T, readMemoryCulpritsAsync as U, memoryCulpritAdvice as V, deviceHoldsApk as W, ownedSimName as _, createOwnedIosSim as a, parseSimctlList as b, eraseIosSim as c, listAllIosSims as d, listAllIosSimsAsync as f, listUserApps as g, listIosRuntimesAsync as h, createIosSimSnapshot as i, uninstallIosApp as j, shutdownIosSim as k, iosRuntimeMatches as l, listIosRuntimes as m, bootIosSim as n, deleteIosSim as o, listIosDeviceTypesAsync as p, clearIosAppData as r, deleteParkedIosSim as s, IOS_BOOT_TIMEOUT_MS as t, iosSimulatorFailureAdvice as u, parkedSimName as v, resetIosKeychain as w, pickDefaultIosCreation as x, parseRuntimeVersion as y, readHostMemoryPressureAsync as z };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as getExecutor } from "./exec-
|
|
2
|
-
import {
|
|
3
|
-
import { n as TOOL_ERROR_PREFIX } from "./ios-device-
|
|
1
|
+
import { t as getExecutor } from "./exec-aULwtNly.mjs";
|
|
2
|
+
import { $t as INSTALL_ERROR, rn as appProcessFromPid } from "./ccache-BWTze1Ls.mjs";
|
|
3
|
+
import { n as TOOL_ERROR_PREFIX } from "./ios-device-CiBA-er9.mjs";
|
|
4
4
|
import { mkdtempSync, readFileSync, rmSync } from "node:fs";
|
|
5
5
|
import { tmpdir } from "node:os";
|
|
6
6
|
import { join } from "node:path";
|