stim 1.29.0 → 1.30.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-C2DKfenN.mjs → acquire-artifact-CrZ4rEbI.mjs} +1 -1
- package/dist/{act-CrTcskiE.mjs → act-BaKjDWGw.mjs} +12 -12
- package/dist/{activity-BR5oHSO5.mjs → activity-BTaUf0tc.mjs} +2 -2
- package/dist/{agent-device-usage-output-W0x4SoC7.mjs → agent-device-usage-output-DYBpO17K.mjs} +3 -3
- package/dist/{android-BPmCmyAy.mjs → android-BCYLwmH6.mjs} +5 -5
- package/dist/{android-CLU_MMnb.mjs → android-BEQUDpOg.mjs} +1 -1
- package/dist/{android-l616dRP1.mjs → android-BWqdDK6R.mjs} +36 -34
- package/dist/{android-BHKgeOuq.mjs → android-DdKG6lyD.mjs} +39 -30
- package/dist/api.mjs +21 -21
- package/dist/{apk-signed-tail-B-wKoF_8.mjs → apk-signed-tail-B8kw4a8K.mjs} +1 -1
- package/dist/{artifact-Dm9ScLrh.mjs → artifact-DTHXcmQ3.mjs} +11 -11
- package/dist/{artifact-DHuFYfhD.mjs → artifact-M6W2l-xh.mjs} +11 -11
- package/dist/{auto-placement-C8sJsyMN.mjs → auto-placement-CZaWDmcY.mjs} +8 -8
- package/dist/{browser-web-_tQTbQUs.mjs → browser-web-JQ7lFej3.mjs} +5 -5
- package/dist/{build-DtCU9Kim.mjs → build-C2ZWoCmg.mjs} +18 -18
- package/dist/{build-cache-BGwTsIEa.mjs → build-cache-DlC3owap.mjs} +1 -1
- package/dist/{build-plan-CWyjMPKo.mjs → build-plan-J3iRR3gI.mjs} +5 -5
- package/dist/{ccache-DsDkdP72.mjs → ccache-B8gY50-h.mjs} +11 -11
- package/dist/{cli-3fjOg-Oc.mjs → cli-xRPXJPtA.mjs} +17 -17
- package/dist/cli.mjs +1 -1
- package/dist/{client-BTUH8TF1.mjs → client-DrHykA24.mjs} +3 -3
- package/dist/collector-run.mjs +1 -1
- package/dist/{command-output-DjCsmzLZ.mjs → command-output-BBW8eWPL.mjs} +1 -1
- package/dist/{dependencies-CHNqX6Pr.mjs → dependencies-vUh9mp5z.mjs} +31 -30
- package/dist/{dev-client-CROrxj1x.mjs → dev-client-CASgAOu7.mjs} +2 -2
- package/dist/device-ChnO7bR9.mjs +761 -0
- package/dist/device-CsIdRXfm.mjs +175 -0
- package/dist/{device-Bmm5qjM-.mjs → device-android-CcdQqQWg.mjs} +26 -193
- package/dist/{device-capacity-B2ChA-bz.mjs → device-capacity-C5C_jOQd.mjs} +9 -9
- package/dist/device-host-worker.mjs +40 -31
- package/dist/{device-ios-CYzivd31.mjs → device-ios-DbmtPIiw.mjs} +24 -14
- package/dist/{device-lease-run-qRq_2W2V.mjs → device-lease-run-Do6zYA7y.mjs} +3 -3
- package/dist/{device-pool-CrmiE4_x.mjs → device-pool-CpoYiCGO.mjs} +2 -2
- package/dist/{device-provision-CK2XiEp1.mjs → device-provision-B5Ms94qY.mjs} +6 -6
- package/dist/{doctor-Dr3C1iXV.mjs → doctor-CJSB5q-s.mjs} +14 -14
- package/dist/{doctor-Cp4-HN1f.mjs → doctor-CLE4AZEI.mjs} +12 -12
- package/dist/{doctor-BO_kaFWX.mjs → doctor-CpfbYh3Q.mjs} +1 -1
- package/dist/doctor-fingerprint.mjs +1 -1
- package/dist/{doctor-watchman-CJr2aXXv.mjs → doctor-watchman-D1IyMle9.mjs} +2 -2
- package/dist/{eas-build-D-9HmGZS.mjs → eas-build-DIDOHw2P.mjs} +2 -2
- package/dist/{eas-fallback-Cemt2GVL.mjs → eas-fallback-DVS9oBSc.mjs} +2 -2
- package/dist/{eas-session-ledger-B0KLZx5m.mjs → eas-session-ledger-CW3l-inB.mjs} +1 -1
- package/dist/{error-diagnostics-CV_1RoEH.mjs → error-diagnostics-XJ9eWdtq.mjs} +5 -5
- package/dist/{gc-DjXwQXHK.mjs → gc-BVIcxCxE.mjs} +2 -2
- package/dist/{gc-CKHqL4aS.mjs → gc-Co7PE36D.mjs} +13 -13
- package/dist/{guide-CeRlWVsS.mjs → guide-DkepBgHT.mjs} +110 -13
- package/dist/{hosted-android-DI_vvv7U.mjs → hosted-android-Du7NxufJ.mjs} +2 -2
- package/dist/{hosted-client-CgoxdU9j.mjs → hosted-client-Cect92SZ.mjs} +2 -2
- package/dist/{hosted-logs-C-4INmkn.mjs → hosted-logs-Opcjv1Lr.mjs} +3 -3
- package/dist/{hosted-logs-sync-Bf5s02fi.mjs → hosted-logs-sync-wsI7N1Hv.mjs} +6 -10
- package/dist/{hosted-macos-Doh85YUM.mjs → hosted-macos-BP9Kucat.mjs} +4 -4
- package/dist/{hosted-native-DvZENAL-.mjs → hosted-native-DmdLSmvu.mjs} +6 -5
- package/dist/{idle-shutdown-BM37gMfU.mjs → idle-shutdown-BcMN_cLm.mjs} +4 -4
- package/dist/{ios-CNDH6fNF.mjs → ios-BFkBHuRT.mjs} +8 -8
- package/dist/{ios-UM_dManb.mjs → ios-CG0IsLtt.mjs} +24 -24
- package/dist/{ios-CoMCWfub.mjs → ios-CXnoVO_z.mjs} +2 -2
- package/dist/{ios-device-L1-pota_.mjs → ios-device-ClSfuu-_.mjs} +1 -1
- package/dist/{ios-project-DJYptOCh.mjs → ios-project-BM9TbTE7.mjs} +5 -5
- package/dist/{js-swap-BthE4kZC.mjs → js-swap-9Rx-5Nqz.mjs} +3 -3
- package/dist/{launch-D798aSm8.mjs → launch-DvJV1Mx4.mjs} +14 -14
- package/dist/{lightened-vSxkstg6.mjs → lightened-23pqe7LS.mjs} +2 -2
- package/dist/{logs-BND8MiBq.mjs → logs-DJgZlf2K.mjs} +5 -5
- package/dist/{logs-CilPftm3.mjs → logs-Pkeh3wZk.mjs} +5 -4
- package/dist/{macos-CxUi9xcE.mjs → macos-DPvPQadc.mjs} +15 -15
- package/dist/{macos-BOQrKYeJ.mjs → macos-Du07NsOB.mjs} +1 -1
- package/dist/maintenance-run.mjs +4 -4
- package/dist/{native-android-BkhrCjdX.mjs → native-android-CBOM1_gB.mjs} +12 -12
- package/dist/{native-gradle-artifact-inputs-Cw4P6Gyr.mjs → native-gradle-artifact-inputs-D_iAfPuS.mjs} +3 -3
- package/dist/{native-runtime-DyH2gkXK.mjs → native-runtime-D4cTwU0Z.mjs} +3 -3
- package/dist/{native-xcode-inputs-DV8jr3kJ.mjs → native-xcode-inputs-BF-ogSnG.mjs} +1 -1
- package/dist/{native-xcode-ios-DdpPG2iT.mjs → native-xcode-ios-DwJBfMP6.mjs} +12 -12
- package/dist/offload-worker.mjs +15 -15
- package/dist/{phone-reverses-DZRad8HT.mjs → phone-reverses-CvhhkGMH.mjs} +2 -2
- package/dist/{placement-log-CoN6xrjY.mjs → placement-log-CRR_TE1r.mjs} +1 -1
- package/dist/{plan-placement-7sHuqR-r.mjs → plan-placement-CdLc-pTb.mjs} +4 -4
- package/dist/{ports-VQSAPZhl.mjs → ports-g4N_cfyg.mjs} +1 -1
- package/dist/{prebuild-Bqp0LFGN.mjs → prebuild-DBJMhwSS.mjs} +6 -6
- package/dist/{project-D1n0K4yg.mjs → project-DPQjnpcI.mjs} +11 -11
- package/dist/{react-native-android-FQ-yX3Mv.mjs → react-native-android-idMWOwkX.mjs} +21 -21
- package/dist/{react-native-build-D58bIqV9.mjs → react-native-build-BSoh4HkH.mjs} +5 -5
- package/dist/{react-native-doctor-AkUH2aca.mjs → react-native-doctor-CYibY8-4.mjs} +8 -7
- package/dist/{react-native-ios-Dmsv8j7T.mjs → react-native-ios-13KIIOOy.mjs} +15 -14
- package/dist/{reload-CDKEzzaf.mjs → reload-B9DZOjcV.mjs} +1 -1
- package/dist/{reload-BV0nD-k9.mjs → reload-BUQI3dSu.mjs} +8 -8
- package/dist/{remote-C8xyslUa.mjs → remote-C-RGHhAP.mjs} +6 -6
- package/dist/{result-9fqcJ90W.mjs → result-W4HCum4A.mjs} +11 -11
- package/dist/{selection-D1ZDzHFX.mjs → selection-PCMT97XD.mjs} +1 -1
- package/dist/{server-command-RlS-Kl4a.mjs → server-command-oqi3TDy7.mjs} +2 -2
- package/dist/server-expo-BUFAq2In.mjs +2 -0
- package/dist/{server-expo-bB1VV2k-.mjs → server-expo-C1K07shx.mjs} +1 -1
- package/dist/{settings-BcVCcAT5.mjs → settings-CKlMOmhj.mjs} +2 -2
- package/dist/{settings-payload-_aatELz2.mjs → settings-payload-CE-NZ6Lq.mjs} +1 -1
- package/dist/{settings-write-CkTVGQ4O.mjs → settings-write-D7Xwa_-M.mjs} +2 -2
- package/dist/{slot-launch-Dbgfh8gc.mjs → slot-launch-CeIK1iUI.mjs} +4 -4
- package/dist/{stage-BuHuRj1y.mjs → stage-Blqe6bWb.mjs} +1 -1
- package/dist/{start-Dlv4XXTP.mjs → start-B7J5a9nS.mjs} +5 -5
- package/dist/{start-Cr-c3Xhq.mjs → start-CvP2pJjc.mjs} +1 -1
- package/dist/{stats-D5c-uIBp.mjs → stats-Uo7l8OAk.mjs} +3 -3
- package/dist/{status-DbQv--Yb.mjs → status-CqJI1TgG.mjs} +1 -1
- package/dist/{status-D6PBK6_-.mjs → status-_rWXFSO7.mjs} +15 -15
- package/dist/{status-watch-okrpea4i.mjs → status-watch-CnSyXUmj.mjs} +3 -3
- package/dist/status-worker.mjs +1 -1
- package/dist/{stop-CHtAiv79.mjs → stop-Bogo9oO2.mjs} +2 -2
- package/dist/{stop-uRQ-zYcl.mjs → stop-CMVfaA-6.mjs} +2 -2
- package/dist/{stop-p9uSKuGE.mjs → stop-CnF9ixYe.mjs} +10 -10
- package/dist/supervisor-run.mjs +9 -9
- package/dist/{support-PFyTkrnr.mjs → support-BGqpYMV8.mjs} +15 -11
- package/dist/{support-BMpQIug0.mjs → support-DUevTPur.mjs} +7 -7
- package/dist/{swiftpm-artifact-inputs-Cddq6jN2.mjs → swiftpm-artifact-inputs-BcJk6-3u.mjs} +1 -1
- package/dist/{swiftpm-macos-BSj9iZlI.mjs → swiftpm-macos-DBrmoocG.mjs} +4 -4
- package/dist/toolchain-Cw9VVHOY.mjs +2 -0
- package/dist/{toolchain-CLGnEUgT.mjs → toolchain-DLdoyxIt.mjs} +18 -10
- package/dist/{warm-progress--KkkBBaq.mjs → warm-progress-DQ2wQZKp.mjs} +1 -1
- package/dist/web-CI_qCRPw.mjs +2 -0
- package/dist/{web-xlVssjQf.mjs → web-g9U7L1sR.mjs} +3 -3
- package/dist/web-run.mjs +2 -2
- package/dist/{workspaces-CvSYD_78.mjs → workspaces-7_RWoi6c.mjs} +4 -4
- package/dist/{worktree-DTOIohFe.mjs → worktree-DEet9H3p.mjs} +1 -1
- package/dist/{worktree-CaQBf6kh.mjs → worktree-qKJ3x07S.mjs} +13 -13
- package/package.json +7 -7
- package/dist/device-BvpasThQ.mjs +0 -297
- package/dist/server-expo-BVV9qy31.mjs +0 -2
- package/dist/toolchain-B-mzR9Rh.mjs +0 -2
- package/dist/web-BxSo493O.mjs +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as ANDROID_AVD_CONFIG_HELP } from "./settings-D776ygML.mjs";
|
|
2
|
-
import { i as findProjectRoot$1 } from "./project-
|
|
3
|
-
import { h as RECENT_LAUNCH_MS } from "./eas-session-ledger-
|
|
4
|
-
import { o as guideStatus, t as WATCHMAN_NESTED_WORKTREES } from "./doctor-watchman-
|
|
5
|
-
import "./status-watch-
|
|
2
|
+
import { i as findProjectRoot$1 } from "./project-DPQjnpcI.mjs";
|
|
3
|
+
import { h as RECENT_LAUNCH_MS } from "./eas-session-ledger-CW3l-inB.mjs";
|
|
4
|
+
import { o as guideStatus, t as WATCHMAN_NESTED_WORKTREES } from "./doctor-watchman-D1IyMle9.mjs";
|
|
5
|
+
import "./status-watch-CnSyXUmj.mjs";
|
|
6
6
|
import { SETTINGS, SETTINGS_SCHEMA_URL, TUTORIAL_VERSION } from "@stim-cli/core/state";
|
|
7
7
|
import chalk from "chalk";
|
|
8
8
|
//#region src/guide/agent.ts
|
|
@@ -418,6 +418,7 @@ FULL TOPIC LIST
|
|
|
418
418
|
stim guide lifecycle budget # disk and memory budgets, automatic reclaim
|
|
419
419
|
stim guide lifecycle options # every flag, Android variants, --device-type, --system-image, --device-profile
|
|
420
420
|
stim guide lifecycle devices # ios --device and android --device on a physical phone
|
|
421
|
+
stim guide lifecycle tools # device location|permission|push|network on the owned simulator or emulator
|
|
421
422
|
stim guide lifecycle release # Release configurations and ...Release variants
|
|
422
423
|
stim guide api # typed run, stop, diagnostics and cancellation from the main package
|
|
423
424
|
stim guide facts # the --json payloads
|
|
@@ -703,7 +704,7 @@ Do not point independent Stim homes at a concurrently writable shared cache.
|
|
|
703
704
|
//#endregion
|
|
704
705
|
//#region src/guide/facts.ts
|
|
705
706
|
const facts = {
|
|
706
|
-
summary: "The --json payloads: `start`, `ios`, `android`, `web`, `ios|android --plan`, `reload`, `stop`, `status`, `doctor`, `device lock`/`unlock`, `gc`, and the error contract",
|
|
707
|
+
summary: "The --json payloads: `start`, `ios`, `android`, `web`, `ios|android --plan`, `reload`, `stop`, `status`, `doctor`, `device lock`/`unlock`, `device location|permission|push|network`, `gc`, and the error contract",
|
|
707
708
|
preamble: () => `SLOTS
|
|
708
709
|
Named ios/android runs add slot to their JSON facts. Default-run fields remain
|
|
709
710
|
compatible. status adds a slots array per environment with each named slot's
|
|
@@ -713,7 +714,7 @@ Named collector, lease-holder, and launch keys use platform:slot internally.
|
|
|
713
714
|
FACTS CONTRACT
|
|
714
715
|
|
|
715
716
|
\`start\`, \`ios\`, \`android\`, \`web\`, \`reload\`, \`stop\`, \`status\`, \`stats\`, \`doctor\`,
|
|
716
|
-
\`gc\`,
|
|
717
|
+
\`gc\`, \`device lock\`/\`device unlock\`, and \`device location|permission|push|network\` each print exactly ONE line of JSON on
|
|
717
718
|
stdout for \`--json\`. Every other line goes to stderr, so it is always safe
|
|
718
719
|
to pipe. \`logs --json\` is the one exception: it is NDJSON, one record per
|
|
719
720
|
line by design (see \`guide logs\`), not this single-payload contract.
|
|
@@ -4643,7 +4644,11 @@ so a Debug run on one is wired to a LAN origin instead of localhost.`,
|
|
|
4643
4644
|
then until SpringBoard has finished starting, which \`simctl launch\` needs.
|
|
4644
4645
|
Booted alone does not end that wait. The failure names the udid and the wait.
|
|
4645
4646
|
After boot, a process-spawn probe must finish within 30 seconds before
|
|
4646
|
-
installation.
|
|
4647
|
+
installation. A probe that times out while the simulator still reports Booted
|
|
4648
|
+
is retried for about three minutes, since a loaded host can leave a booted
|
|
4649
|
+
simulator unresponsive for a while; a timeout on a simulator that no longer
|
|
4650
|
+
reports Booted, and any other probe failure, refuse at once. If it
|
|
4651
|
+
fails, the refusal includes observed host memory pressure
|
|
4647
4652
|
when available. Free memory before retrying under pressure; see
|
|
4648
4653
|
\`stim guide lifecycle simslim\`. Booted alone does not prove readiness.
|
|
4649
4654
|
The same probe lists the simulator's launchd jobs and requires a running
|
|
@@ -4715,6 +4720,35 @@ so a Debug run on one is wired to a LAN origin instead of localhost.`,
|
|
|
4715
4720
|
no token left in its \`state.json\` (its workspace directory was recreated).
|
|
4716
4721
|
The remedy for that last one is \`stim device unlock\`, which releases by
|
|
4717
4722
|
holder rather than by token.`
|
|
4723
|
+
},
|
|
4724
|
+
STIM_DEVICE_TOOL_TARGET: {
|
|
4725
|
+
summary: "a device tool found no owned, running simulator or emulator in that slot to act on",
|
|
4726
|
+
body: () => `STIM_DEVICE_TOOL_TARGET
|
|
4727
|
+
\`stim device location|permission|push|network\` act only on this workspace's
|
|
4728
|
+
own local simulator or emulator in the slot. The message says which check
|
|
4729
|
+
failed: the slot's device is hosted on another Mac, the workspace runs an
|
|
4730
|
+
EAS Simulator session, the slot has no owned device (a physical device
|
|
4731
|
+
reached with \`--device\` is never one), the recorded simulator is gone or not
|
|
4732
|
+
owned by this Stim home, or it is not booted or running. Permission and push
|
|
4733
|
+
also refuse when no app is recorded for the device. Run the platform command
|
|
4734
|
+
the remedy names (\`stim ios\` or \`stim android\`, with \`--slot\` for a named
|
|
4735
|
+
slot) and retry. No tool runs before this refusal.`
|
|
4736
|
+
},
|
|
4737
|
+
STIM_DEVICE_TOOL_UNSUPPORTED: {
|
|
4738
|
+
summary: "that device tool has no equivalent on that platform",
|
|
4739
|
+
body: () => `STIM_DEVICE_TOOL_UNSUPPORTED
|
|
4740
|
+
The platform lacks the action: Android cannot clear a simulated location
|
|
4741
|
+
(\`adb emu geo fix\` only sets one), iOS has no network switch, and Android
|
|
4742
|
+
has no simulated push. The remedy names the nearest thing.`
|
|
4743
|
+
},
|
|
4744
|
+
STIM_DEVICE_TOOL_FAILED: {
|
|
4745
|
+
summary: "simctl or adb failed, or the device did not report the change afterwards",
|
|
4746
|
+
body: () => `STIM_DEVICE_TOOL_FAILED
|
|
4747
|
+
The tool call exited non-zero or timed out, with its output in the message, or
|
|
4748
|
+
the read-back after an Android permission or network change did not show the
|
|
4749
|
+
requested state. For a permission, the app must declare the permission in its
|
|
4750
|
+
manifest; when it declares none of the service's permissions the call refuses
|
|
4751
|
+
with this code. Check the device with \`stim status\` and retry.`
|
|
4718
4752
|
},
|
|
4719
4753
|
STIM_DEVICE_WIRELESS_FAILED: {
|
|
4720
4754
|
summary: "an iPhone paired over Wi-Fi timed out or dropped during install or launch; use the cable",
|
|
@@ -5734,8 +5768,11 @@ SpringBoard is back; an already slim simulator is not touched. Turn sound on
|
|
|
5734
5768
|
for one device with Sound (iOS) or Media sound (Android) in its Stim Desktop
|
|
5735
5769
|
options; the choice lasts until that device next boots. Android 14 and older images have no shell command that can
|
|
5736
5770
|
set media volume, so startup warns, as it does whenever a mute is not
|
|
5737
|
-
confirmed.
|
|
5738
|
-
|
|
5771
|
+
confirmed. A hosted simulator or emulator on a named Mac is muted the same way
|
|
5772
|
+
after the host boots or adopts it (best effort; a failed mute is not reported
|
|
5773
|
+
to the client), and Stim Desktop's Sound options do not reach
|
|
5774
|
+
it. Host volume, Android alarm and ringtone volumes and physical devices are
|
|
5775
|
+
unchanged.
|
|
5739
5776
|
|
|
5740
5777
|
Repeat step 3 whenever a NATIVE input changes. A JS-only edit needs nothing --
|
|
5741
5778
|
that is what Fast Refresh over the running dev server is for. \`stim reload\` is
|
|
@@ -8453,6 +8490,60 @@ THE POOL: WHICH DEVICE AN ID-LESS \`--device\` PICKS
|
|
|
8453
8490
|
The chosen device is on the phase line and in \`--json\` (\`udid\` or
|
|
8454
8491
|
\`serial\`, plus \`deviceName\`), so an agent can hand the same id to its
|
|
8455
8492
|
device tool.`
|
|
8493
|
+
},
|
|
8494
|
+
tools: {
|
|
8495
|
+
summary: "device location, permission, push and network: change the owned simulator or emulator and read it back",
|
|
8496
|
+
body: () => ` \`stim device location|permission|push|network\` change the workspace's own
|
|
8497
|
+
simulator or emulator. Each takes the platform first, like \`device lock\`,
|
|
8498
|
+
and \`--slot <name>\` and \`--json\`:
|
|
8499
|
+
|
|
8500
|
+
stim device location <ios|android> --set <lat,lng> # --set 45.5,-73.6
|
|
8501
|
+
stim device location ios --clear
|
|
8502
|
+
stim device permission <ios|android> <grant|revoke|reset> <service>
|
|
8503
|
+
stim device push ios --payload '<json with an "aps" key>'
|
|
8504
|
+
stim device network android <on|off>
|
|
8505
|
+
|
|
8506
|
+
THE TARGET is the slot's owned, booted simulator or emulator, resolved the
|
|
8507
|
+
way \`reload\` resolves it: the project record says \`owned\`, the ledger
|
|
8508
|
+
agrees, and the serial belongs to the recorded AVD. A hosted device, an EAS
|
|
8509
|
+
Simulator session, a physical device (\`--device\`), a device Stim does not
|
|
8510
|
+
own, and a device that is not running refuse with STIM_DEVICE_TOOL_TARGET and
|
|
8511
|
+
run no tool. An action the platform lacks (Android \`--clear\`, iOS network,
|
|
8512
|
+
Android push) refuses with STIM_DEVICE_TOOL_UNSUPPORTED. A tool call that
|
|
8513
|
+
fails, or a device that disagrees with the change afterwards, is
|
|
8514
|
+
STIM_DEVICE_TOOL_FAILED. A bad value is STIM_BAD_ARG.
|
|
8515
|
+
|
|
8516
|
+
\`--set\` takes latitude and longitude as ONE value so a negative latitude is
|
|
8517
|
+
not read as a flag. Android's \`adb emu geo fix\` takes longitude first; Stim
|
|
8518
|
+
swaps them. The emulator has no way to clear a location.
|
|
8519
|
+
|
|
8520
|
+
\`permission\` acts on the app of the slot's last launch, else the project's
|
|
8521
|
+
bundle id or Android package. iOS services are simctl's own: all, calendar,
|
|
8522
|
+
contacts, contacts-limited, location, location-always, media-library,
|
|
8523
|
+
microphone, motion, photos, photos-add, reminders, siri. iOS notifications
|
|
8524
|
+
and camera are not simctl services. Android services are calendar, camera,
|
|
8525
|
+
contacts, location, microphone, motion, notifications, photos; one service is
|
|
8526
|
+
one or two \`pm\` permissions. A permission the app did not declare is
|
|
8527
|
+
listed in \`skipped\` and the call succeeds when the app declares at least one;
|
|
8528
|
+
an app that declares none is STIM_DEVICE_TOOL_FAILED.
|
|
8529
|
+
\`push\` needs the app to hold notification permission on the simulator, which
|
|
8530
|
+
\`simctl privacy\` cannot grant: without it simctl answers "Source is not
|
|
8531
|
+
authorized" and the call is STIM_DEVICE_TOOL_FAILED; open the app and accept
|
|
8532
|
+
its prompt.
|
|
8533
|
+
Android \`reset\` revokes the permission and clears its user-set flags so
|
|
8534
|
+
the app asks again. A grant needs one of the
|
|
8535
|
+
service's permissions to read back granted; a revoke or reset needs all of
|
|
8536
|
+
them not granted, and a reset also no USER_SET or USER_FIXED flag. Changing a
|
|
8537
|
+
permission can terminate the running app on both platforms.
|
|
8538
|
+
|
|
8539
|
+
\`--json\` prints ONE line: { platform, slot, deviceId, deviceName, tool,
|
|
8540
|
+
action, ..., readBack }. \`readBack\` is read from the device after the change:
|
|
8541
|
+
Android permissions are { permissions: [{ name, granted }] } from
|
|
8542
|
+
\`dumpsys package\`, and Android network is { wifi, data } from \`settings get
|
|
8543
|
+
global wifi_on|mobile_data\`. \`readBack\` is null where the platform has no
|
|
8544
|
+
read: iOS location, permission and push, and Android location. Then the exit
|
|
8545
|
+
status of simctl or adb is the only confirmation; Stim never echoes the
|
|
8546
|
+
request as a read-back.`
|
|
8456
8547
|
},
|
|
8457
8548
|
release: {
|
|
8458
8549
|
summary: "Release configurations and ...Release variants: Metro skipped, process-proven launch, the JS swap",
|
|
@@ -10130,7 +10221,7 @@ KEYS STIM READS
|
|
|
10130
10221
|
restores stock services when Stim applied the profile. Absolute paths, root or
|
|
10131
10222
|
symlink escapes, and missing files are refused before
|
|
10132
10223
|
simulator creation. Remote and unowned simulators are
|
|
10133
|
-
never
|
|
10224
|
+
never slimmed.
|
|
10134
10225
|
ios.signingIdentity e.g. "Apple Development: Jane (TEAMID5678)" -- the
|
|
10135
10226
|
keychain identity to re-seal a \`--device\` build with,
|
|
10136
10227
|
overriding the one Stim derives from the artifact's own
|
|
@@ -10931,6 +11022,13 @@ answer, an incompatible Stim build, CPU, Xcode, simulator SDK or CocoaPods, no
|
|
|
10931
11022
|
Bundler for an app whose Gemfile.lock pins CocoaPods, no iPhone simulator on
|
|
10932
11023
|
the runtime \`stim ios\` builds for here, low disk, or busy. With Package.swift
|
|
10933
11024
|
and no platform selection on a Mac, it also checks the macOS Xcode and SDK.
|
|
11025
|
+
A client with no Xcode and no simulator SDK, such as Linux or Windows, has no
|
|
11026
|
+
Xcode to match: the Mac's own Xcode, simulator SDK and CocoaPods are the
|
|
11027
|
+
build's toolchain, the client leaves pod install to it, and \`stim ios --remote
|
|
11028
|
+
<mac> --remote-build <mac>\` runs the app on that Mac's hosted simulator. If
|
|
11029
|
+
that pod install changes Podfile.lock or the Xcode project, the build fails
|
|
11030
|
+
with fingerprint-mismatch; run pod install once on a Mac and commit the
|
|
11031
|
+
result. A client with an Xcode still needs the same one.
|
|
10934
11032
|
Two machines build for each other when their Stim releases share a build
|
|
10935
11033
|
compatibility version, which changes only when what a worker builds, how it
|
|
10936
11034
|
builds, or the build messages change; their Stim builds can differ. A
|
|
@@ -12186,11 +12284,10 @@ script such as mini-desktop.sh use these instead:
|
|
|
12186
12284
|
quit stim stop (verified stop; the host frees the slot
|
|
12187
12285
|
and removes the app's defaults)
|
|
12188
12286
|
clean stim worktree remove
|
|
12189
|
-
3 concurrent slots concurrency.maxDevices on the host
|
|
12287
|
+
3 concurrent slots concurrency.maxDevices on the host, counted apart
|
|
12288
|
+
from simulators and emulators; one bundle id
|
|
12190
12289
|
slot per session
|
|
12191
12290
|
|
|
12192
|
-
The host's own owned devices count toward concurrency.maxDevices.
|
|
12193
|
-
|
|
12194
12291
|
The agent-device rows work once the host's agent field names agent-device.
|
|
12195
12292
|
|
|
12196
12293
|
On macOS 27, agent-device screenshot of a hosted app can return an image of the
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { c as throwIfCancelled } from "./exec-aULwtNly.mjs";
|
|
2
|
-
import { c as call, l as connectHost } from "./hosted-client-
|
|
2
|
+
import { c as call, l as connectHost } from "./hosted-client-Cect92SZ.mjs";
|
|
3
3
|
import { i as requestHostedMetro } from "./metro-request-BtF7ox53.mjs";
|
|
4
|
-
import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-
|
|
4
|
+
import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-DmdLSmvu.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
1
|
import { c as throwIfCancelled, o as cancellableSleep } from "./exec-aULwtNly.mjs";
|
|
2
2
|
import { Y as diagnoseConnectFailure, st as resolveEndpoint } from "./config-AbUjIBOQ.mjs";
|
|
3
|
-
import { t as BuildConnection } from "./client-
|
|
4
|
-
import { g as configuredMachines } from "./selection-
|
|
3
|
+
import { t as BuildConnection } from "./client-DrHykA24.mjs";
|
|
4
|
+
import { g as configuredMachines } from "./selection-PCMT97XD.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";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as getExecutor } from "./exec-aULwtNly.mjs";
|
|
2
2
|
import { E as workspaceDir, k as workspaceLogsDir$1 } from "./workspace-state-DGwkPXwq.mjs";
|
|
3
3
|
import { B as deviceSlotFileKey, it as parseMachine$1, q as validateDeviceSlot } from "./config-AbUjIBOQ.mjs";
|
|
4
|
-
import { l as phaseLine } from "./command-output-
|
|
4
|
+
import { l as phaseLine } from "./command-output-BBW8eWPL.mjs";
|
|
5
5
|
import { n as macosDir } from "./state-C2AUjjhg.mjs";
|
|
6
|
-
import { n as androidLogGroups, r as isAndroidCrashText } from "./android-
|
|
6
|
+
import { n as androidLogGroups, r as isAndroidCrashText } from "./android-BEQUDpOg.mjs";
|
|
7
7
|
import { c as readNdjsonGenerations$1, i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
|
|
8
|
-
import { c as call } from "./hosted-client-
|
|
8
|
+
import { c as call } from "./hosted-client-Cect92SZ.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-
|
|
1
|
+
import { n as pullHostedNativeLogs, r as readHostedNativeLogs, t as pullHostedMacosLogs } from "./hosted-logs-Opcjv1Lr.mjs";
|
|
2
|
+
import { l as phaseLine } from "./command-output-BBW8eWPL.mjs";
|
|
3
|
+
import { l as connectHost } from "./hosted-client-Cect92SZ.mjs";
|
|
4
4
|
import { n as readHostedIos, t as readHostedAndroid } from "./ios-state-Ce_dystM.mjs";
|
|
5
|
-
import "./hosted-macos-
|
|
5
|
+
import "./hosted-macos-BP9Kucat.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";
|
|
@@ -108,14 +108,10 @@ function followHostedLaunchLogs(root, slot, platform, since, context) {
|
|
|
108
108
|
stop
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
|
-
async function syncHostedLogs(root, context) {
|
|
111
|
+
async function syncHostedLogs(root, context, includeSlots = true) {
|
|
112
112
|
const macos = readMacosRecord(root)?.host;
|
|
113
113
|
const warnings = /* @__PURE__ */ new Set();
|
|
114
|
-
return (await Promise.all([
|
|
115
|
-
...macos ? [syncHostedMacosLogs(root, macos, void 0, warnings, "ios", context)] : [],
|
|
116
|
-
...Object.entries(readHostedIos(root)).map(([slot, placement]) => syncHostedMacosLogs(root, placement, slot, warnings, "ios", context)),
|
|
117
|
-
...Object.entries(readHostedAndroid(root)).map(([slot, placement]) => syncHostedMacosLogs(root, placement, slot, warnings, "android", context))
|
|
118
|
-
])).every(Boolean);
|
|
114
|
+
return (await Promise.all([...macos ? [syncHostedMacosLogs(root, macos, void 0, warnings, "ios", context)] : [], ...includeSlots ? [...Object.entries(readHostedIos(root)).map(([slot, placement]) => syncHostedMacosLogs(root, placement, slot, warnings, "ios", context)), ...Object.entries(readHostedAndroid(root)).map(([slot, placement]) => syncHostedMacosLogs(root, placement, slot, warnings, "android", context))] : []])).every(Boolean);
|
|
119
115
|
}
|
|
120
116
|
function followHostedLogs(root, failing, context) {
|
|
121
117
|
const stops = /* @__PURE__ */ new Map();
|
|
@@ -1,9 +1,9 @@
|
|
|
1
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-
|
|
3
|
-
import { l as phaseLine } from "./command-output-
|
|
2
|
+
import { a as agentAccess, i as closeAgentConnection, o as removeAgentAccess, t as pullHostedMacosLogs } from "./hosted-logs-Opcjv1Lr.mjs";
|
|
3
|
+
import { l as phaseLine } from "./command-output-BBW8eWPL.mjs";
|
|
4
4
|
import { n as macosDir } from "./state-C2AUjjhg.mjs";
|
|
5
|
-
import {
|
|
6
|
-
import { _ as stoppedSession, a as SESSION_TIMEOUT_MS, c as call, f as hostedSession, g as sha256, h as settle, i as RESERVE_TIMEOUT_MS, l as connectHost, o as attach, r as PREPARE_TIMEOUT_MS, s as bundleManifest, t as INSTALL_TIMEOUT_MS, u as heldNoLonger, v as unknownSession, y as upload } from "./hosted-client-
|
|
5
|
+
import { st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
|
|
6
|
+
import { _ as stoppedSession, a as SESSION_TIMEOUT_MS, c as call, f as hostedSession, g as sha256, h as settle, i as RESERVE_TIMEOUT_MS, l as connectHost, o as attach, r as PREPARE_TIMEOUT_MS, s as bundleManifest, t as INSTALL_TIMEOUT_MS, u as heldNoLonger, v as unknownSession, y as upload } from "./hosted-client-Cect92SZ.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,15 +1,15 @@
|
|
|
1
1
|
import { o as cancellableSleep, x as withDrainingCancellation } from "./exec-aULwtNly.mjs";
|
|
2
2
|
import { E as workspaceDir, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-DGwkPXwq.mjs";
|
|
3
|
-
import { a as agentAccess, i as closeAgentConnection, n as pullHostedNativeLogs, o as removeAgentAccess } from "./hosted-logs-
|
|
4
|
-
import {
|
|
5
|
-
import { _ as stoppedSession, a as SESSION_TIMEOUT_MS, c as call, f as hostedSession, g as sha256, h as settle, i as RESERVE_TIMEOUT_MS, l as connectHost, m as requireHostedAppMode, n as OFFER_TIMEOUT_MS, o as attach, r as PREPARE_TIMEOUT_MS, s as bundleManifest, t as INSTALL_TIMEOUT_MS, u as heldNoLonger, v as unknownSession, y as upload } from "./hosted-client-
|
|
3
|
+
import { a as agentAccess, i as closeAgentConnection, n as pullHostedNativeLogs, o as removeAgentAccess } from "./hosted-logs-Opcjv1Lr.mjs";
|
|
4
|
+
import { st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
|
|
5
|
+
import { _ as stoppedSession, a as SESSION_TIMEOUT_MS, c as call, f as hostedSession, g as sha256, h as settle, i as RESERVE_TIMEOUT_MS, l as connectHost, m as requireHostedAppMode, n as OFFER_TIMEOUT_MS, o as attach, r as PREPARE_TIMEOUT_MS, s as bundleManifest, t as INSTALL_TIMEOUT_MS, u as heldNoLonger, v as unknownSession, y as upload } from "./hosted-client-Cect92SZ.mjs";
|
|
6
6
|
import { a as requireHostedMetro, i as requestHostedMetro, n as closeHostedMetro } from "./metro-request-BtF7ox53.mjs";
|
|
7
7
|
import { s as writeHostedNative } from "./ios-state-Ce_dystM.mjs";
|
|
8
8
|
import { randomUUID } from "node:crypto";
|
|
9
9
|
import { readFileSync } from "node:fs";
|
|
10
10
|
import { join } from "node:path";
|
|
11
11
|
import { ambientContext, ambientWrite } from "@stim-cli/core";
|
|
12
|
-
import { hostedNativeRecords, isJsonObject, parseHostedAndroidDevice, parseHostedChoice, parseHostedDevice, parseHostedNativeOffer, parseHostedNativePlacement, requireAutomaticMachine, unreadableHostedNative } from "@stim-cli/core/state";
|
|
12
|
+
import { hostedMemoryRefusal, hostedNativeRecords, isJsonObject, parseHostedAndroidDevice, parseHostedChoice, parseHostedDevice, parseHostedNativeOffer, parseHostedNativePlacement, requireAutomaticMachine, unreadableHostedNative } from "@stim-cli/core/state";
|
|
13
13
|
//#region src/device-host/hosted-native.ts
|
|
14
14
|
function hostingRefusal(machine, error) {
|
|
15
15
|
return Object.assign(/* @__PURE__ */ new Error(`${machine}: ${error instanceof Error ? error.message : String(error)}`), {
|
|
@@ -58,7 +58,8 @@ async function prepareHostedNative(machine, selectors, recorded, platform = "ios
|
|
|
58
58
|
if (typeof offer.declined === "string") throw new Error(offer.declined);
|
|
59
59
|
if (!choice) throw new Error(platform === "ios" ? "No compatible installed iOS simulator runtime was offered." : "No compatible installed Android emulator image was offered.");
|
|
60
60
|
if (!isJsonObject(offer.capacity) || offer.capacity.available === 0) throw new Error("No hosted device capacity is available.");
|
|
61
|
-
|
|
61
|
+
const memoryRefusal = hostedMemoryRefusal(isJsonObject(offer.resources) ? offer.resources.memoryPressure : null);
|
|
62
|
+
if (memoryRefusal) throw new Error(memoryRefusal);
|
|
62
63
|
return {
|
|
63
64
|
host,
|
|
64
65
|
choice,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { k as workspaceLogsDir$1, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-DGwkPXwq.mjs";
|
|
2
2
|
import { V as deviceSlotKey, _ as loadConfig$1 } from "./config-AbUjIBOQ.mjs";
|
|
3
|
-
import { o as formatLongDuration } from "./command-output-
|
|
3
|
+
import { o as formatLongDuration } from "./command-output-BBW8eWPL.mjs";
|
|
4
4
|
import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
|
|
5
|
-
import { B as workspaceBuildInProgress, P as collectOwnedDeviceActivity, ht as teardownOwnedIosSim, pt as teardownOwnedAvd } from "./workspaces-
|
|
5
|
+
import { B as workspaceBuildInProgress, P as collectOwnedDeviceActivity, ht as teardownOwnedIosSim, pt as teardownOwnedAvd } from "./workspaces-7_RWoi6c.mjs";
|
|
6
6
|
import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
|
|
7
|
-
import { _ as workspaceDeviceLastUseAt } from "./activity-
|
|
8
|
-
import { d as listAllIosSims } from "./ios-
|
|
7
|
+
import { _ as workspaceDeviceLastUseAt } from "./activity-BTaUf0tc.mjs";
|
|
8
|
+
import { d as listAllIosSims } from "./ios-CXnoVO_z.mjs";
|
|
9
9
|
import { join } from "node:path";
|
|
10
10
|
import { LOG_ROTATE_BYTES } from "@stim-cli/core";
|
|
11
11
|
import { DEVICE_IDLE_SHUTDOWN_KEY, DEVICE_RECLAIM_REASON, readDeviceIdleShutdowns } from "@stim-cli/core/state";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-
|
|
2
|
-
import { xn as schemesFromInfoPlist, yn as pickDevClientScheme } from "./ccache-
|
|
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 { c as writeLastBuild, i as iosFacts, n as cacheDescription, o as lastBuildRecord } from "./ios-project-
|
|
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-BBW8eWPL.mjs";
|
|
2
|
+
import { xn as schemesFromInfoPlist, yn as pickDevClientScheme } from "./ccache-B8gY50-h.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-DUevTPur.mjs";
|
|
4
|
+
import { n as ensureWorkspaceStorageSafely } from "./native-runtime-D4cTwU0Z.mjs";
|
|
5
|
+
import { t as devClientScheme } from "./dev-client-CASgAOu7.mjs";
|
|
6
|
+
import { c as writeLastBuild, i as iosFacts, n as cacheDescription, o as lastBuildRecord } from "./ios-project-BM9TbTE7.mjs";
|
|
7
|
+
import { d as replaceCollector, u as collectorEntry } from "./dependencies-vUh9mp5z.mjs";
|
|
8
|
+
import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-CG0IsLtt.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,33 +1,33 @@
|
|
|
1
1
|
import { a as recordWorkspaceUseAsync, k as workspaceLogsDir$1 } from "./workspace-state-DGwkPXwq.mjs";
|
|
2
2
|
import { B as deviceSlotFileKey, W as parseDeviceSlotOption, q as validateDeviceSlot } from "./config-AbUjIBOQ.mjs";
|
|
3
|
-
import { _ as stepTimer, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-
|
|
3
|
+
import { _ as stepTimer, g as stepClock, i as formatDuration, l as phaseLine } from "./command-output-BBW8eWPL.mjs";
|
|
4
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-D776ygML.mjs";
|
|
5
|
-
import { t as NO_PROJECT_REFUSAL } from "./project-
|
|
6
|
-
import { ft as POOL_SETTING_REMEDY, vt as parkedMaxSetting } from "./android-
|
|
7
|
-
import { En as runProcessOperation, Et as binOnPath, Qt as DEFAULT_METRO_PORT, qn as ownedSessionName, wn as exitAfterFlush } from "./ccache-
|
|
8
|
-
import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, Z as runFailureRecord, et as thrownRunFailureRecord, lt as statsProjectKey$1, rt as createRunRecorder } from "./workspaces-
|
|
9
|
-
import {
|
|
10
|
-
import { i as createIosSimSnapshot } from "./ios-
|
|
5
|
+
import { t as NO_PROJECT_REFUSAL } from "./project-DPQjnpcI.mjs";
|
|
6
|
+
import { ft as POOL_SETTING_REMEDY, vt as parkedMaxSetting } from "./android-DdKG6lyD.mjs";
|
|
7
|
+
import { En as runProcessOperation, Et as binOnPath, Qt as DEFAULT_METRO_PORT, qn as ownedSessionName, wn as exitAfterFlush } from "./ccache-B8gY50-h.mjs";
|
|
8
|
+
import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, Z as runFailureRecord, et as thrownRunFailureRecord, lt as statsProjectKey$1, rt as createRunRecorder } from "./workspaces-7_RWoi6c.mjs";
|
|
9
|
+
import { $ as cancelledFailure, A as COMPILATION_CACHE_NOT_RUN, ct as withNativeBuildRun, ot as runCancellation, st as runCancellationSignal } from "./toolchain-DLdoyxIt.mjs";
|
|
10
|
+
import { i as createIosSimSnapshot } from "./ios-CXnoVO_z.mjs";
|
|
11
11
|
import { d as optimizationBuildProfile, l as artifactCachePolicy } from "./errors-DHm_U5gv.mjs";
|
|
12
|
-
import { S as setRemoteLogSink, d as simulatorRuntime } from "./client-
|
|
13
|
-
import { s as parseBuildMachineOption } from "./selection-
|
|
12
|
+
import { S as setRemoteLogSink, d as simulatorRuntime } from "./client-DrHykA24.mjs";
|
|
13
|
+
import { s as parseBuildMachineOption } from "./selection-PCMT97XD.mjs";
|
|
14
14
|
import { r as hostedMetroSettings } from "./metro-request-BtF7ox53.mjs";
|
|
15
15
|
import { i as writeDevicePlacementAsync } from "./ios-state-Ce_dystM.mjs";
|
|
16
|
-
import { t as devClientPortBusy } from "./hosted-native-
|
|
17
|
-
import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-
|
|
18
|
-
import { f as waitFlagConflict, o as leaseExpiryText } from "./device-lease-run-
|
|
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-
|
|
20
|
-
import { r as isEasBuildFailure } from "./eas-build-
|
|
21
|
-
import { a as iosPoolCandidates, c as isWirelessIosDevice, f as resolveIosPhysicalDevice, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds } from "./ios-device-
|
|
22
|
-
import { i as launchOutcomeRecord, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-
|
|
23
|
-
import "./dev-client-
|
|
24
|
-
import { t as didSetUpDevice } from "./device-
|
|
16
|
+
import { t as devClientPortBusy } from "./hosted-native-DmdLSmvu.mjs";
|
|
17
|
+
import { i as restoreLightenedDependencies, n as printLightenedFailure } from "./lightened-23pqe7LS.mjs";
|
|
18
|
+
import { f as waitFlagConflict, o as leaseExpiryText } from "./device-lease-run-Do6zYA7y.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-DUevTPur.mjs";
|
|
20
|
+
import { r as isEasBuildFailure } from "./eas-build-DIDOHw2P.mjs";
|
|
21
|
+
import { a as iosPoolCandidates, c as isWirelessIosDevice, f as resolveIosPhysicalDevice, o as iosPoolNoCandidatesRefusal, r as iosDeviceBounds } from "./ios-device-ClSfuu-_.mjs";
|
|
22
|
+
import { i as launchOutcomeRecord, r as isPhysicalDeviceRequest, t as ensureDevServer } from "./native-runtime-D4cTwU0Z.mjs";
|
|
23
|
+
import "./dev-client-CASgAOu7.mjs";
|
|
24
|
+
import { t as didSetUpDevice } from "./device-CsIdRXfm.mjs";
|
|
25
25
|
import { t as unsupportedPlan } from "./project-plan-BPwbLwQu.mjs";
|
|
26
|
-
import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-
|
|
27
|
-
import { a as iosLedgerDevice, c as writeLastBuild, o as lastBuildRecord, s as reportIosResult } from "./ios-project-
|
|
28
|
-
import { t as acquireIosArtifact } from "./artifact-
|
|
29
|
-
import { a as hostedIosSelectors, i as hostedIosMetroNote, n as connectIosTarget, o as iosPlacementBudget, r as deviceRemoteConflict, s as selectIosPlacement, t as connectIosBackend } from "./remote-
|
|
30
|
-
import { i as lanOriginUrlFor, l as verifyIosMetroRun, n as chooseLanAddress, o as finishIosRun, t as DEFAULT_DEPS } from "./dependencies-
|
|
26
|
+
import { a as refusePlan, i as printPlan, n as planFlagRefusal } from "./build-plan-J3iRR3gI.mjs";
|
|
27
|
+
import { a as iosLedgerDevice, c as writeLastBuild, o as lastBuildRecord, s as reportIosResult } from "./ios-project-BM9TbTE7.mjs";
|
|
28
|
+
import { t as acquireIosArtifact } from "./artifact-DTHXcmQ3.mjs";
|
|
29
|
+
import { a as hostedIosSelectors, i as hostedIosMetroNote, n as connectIosTarget, o as iosPlacementBudget, r as deviceRemoteConflict, s as selectIosPlacement, t as connectIosBackend } from "./remote-C-RGHhAP.mjs";
|
|
30
|
+
import { i as lanOriginUrlFor, l as verifyIosMetroRun, n as chooseLanAddress, o as finishIosRun, t as DEFAULT_DEPS } from "./dependencies-vUh9mp5z.mjs";
|
|
31
31
|
import { join } from "node:path";
|
|
32
32
|
import { workspaceId } from "@stim-cli/core";
|
|
33
33
|
import { hostedIosStatus, parseMachine } from "@stim-cli/core/state";
|
|
@@ -809,7 +809,7 @@ async function runIos(context, projectRoot, opts = {}, overrides = {}, progress
|
|
|
809
809
|
wireless = resolved.wireless === true;
|
|
810
810
|
}
|
|
811
811
|
if (checkCapacity && !hostedTarget) {
|
|
812
|
-
const capacity = d.checkDeviceCapacity({
|
|
812
|
+
const capacity = await d.checkDeviceCapacity({
|
|
813
813
|
platform: "ios",
|
|
814
814
|
project: proj,
|
|
815
815
|
max: limits.maxDevices,
|
|
@@ -3,8 +3,8 @@ import { P as formatBytes, _ as loadConfig$1 } from "./config-AbUjIBOQ.mjs";
|
|
|
3
3
|
import { n as stripAnsi, r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
|
|
4
4
|
import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
|
|
5
5
|
import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-CYXLFpFS.mjs";
|
|
6
|
-
import { Ct as forgetCreatedDeviceAsync, Et as recordCreatedDeviceAsync, dt as isStimOwnedSim } from "./android-
|
|
7
|
-
import { n as signedTailFor } from "./apk-signed-tail-
|
|
6
|
+
import { Ct as forgetCreatedDeviceAsync, Et as recordCreatedDeviceAsync, dt as isStimOwnedSim } from "./android-DdKG6lyD.mjs";
|
|
7
|
+
import { n as signedTailFor } from "./apk-signed-tail-B8kw4a8K.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";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as getExecutor } from "./exec-aULwtNly.mjs";
|
|
2
|
-
import { $t as INSTALL_ERROR, rn as appProcessFromPid } from "./ccache-
|
|
2
|
+
import { $t as INSTALL_ERROR, rn as appProcessFromPid } from "./ccache-B8gY50-h.mjs";
|
|
3
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";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { w as workspaceAgentDeviceDir } from "./workspace-state-DGwkPXwq.mjs";
|
|
2
|
-
import { i as formatDuration, l as phaseLine } from "./command-output-
|
|
2
|
+
import { i as formatDuration, l as phaseLine } from "./command-output-BBW8eWPL.mjs";
|
|
3
3
|
import { a as workspaceLinkLine } from "./stim-desktop-CYXLFpFS.mjs";
|
|
4
|
-
import { Mn as isEasAuthFailureText, On as UPLOAD_TIMEOUT_MS, jn as easAuthNote, kn as cacheLevel } from "./ccache-
|
|
5
|
-
import { X as recordFinishedBuild } from "./workspaces-
|
|
6
|
-
import {
|
|
7
|
-
import { i as deviceLabel } from "./support-
|
|
4
|
+
import { Mn as isEasAuthFailureText, On as UPLOAD_TIMEOUT_MS, jn as easAuthNote, kn as cacheLevel } from "./ccache-B8gY50-h.mjs";
|
|
5
|
+
import { X as recordFinishedBuild } from "./workspaces-7_RWoi6c.mjs";
|
|
6
|
+
import { A as COMPILATION_CACHE_NOT_RUN, F as compilationCacheActivityLine } from "./toolchain-DLdoyxIt.mjs";
|
|
7
|
+
import { i as deviceLabel } from "./support-DUevTPur.mjs";
|
|
8
8
|
import { buildDiagnostics } from "@stim-cli/core/state";
|
|
9
9
|
import chalk from "chalk";
|
|
10
10
|
//#region src/commands/ios/result.ts
|
|
@@ -2,9 +2,9 @@ import { _ as spawnDeclared, b as operationState, c as throwIfCancelled, t as ge
|
|
|
2
2
|
import { r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
|
|
3
3
|
import { a as killOnAbort, t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
|
|
4
4
|
import { an as makeTemporaryDirectory, on as removeTemporaryEntry } from "./settings-D776ygML.mjs";
|
|
5
|
-
import { Bn as bundleInvocation } from "./ccache-
|
|
6
|
-
import {
|
|
7
|
-
import { s as expoTelemetryEnv, t as cleanLine } from "./server-expo-
|
|
5
|
+
import { Bn as bundleInvocation } from "./ccache-B8gY50-h.mjs";
|
|
6
|
+
import { K as tailLines, M as HEARTBEAT_INTERVAL_MS, W as startBuildHeartbeat } from "./toolchain-DLdoyxIt.mjs";
|
|
7
|
+
import { s as expoTelemetryEnv, t as cleanLine } from "./server-expo-C1K07shx.mjs";
|
|
8
8
|
import { randomUUID } from "node:crypto";
|
|
9
9
|
import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
10
10
|
import { basename, join } from "node:path";
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
import { x as withDrainingCancellation } from "./exec-aULwtNly.mjs";
|
|
2
2
|
import { k as workspaceLogsDir } from "./workspace-state-DGwkPXwq.mjs";
|
|
3
3
|
import { B as deviceSlotFileKey, C as saveConfig, E as upsertProject, H as deviceSlotPlatforms, O as withConfigLockAsync, P as formatBytes, V as deviceSlotKey, _ as loadConfig, w as setDevice } from "./config-AbUjIBOQ.mjs";
|
|
4
|
-
import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-
|
|
5
|
-
import { L as workspaceDevServerMode } from "./project-
|
|
4
|
+
import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-BBW8eWPL.mjs";
|
|
5
|
+
import { L as workspaceDevServerMode } from "./project-DPQjnpcI.mjs";
|
|
6
6
|
import { o as workspaceLinks } from "./stim-desktop-CYXLFpFS.mjs";
|
|
7
|
-
import { i as androidDataFreeBytes, ot as trimAndroidCaches, tt as resetAdoptedAvd, u as androidToolCwd } from "./android-
|
|
7
|
+
import { i as androidDataFreeBytes, ot as trimAndroidCaches, tt as resetAdoptedAvd, u as androidToolCwd } from "./android-DdKG6lyD.mjs";
|
|
8
8
|
import { c as pidExists, f as signalProcessTree } from "./metro-BMQHczcf.mjs";
|
|
9
|
-
import { Bt as RELEASE_VERIFY_WAIT_MS, Gt as unattributedLaunchLines, It as LAUNCH_BUNDLING, Kt as unverifiedLaunchLines, Lt as LAUNCH_FATAL, Rt as LAUNCH_UNVERIFIED, Vt as VERIFY_TIMEOUT_MS, Zt as ADB_INSTALL_TIMEOUT_MS, gn as restartedAppNote, nn as androidDevClientUrl, tn as androidAppProcess, un as installConflictKind } from "./ccache-
|
|
10
|
-
import { pt as teardownOwnedAvd } from "./workspaces-
|
|
11
|
-
import { x as providerUploadOutcome } from "./build-cache-
|
|
12
|
-
import { t as recordPhoneReverse } from "./phone-reverses-
|
|
9
|
+
import { Bt as RELEASE_VERIFY_WAIT_MS, Gt as unattributedLaunchLines, It as LAUNCH_BUNDLING, Kt as unverifiedLaunchLines, Lt as LAUNCH_FATAL, Rt as LAUNCH_UNVERIFIED, Vt as VERIFY_TIMEOUT_MS, Zt as ADB_INSTALL_TIMEOUT_MS, gn as restartedAppNote, nn as androidDevClientUrl, tn as androidAppProcess, un as installConflictKind } from "./ccache-B8gY50-h.mjs";
|
|
10
|
+
import { pt as teardownOwnedAvd } from "./workspaces-7_RWoi6c.mjs";
|
|
11
|
+
import { x as providerUploadOutcome } from "./build-cache-DlC3owap.mjs";
|
|
12
|
+
import { t as recordPhoneReverse } from "./phone-reverses-CvhhkGMH.mjs";
|
|
13
13
|
import { n as verifyCollectorOwnership, r as readCollectors } from "./ownership-Dtz9G5Gl.mjs";
|
|
14
|
-
import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-
|
|
14
|
+
import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-CeIK1iUI.mjs";
|
|
15
15
|
import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
|
|
16
|
-
import { c as lostRefusal, s as lostLine, t as DEBUG_VERIFY_STEP_MS } from "./device-lease-run-
|
|
17
|
-
import { a as captureNativeCrashes, r as androidCrashClockOffset, s as printNativeCrashReport, t as errorDiagnostics } from "./error-diagnostics-
|
|
18
|
-
import { f as settleFingerprintCheck } from "./prebuild-
|
|
19
|
-
import { i as launchOutcomeRecord } from "./native-runtime-
|
|
20
|
-
import { a as PLATFORM, b as noDeviceDiagnostic, h as displayPath, n as LAUNCH_FAILED, r as NO_DEVICE, t as INSTALL_FAILED } from "./support-
|
|
21
|
-
import { a as persistLastBuild, n as finishAndroidUpload, s as reportAndroidResult } from "./result-
|
|
16
|
+
import { c as lostRefusal, s as lostLine, t as DEBUG_VERIFY_STEP_MS } from "./device-lease-run-Do6zYA7y.mjs";
|
|
17
|
+
import { a as captureNativeCrashes, r as androidCrashClockOffset, s as printNativeCrashReport, t as errorDiagnostics } from "./error-diagnostics-XJ9eWdtq.mjs";
|
|
18
|
+
import { f as settleFingerprintCheck } from "./prebuild-DBJMhwSS.mjs";
|
|
19
|
+
import { i as launchOutcomeRecord } from "./native-runtime-D4cTwU0Z.mjs";
|
|
20
|
+
import { a as PLATFORM, b as noDeviceDiagnostic, h as displayPath, n as LAUNCH_FAILED, r as NO_DEVICE, t as INSTALL_FAILED } from "./support-BGqpYMV8.mjs";
|
|
21
|
+
import { a as persistLastBuild, n as finishAndroidUpload, s as reportAndroidResult } from "./result-W4HCum4A.mjs";
|
|
22
22
|
import { mkdirSync, openSync, statSync } from "node:fs";
|
|
23
23
|
import { basename, join } from "node:path";
|
|
24
24
|
import { ambientEnv } from "@stim-cli/core";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { l as WorkspaceProcessCleanupError } from "./exec-aULwtNly.mjs";
|
|
2
2
|
import { c as withWorkspaceStateLock } from "./workspace-state-DGwkPXwq.mjs";
|
|
3
|
-
import { l as phaseLine } from "./command-output-
|
|
3
|
+
import { l as phaseLine } from "./command-output-BBW8eWPL.mjs";
|
|
4
4
|
import { Jt as warmWorktreePaths, Lt as podsOutOfSync, Q as resolveSettings, Rt as readWorktreeExclude, kt as listCarryableIgnoredEntries, vt as depsOutOfSync } from "./settings-D776ygML.mjs";
|
|
5
5
|
import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
|
|
6
|
-
import { m as warmWorktreeTarget } from "./worktree-
|
|
6
|
+
import { m as warmWorktreeTarget } from "./worktree-qKJ3x07S.mjs";
|
|
7
7
|
import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
8
8
|
import { basename, dirname, join, relative } from "node:path";
|
|
9
9
|
import { isJsonObject, readJsonObject, workspaceLightenedFile, workspaceMetadataFile } from "@stim-cli/core/state";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { i as recordWorkspaceUse, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-DGwkPXwq.mjs";
|
|
2
2
|
import { W as parseDeviceSlotOption, _ as loadConfig$1, g as isPathPrefix$1 } from "./config-AbUjIBOQ.mjs";
|
|
3
|
-
import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-
|
|
4
|
-
import { n as findCommandWorkspace } from "./project-
|
|
3
|
+
import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-BBW8eWPL.mjs";
|
|
4
|
+
import { n as findCommandWorkspace } from "./project-DPQjnpcI.mjs";
|
|
5
5
|
import { n as SOURCES$1, t as LEVELS$1 } from "./ndjson-CrjIsGzw.mjs";
|
|
6
|
-
import { i as followAgentActions, n as openWorkspaceLogs } from "./logs-
|
|
7
|
-
import { t as errorDiagnostics } from "./error-diagnostics-
|
|
8
|
-
import { n as followHostedLogs } from "./hosted-logs-sync-
|
|
6
|
+
import { i as followAgentActions, n as openWorkspaceLogs } from "./logs-Pkeh3wZk.mjs";
|
|
7
|
+
import { t as errorDiagnostics } from "./error-diagnostics-XJ9eWdtq.mjs";
|
|
8
|
+
import { n as followHostedLogs } from "./hosted-logs-sync-wsI7N1Hv.mjs";
|
|
9
9
|
import { t as watchStdoutReader } from "./stdout-reader-C8yjre1x.mjs";
|
|
10
10
|
import { realpathSync } from "node:fs";
|
|
11
11
|
import { relative, sep } from "node:path";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { S as process_identity_exports } from "./exec-aULwtNly.mjs";
|
|
2
2
|
import { k as workspaceLogsDir$1 } from "./workspace-state-DGwkPXwq.mjs";
|
|
3
3
|
import { G as projectDeviceSlots, _ as loadConfig$1 } from "./config-AbUjIBOQ.mjs";
|
|
4
|
-
import { f as readAgentDeviceRecordsAsync, n as agentDeviceLiveness, o as envDir } from "./activity-
|
|
5
|
-
import { o as captureWorkspaceCrashes } from "./error-diagnostics-
|
|
6
|
-
import { n as followHostedLogs, r as syncHostedLogs } from "./hosted-logs-sync-
|
|
4
|
+
import { f as readAgentDeviceRecordsAsync, n as agentDeviceLiveness, o as envDir } from "./activity-BTaUf0tc.mjs";
|
|
5
|
+
import { o as captureWorkspaceCrashes } from "./error-diagnostics-XJ9eWdtq.mjs";
|
|
6
|
+
import { n as followHostedLogs, r as syncHostedLogs } from "./hosted-logs-sync-wsI7N1Hv.mjs";
|
|
7
7
|
import { readdirSync, statSync, watch } from "node:fs";
|
|
8
8
|
import { homedir } from "node:os";
|
|
9
9
|
import { dirname, join, relative, resolve, sep } from "node:path";
|
|
@@ -222,7 +222,8 @@ async function openWorkspaceLogs(context, options = {}, follow = false) {
|
|
|
222
222
|
const root = context.projectRoot;
|
|
223
223
|
const dir = workspaceLogsDir$1(root);
|
|
224
224
|
if (!logFiles(dir).length) throw Object.assign(/* @__PURE__ */ new Error(`No Stim workspace has run in ${root}. Run stim start, stim ios, or stim android in the app first.`), { code: "STIM_NO_PROJECT" });
|
|
225
|
-
const
|
|
225
|
+
const readsDevice = !options.sources?.length || options.sources.includes("device");
|
|
226
|
+
const hostedReachable = await syncHostedLogs(root, context, readsDevice);
|
|
226
227
|
context.signal.throwIfAborted();
|
|
227
228
|
const initial = await openLogDir(dir, { signal: context.signal });
|
|
228
229
|
let attempts;
|