stim 1.34.0 → 1.36.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-B0SWoVNt.mjs → acquire-artifact-DGTHCd0Q.mjs} +19 -3
- package/dist/{act-7f7wIvCQ.mjs → act-CvN9xyV6.mjs} +18 -19
- package/dist/{activity-DkS-Ir6V.mjs → activity-BpdDvA8Q.mjs} +4 -4
- package/dist/{agent-device-usage-output-BVdgKbfz.mjs → agent-device-usage-output-pbhaW7_k.mjs} +4 -4
- package/dist/{android-B2DSKg-A.mjs → android-5wkcMFDG.mjs} +1 -1
- package/dist/{android-BU4uBX8I.mjs → android-B0qTdwnt.mjs} +5 -5
- package/dist/{android-Iq0M2t2d.mjs → android-SJx1V3R3.mjs} +5 -5
- package/dist/{android-cas-Dhcjkys1.mjs → android-cas-BS9_55U5.mjs} +4 -4
- package/dist/{android-D7qjT2fq.mjs → android-e9WP10cE.mjs} +47 -41
- package/dist/{android-image-DFk26aY6.mjs → android-image-BZ57YL6R.mjs} +2 -2
- package/dist/{android-project-DhO6el8N.d.mts → android-project-v_1nej_x.d.mts} +3 -1
- package/dist/api.d.mts +20 -6
- package/dist/api.mjs +31 -26
- package/dist/{apk-signed-tail-CPpA-3vu.mjs → apk-signed-tail-eZyXIrnc.mjs} +2 -2
- package/dist/{artifact-DmRtKFXW.mjs → artifact-C3srrGVU.mjs} +36 -14
- package/dist/{artifact-CNnTZs3R.mjs → artifact-ubNdxo_K.mjs} +52 -19
- package/dist/{auto-placement-DA65VQH7.mjs → auto-placement-CKFpFCuq.mjs} +7 -8
- package/dist/{browser-web-Dn_hgKZC.mjs → browser-web-B63vLrj6.mjs} +11 -11
- package/dist/{build-D7SuVoRX.mjs → build-B_Dx9SKJ.mjs} +72 -25
- package/dist/{build-cache-Cqj4FGnX.mjs → build-cache-BW8T4oD2.mjs} +10 -5
- package/dist/{build-plan-Ct1FiA3E.mjs → build-plan-CeIooJqn.mjs} +6 -6
- package/dist/{cache-manifest-8JX9S1QJ.mjs → cache-manifest-CxWkZmUr.mjs} +1 -1
- package/dist/cache-manifest.mjs +1 -1
- package/dist/{cli-DjdvQG5U.mjs → cli-COdXswmc.mjs} +19 -18
- package/dist/cli.mjs +1 -1
- package/dist/{client-kU37gURU.mjs → client-KSWIeQLA.mjs} +9 -8
- package/dist/collector-run.mjs +4 -4
- package/dist/{command-output-DjExb_tZ.mjs → command-output-T3cDctRE.mjs} +1 -1
- package/dist/{config-BW0fAtoK.mjs → config-BA3TgoIP.mjs} +59 -10
- package/dist/{dependencies-CZ7c8XX_.mjs → dependencies-LH-7k1Vr.mjs} +35 -38
- package/dist/{dependency-state-mL5g4H6K.mjs → dependency-state-Blfp3AkG.mjs} +1 -1
- package/dist/{dev-client-D3wOllNd.mjs → dev-client-MO_DjTZr.mjs} +2 -2
- package/dist/{device-DH5yf6TU.mjs → device-BZWt_aPJ.mjs} +11 -11
- package/dist/{device-CWPFAqs0.mjs → device-DNTWFFB1.mjs} +12 -12
- package/dist/{device-android-ChfF5I9A.mjs → device-android-BB9Lugr8.mjs} +8 -8
- package/dist/{ccache-ChBMXlBq.mjs → device-capacity-CpAVcKgq.mjs} +1006 -23
- package/dist/device-host-worker.mjs +13 -14
- package/dist/{device-pool-EZziQ0uS.mjs → device-pool-BJToGG-q.mjs} +3 -3
- package/dist/{device-provision-CfpEy-Vm.mjs → device-provision-CxQDCtrc.mjs} +9 -9
- package/dist/{doctor-CGBsS_68.mjs → doctor-C-46SkBe.mjs} +1 -1
- package/dist/{doctor-dwRboaXx.mjs → doctor-CYZ45LnX.mjs} +20 -21
- package/dist/{doctor-B5uEZiKp.mjs → doctor-DV639Iw_.mjs} +15 -16
- package/dist/doctor-fingerprint.mjs +1 -1
- package/dist/{doctor-watchman-r7M9UPi0.mjs → doctor-watchman-TZxYt_98.mjs} +4 -4
- package/dist/{eas-build-BpHIt_M3.mjs → eas-build-Xf5Jd6LR.mjs} +2 -2
- package/dist/{eas-fallback-CNPcjq3K.mjs → eas-fallback-DNYPNinw.mjs} +4 -4
- package/dist/{eas-session-ledger-CXwagcQ7.mjs → eas-session-ledger-CXZ4aix0.mjs} +5 -5
- package/dist/{error-diagnostics-Ym2mjmJ0.mjs → error-diagnostics-CvB5bpPU.mjs} +8 -8
- package/dist/{gc-B464w_a5.mjs → gc-8Qm_K1iy.mjs} +2 -2
- package/dist/{gc-C7YxKNci.mjs → gc-DiUhrVFo.mjs} +17 -17
- package/dist/{guide-BFW-cB7R.mjs → guide-CuvHRP53.mjs} +130 -65
- package/dist/{hosted-android-B7yfqXEy.mjs → hosted-android-D__HGVIO.mjs} +3 -3
- package/dist/{hosted-client-CQuzZwAu.mjs → hosted-client-DMOOu8vD.mjs} +6 -6
- package/dist/{hosted-logs-DfYCqrrR.mjs → hosted-logs-CClIktQM.mjs} +6 -6
- package/dist/{hosted-logs-sync-Dlpa2mQF.mjs → hosted-logs-sync-B7XCeqVm.mjs} +5 -5
- package/dist/{hosted-macos-JKefapEm.mjs → hosted-macos-D4sDJIbB.mjs} +5 -5
- package/dist/{hosted-native-B7OFt5gB.mjs → hosted-native-BiiUG_Q6.mjs} +7 -7
- package/dist/{ios-sUPbWqEh.mjs → ios-BZuhvLGr.mjs} +8 -8
- package/dist/{ios-BdZdNsAj.mjs → ios-BhfpRfNf.mjs} +4 -4
- package/dist/{ios-DSBs9c6d.mjs → ios-BhpUWyN7.mjs} +39 -32
- package/dist/{ios-device-Drplrgzo.mjs → ios-device-vhYL1N--.mjs} +1 -1
- package/dist/{ios-project-DoTQYghg.mjs → ios-project-Cz0S1Sz-.mjs} +7 -7
- package/dist/{ios-signing-R34vbrNU.mjs → ios-signing-BcH88ecn.mjs} +1 -1
- package/dist/{ios-state-CWsBysyN.mjs → ios-state-Avwz2cbZ.mjs} +1 -1
- package/dist/{js-swap-DrokhOfo.mjs → js-swap-Desu2iII.mjs} +4 -4
- package/dist/{launch-Cy-MWEZc.mjs → launch-6ckG9UrC.mjs} +19 -19
- package/dist/{lightened-ALwQcQtV.mjs → lightened-B6TnpHMX.mjs} +4 -4
- package/dist/{logs-DuED-01Z.mjs → logs-B-DMy1K0.mjs} +7 -7
- package/dist/{logs-DWT7jGpF.mjs → logs-CO0CJRiC.mjs} +5 -5
- package/dist/{macos-CtBtA_hW.mjs → macos-B1aCXhem.mjs} +19 -19
- package/dist/{macos-kWGcfLzx.mjs → macos-CduEmWAK.mjs} +1 -1
- package/dist/macos-run.mjs +1 -1
- package/dist/maintenance-run.mjs +5 -5
- package/dist/{metro-B5PVz0Wv.mjs → metro-DM3yJL1M.mjs} +2 -2
- package/dist/{metro-request-2LmFpC1z.mjs → metro-request-O8Q-JvBg.mjs} +1 -1
- package/dist/{named-ports-CA0nB9Yw.mjs → named-ports-BvB_CO9B.mjs} +2 -2
- package/dist/{native-android-tISP2EVp.mjs → native-android-28NOG2-y.mjs} +17 -17
- package/dist/{native-gradle-artifact-inputs-DVoeZkrw.mjs → native-gradle-artifact-inputs-DxVEtS6_.mjs} +3 -3
- package/dist/{native-runtime-CNgxeOCG.mjs → native-runtime-C3_NkUlW.mjs} +6 -6
- package/dist/{native-xcode-inputs-DGzkhpu4.mjs → native-xcode-inputs-BWFTw5cJ.mjs} +2 -2
- package/dist/{native-xcode-ios-B9nsfId2.mjs → native-xcode-ios-B4Qoc7-U.mjs} +16 -16
- package/dist/offload-worker.d.mts +1 -1
- package/dist/offload-worker.mjs +19 -19
- package/dist/{ownership-hC7xvvxF.mjs → ownership-C3y8wLSl.mjs} +2 -2
- package/dist/{phone-reverses-Bo0EzJ-P.mjs → phone-reverses-BhSxbqom.mjs} +4 -4
- package/dist/{placement-log-BsGvKLtU.mjs → placement-log-B8RCSzOm.mjs} +1 -1
- package/dist/{plan-placement-Am0IjuxB.mjs → plan-placement-BI4r55aP.mjs} +6 -6
- package/dist/{ports-CNzg1LYD.mjs → ports-DhOSyWm9.mjs} +3 -3
- package/dist/{prebuild-BfJII57G.mjs → prebuild-Di2IhUue.mjs} +9 -9
- package/dist/{project-DU3jjnBE.mjs → project-Clk1JAWL.mjs} +15 -15
- package/dist/{react-native-android-3dZiJv-4.mjs → react-native-android-bdHBMrnf.mjs} +23 -23
- package/dist/{react-native-build-CuvNPt-q.mjs → react-native-build-CJega_NM.mjs} +7 -7
- package/dist/{react-native-doctor-a35BwMUO.mjs → react-native-doctor-CY7BGITE.mjs} +5 -5
- package/dist/{react-native-ios-CqnReM1t.mjs → react-native-ios-Bo5EDVel.mjs} +25 -20
- package/dist/recorded-build-BuGL_fnm.mjs +58 -0
- package/dist/{recordings-AKZfsW2W.mjs → recordings-6i2-x8LU.mjs} +1 -1
- package/dist/{reload-CC3sNo10.mjs → reload-A_axEbeS.mjs} +14 -14
- package/dist/{reload-YPnvXGlB.mjs → reload-BvDuvygc.mjs} +1 -1
- package/dist/remote-PD6CM0xp.mjs +158 -0
- package/dist/{remote-BfaIHnhM.mjs → remote-WK_swZEw.mjs} +8 -8
- package/dist/{result-H-AxY7Ud.mjs → result-BkDpN5Mz.mjs} +23 -18
- package/dist/{run-N-BbRxnC.mjs → run-CTFi4Nq2.mjs} +1 -1
- package/dist/{server-bare-BTlICuaX.mjs → server-bare-W0aPsRZE.mjs} +1 -1
- package/dist/{server-command-Bn_gOObU.mjs → server-command-S00-ddjK.mjs} +4 -4
- package/dist/server-expo-BWJDa7Qb.mjs +2 -0
- package/dist/{server-expo-CUJ2fuv1.mjs → server-expo-cc-cmfsl.mjs} +2 -2
- package/dist/{settings-B5IBDfTx.mjs → settings-Bap-qjnp.mjs} +1 -1
- package/dist/{settings-DoWHJopy.mjs → settings-C_Xu4RNZ.mjs} +2 -2
- package/dist/{settings-payload-Bxw3hid5.mjs → settings-payload-D5jjhmrw.mjs} +4 -4
- package/dist/{settings-write-C6d7EC54.mjs → settings-write-C5huI-iS.mjs} +5 -5
- package/dist/settings.schema.json +1 -1
- package/dist/{simslim-DKdJx0LL.mjs → simslim-DlBvwgeF.mjs} +1 -1
- package/dist/{slot-launch-kq0-7w9C.mjs → slot-launch-qEQVTth7.mjs} +6 -6
- package/dist/{stage-CBfMTUK3.mjs → stage-CxVI_MlP.mjs} +1 -1
- package/dist/{start-Diu8q6_U.mjs → start-CVzivp35.mjs} +1 -1
- package/dist/{start-WTMumMHi.mjs → start-YpT_JpQQ.mjs} +10 -10
- package/dist/{state-DSOUqO-o.mjs → state-B4B5P4LU.mjs} +1 -1
- package/dist/{state-CtmYTRWm.mjs → state-B9VFI6r0.mjs} +2 -2
- package/dist/{stats-D4cW247z.mjs → stats-COoePEri.mjs} +4 -4
- package/dist/{status-CEwxo-PS.mjs → status-CIg0k7Qb.mjs} +21 -22
- package/dist/{status-B-oeWS0Z.mjs → status-CIvU5-TF.mjs} +1 -1
- package/dist/{status-DTFhDnd1.mjs → status-CQWmNl1f.mjs} +1 -1
- package/dist/{status-watch-D63R5nSI.mjs → status-watch--rfZynD_.mjs} +4 -4
- package/dist/status-worker.mjs +1 -1
- package/dist/{stim-desktop-_WTria-r.mjs → stim-desktop-D0P_bzmd.mjs} +1 -1
- package/dist/{stop-HL2RvhrE.mjs → stop-BEBBruvD.mjs} +4 -4
- package/dist/{stop-Dm9ON6Os.mjs → stop-BiI4_VFG.mjs} +2 -2
- package/dist/{stop-vX4w3_8V.mjs → stop-C3d5qG7C.mjs} +15 -15
- package/dist/supervisor-run.mjs +12 -13
- package/dist/support-BJbXovoO.mjs +2089 -0
- package/dist/{support-BNe1_Hg7.mjs → support-Vckdzrmk.mjs} +5 -5
- package/dist/{swiftpm-artifact-inputs-uq5oV7xR.mjs → swiftpm-artifact-inputs-DbuF-Yrr.mjs} +1 -1
- package/dist/{swiftpm-macos-ClF203_2.mjs → swiftpm-macos-Bu8xeBfM.mjs} +8 -8
- package/dist/{toolchain-CECahBDa.mjs → toolchain-CIRdNl-c.mjs} +1 -1
- package/dist/{toolchain-CYonNjd_.mjs → toolchain-DCnWAxQL.mjs} +71 -7
- package/dist/{warm-progress-q11Vdvhh.mjs → warm-progress-DwsGBpph.mjs} +3 -3
- package/dist/{web-BdaMBr2O.mjs → web-D2En0Wa5.mjs} +8 -8
- package/dist/web-Dpj70t4p.mjs +2 -0
- package/dist/web-run.mjs +4 -4
- package/dist/{workspace-state-BdZ-QgmB.mjs → workspace-state-BhwAJBgA.mjs} +2 -2
- package/dist/{workspaces-B9v5V7Es.mjs → workspaces-Dh5N70qW.mjs} +11 -11
- package/dist/{worktree-C4MBOMz7.mjs → worktree-DLm4s2Ib.mjs} +1 -1
- package/dist/{worktree-C3N86KpI.mjs → worktree-Yw3EW77B.mjs} +24 -24
- package/package.json +7 -7
- package/dist/device-capacity-CHC3dKWg.mjs +0 -867
- package/dist/device-ios-B3-Ah--R.mjs +0 -716
- package/dist/device-lease-run-i3FNX4OE.mjs +0 -282
- package/dist/idle-shutdown-DPD8oV36.mjs +0 -142
- package/dist/selection-CH-MUVGD.mjs +0 -791
- package/dist/server-expo-B59N16uT.mjs +0 -2
- package/dist/support-ivsfDj0v.mjs +0 -287
- package/dist/web-CIpHpGp8.mjs +0 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { t as ANDROID_AVD_CONFIG_HELP } from "./settings-
|
|
2
|
-
import { i as findProjectRoot$1 } from "./project-
|
|
3
|
-
import { h as RECENT_LAUNCH_MS } from "./eas-session-ledger-
|
|
4
|
-
import { o as guideStatus, t as WATCHMAN_NESTED_WORKTREES } from "./doctor-watchman-
|
|
5
|
-
import "./status-watch
|
|
1
|
+
import { t as ANDROID_AVD_CONFIG_HELP } from "./settings-Bap-qjnp.mjs";
|
|
2
|
+
import { i as findProjectRoot$1 } from "./project-Clk1JAWL.mjs";
|
|
3
|
+
import { h as RECENT_LAUNCH_MS } from "./eas-session-ledger-CXZ4aix0.mjs";
|
|
4
|
+
import { o as guideStatus, t as WATCHMAN_NESTED_WORKTREES } from "./doctor-watchman-TZxYt_98.mjs";
|
|
5
|
+
import "./status-watch--rfZynD_.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
|
|
@@ -148,7 +148,7 @@ server.* or hosting.* for the user, or approve requests. Read stim guide setting
|
|
|
148
148
|
Desktop access tickets and person-owned approval.
|
|
149
149
|
Read stim guide settings to select a remote machine. Keep a requested named
|
|
150
150
|
placement when recovering STIM_OFFLOAD_REFUSED: report its reason and remedy.
|
|
151
|
-
When the user mentions slow builds, a busy machine or wanting updates away from the desk, tell them about Stim Desktop > Settings > Remote Machines > Add or Phones > Pair a Phone; see stim guide settings.
|
|
151
|
+
When the user mentions slow builds, a busy machine or wanting updates away from the desk, tell them about Stim Desktop > Settings > Remote Machines > Add (or stim remote add <machine> in their terminal) or Phones > Pair a Phone; see stim guide settings.
|
|
152
152
|
|
|
153
153
|
Read stim guide lifecycle concurrency when a build waits on another workspace
|
|
154
154
|
or a build call times out. A native build can outlive a shell timeout; if the
|
|
@@ -612,7 +612,12 @@ it never starts an EAS build. iOS simulatorApp selects the simulator viewer.
|
|
|
612
612
|
remote selects the launch host using the CLI's existing placement and approval
|
|
613
613
|
rules; remoteBuild independently selects where compilation runs. macOS requires
|
|
614
614
|
a named hosting Mac; auto, eas and proxy are not supported there.
|
|
615
|
-
All methods accept signal. run builds, installs and launches.
|
|
615
|
+
All methods accept signal. run builds, installs and launches. iOS and Android run
|
|
616
|
+
also accept recordedBuild: true, which installs and launches the app the last
|
|
617
|
+
build with the same scheme and configuration (or variant) recorded in this
|
|
618
|
+
workspace, without fingerprinting, building or replacing its JS, and refuses with
|
|
619
|
+
STIM_NO_RECORDED_BUILD when there is none. @stim-cli/ci uses it; the CLI and the
|
|
620
|
+
private Desktop transport do not.
|
|
616
621
|
Web requires a running server, just like stim web.
|
|
617
622
|
|
|
618
623
|
build produces an artifact without acquiring a device, starting a runtime, or
|
|
@@ -627,18 +632,20 @@ including when Desktop is not installed on the build machine. Opening it only
|
|
|
627
632
|
navigates; it does not install or launch the built app.
|
|
628
633
|
|
|
629
634
|
Build options:
|
|
630
|
-
ios: scheme, configuration, arch (arm64, x86_64, all), buildCache, remoteBuild
|
|
631
|
-
android: variant, abi (arm64-v8a, armeabi-v7a, x86, x86_64, all), buildCache, remoteBuild
|
|
635
|
+
ios: scheme, configuration, arch (arm64, x86_64, all), buildCache, remoteBuild, easProfile
|
|
636
|
+
android: variant, abi (arm64-v8a, armeabi-v7a, x86, x86_64, all), buildCache, remoteBuild, easProfile
|
|
632
637
|
macos: remoteBuild
|
|
633
638
|
An iOS build targets the simulator. A Debug build defaults to the host
|
|
634
639
|
architecture (Android only while optimizations.android.targetAbiOnly is on, the
|
|
635
640
|
default); Release defaults to all. macOS builds the configured Debug SwiftPM app.
|
|
636
641
|
Build results retain an owned appPath (iOS), apkPath (Android) or bundle (macOS)
|
|
637
|
-
inside this workspace until worktree removal. Later builds keep earlier copies.
|
|
642
|
+
inside this workspace until worktree removal. Later builds keep earlier copies. An iOS or
|
|
643
|
+
Android build also records its app in workspace state for recordedBuild runs; the
|
|
644
|
+
last build per scheme and configuration or variant wins. easProfile downloads a
|
|
645
|
+
completed EAS development build instead of compiling; it never starts an EAS build.
|
|
638
646
|
A build leaves a running app's last build record and build log untouched; it
|
|
639
647
|
writes its own build-artifact-<platform>.ndjson. No distribution archive or web build
|
|
640
|
-
pipeline is inferred. Use @stim-cli/ci's buildCI to export a portable artifact
|
|
641
|
-
diagnostics for your CI provider.
|
|
648
|
+
pipeline is inferred. Use @stim-cli/ci's buildCI to record the build and, with exportPath, export a portable artifact for your CI provider.
|
|
642
649
|
|
|
643
650
|
Unresolved native Metro cleanup keeps error.details.cause.retainedClaimRoots and
|
|
644
651
|
STIM_CLAIM_UNAVAILABLE even after cancellation. Web cancellation stops pending
|
|
@@ -1270,7 +1277,7 @@ leased until <time>" for each one.`,
|
|
|
1270
1277
|
local: machine that approved this one but whose key no
|
|
1271
1278
|
person confirmed, so nothing pinned it; fingerprint is the
|
|
1272
1279
|
key's fingerprint to compare with the one stim-server setup
|
|
1273
|
-
printed there, and only stim doctor --fix in a terminal asks.
|
|
1280
|
+
printed there, and only stim remote add or doctor --fix in a terminal asks.
|
|
1274
1281
|
A local: entry has no dnsName. "outdated" means its
|
|
1275
1282
|
stim-server speaks protocol 1; the finding names the
|
|
1276
1283
|
stim-server service update command to run there.
|
|
@@ -1285,7 +1292,7 @@ leased until <time>" for each one.`,
|
|
|
1285
1292
|
fits the pin; match is "exact", or "major" for the newest
|
|
1286
1293
|
install of the pinned major not older than the pin), else null
|
|
1287
1294
|
remoteMachines one { machine, state, diagnosis?, dnsName?, fingerprint?, deviceId?,
|
|
1288
|
-
requestedAt?, expiresAt?, offloadable?, reasons?, problems?, capacity?, host? } per
|
|
1295
|
+
requestedAt?, tailnet?, expiresAt?, offloadable?, reasons?, problems?, capacity?, host? } per
|
|
1289
1296
|
remote.machines entry, for its build approval; state is "approved", "pending", "not-asked",
|
|
1290
1297
|
"revoked" (revoked or denied), "lapsed" (the request lapsed
|
|
1291
1298
|
before approval), "key-changed", "key-unconfirmed" (as in
|
|
@@ -1297,6 +1304,10 @@ leased until <time>" for each one.`,
|
|
|
1297
1304
|
(deviceHosts carries it too); the codes are
|
|
1298
1305
|
tailscale-stopped, tailscale-logged-out, tailscale-unavailable
|
|
1299
1306
|
(this machine's Tailscale), peer-not-found, peer-ambiguous,
|
|
1307
|
+
peer-wrong-tailnet (no peer is named so, and this Mac is
|
|
1308
|
+
signed in to another tailnet than the one it was on when it
|
|
1309
|
+
asked the machine for access; both are named; tailnet is
|
|
1310
|
+
{ name, suffix?, id? }),
|
|
1300
1311
|
peer-offline (with last seen), peer-no-answer (the connection
|
|
1301
1312
|
got no reply and tailscale ping fails), route-missing (nothing accepts
|
|
1302
1313
|
connections on the serve port), route-tls, route-http-error
|
|
@@ -3842,6 +3853,11 @@ WHAT WRITES WHAT
|
|
|
3842
3853
|
the run that pointed you at it. A build from the API's
|
|
3843
3854
|
build() writes build-artifact-<platform>.ndjson
|
|
3844
3855
|
instead, so it never replaces a run's transcript.
|
|
3856
|
+
A failed build also leaves a copy of its transcript next
|
|
3857
|
+
to the log, named <log>.failed (build-ios.ndjson.failed);
|
|
3858
|
+
the failure's log line points at it, and the next
|
|
3859
|
+
failed build of that log replaces it. \`logs\` does not
|
|
3860
|
+
read it.
|
|
3845
3861
|
|
|
3846
3862
|
Only a dev server Stim hosted is captured. If you started the bundler
|
|
3847
3863
|
yourself, the metro and client sources stay empty -- which is not a sign of a
|
|
@@ -3904,7 +3920,7 @@ Branch on the code, never on the message.`,
|
|
|
3904
3920
|
on the host to enable handoff and native logs (hello features hosted-ios-data
|
|
3905
3921
|
for iOS and hosted-android-data for Android).
|
|
3906
3922
|
A name outside remote.machines is STIM_BAD_ARG. Missing or pending hosting
|
|
3907
|
-
approval keeps the
|
|
3923
|
+
approval keeps the stim remote add and stim-server setup remedies.`
|
|
3908
3924
|
},
|
|
3909
3925
|
STIM_EAS_BUILD_MISSING: {
|
|
3910
3926
|
summary: "no completed EAS development build matches; build only with session authorization",
|
|
@@ -4021,7 +4037,11 @@ Branch on the code, never on the message.`,
|
|
|
4021
4037
|
summary: "xcodebuild or gradle failed; the Android missing-SDK and APK refusals",
|
|
4022
4038
|
body: () => `STIM_BUILD_FAILED
|
|
4023
4039
|
xcodebuild or gradle failed. The EXTRACTED diagnostics are printed (capped),
|
|
4024
|
-
not the transcript. Read the log path on the next line for the rest
|
|
4040
|
+
not the transcript. Read the log path on the next line for the rest: it names
|
|
4041
|
+
a copy of the failed transcript (<log>.failed) that the next build in the
|
|
4042
|
+
workspace does not overwrite. When xcodebuild names failed script phases,
|
|
4043
|
+
the first diagnostics are the phase names and the last error lines the
|
|
4044
|
+
script printed, ahead of the compiler diagnostics.
|
|
4025
4045
|
Three Android refusals share this code without gradle itself failing:
|
|
4026
4046
|
- NO ANDROID SDK, before gradle starts: nothing exists at the SDK path
|
|
4027
4047
|
Stim resolves (ANDROID_HOME, else ANDROID_SDK_ROOT, else the default
|
|
@@ -4282,9 +4302,9 @@ fingerprint reads, such as .env.local. Make the named input agree on both Macs,
|
|
|
4282
4302
|
for example by committing the lockfile pod install rewrote there; pairing does
|
|
4283
4303
|
not change it.
|
|
4284
4304
|
|
|
4285
|
-
Run stim
|
|
4286
|
-
stim
|
|
4287
|
-
by running the stim-server setup command
|
|
4305
|
+
Run stim remote add <machine> to ask for build access if not approved. Check
|
|
4306
|
+
stim remote list. A person on the worker approves this machine
|
|
4307
|
+
by running the stim-server setup command stim remote add printed, with its ticket
|
|
4288
4308
|
and expiry (guide settings). Agents never run setup or approve requests.
|
|
4289
4309
|
Rerun with --remote-build auto or remote for placement with local fallback, or
|
|
4290
4310
|
--remote-build local to keep the build here.
|
|
@@ -5166,6 +5186,16 @@ captured" (in metro.ndjson, bare RN)
|
|
|
5166
5186
|
Stim's processes. For a legacy record, stop the server with the tool that
|
|
5167
5187
|
started it before retrying. Never reconstruct ownership from a process
|
|
5168
5188
|
name, port, or wall-clock timestamp.`
|
|
5189
|
+
},
|
|
5190
|
+
STIM_NO_RECORDED_BUILD: {
|
|
5191
|
+
summary: "a recordedBuild run found no recorded build for its selectors",
|
|
5192
|
+
body: () => `STIM_NO_RECORDED_BUILD
|
|
5193
|
+
The API run option \`recordedBuild: true\` (used by \`stim-ci run\`) installs the
|
|
5194
|
+
app the last build with the same iOS scheme and configuration, or Android
|
|
5195
|
+
variant, recorded in this workspace's state. None is recorded, or its app was
|
|
5196
|
+
removed. Nothing was started. Build first with the same selectors and the same
|
|
5197
|
+
Stim home (\`stim-ci build\`, or the API build), then run again. \`stim guide ci\`
|
|
5198
|
+
has the flow. \`stim ios\` and \`stim android\` never use it.`
|
|
5169
5199
|
},
|
|
5170
5200
|
STIM_BAD_ARG: {
|
|
5171
5201
|
summary: "an argument, setting, directory, flavor, or device name refused before anything starts",
|
|
@@ -6177,23 +6207,37 @@ prerequisites. \`reload\` refuses because the app has no Metro runtime. Re-run
|
|
|
6177
6207
|
\`stim android\` after an edit and use \`stim stop\` for scoped cleanup.`
|
|
6178
6208
|
},
|
|
6179
6209
|
ci: {
|
|
6180
|
-
summary: "
|
|
6210
|
+
summary: "Build an app once, then install it and run tests through @stim-cli/ci with scoped cleanup",
|
|
6181
6211
|
body: () => `CONTINUOUS INTEGRATION
|
|
6182
6212
|
|
|
6183
6213
|
Install app dependencies and platform tools first. Use a dedicated checkout:
|
|
6184
6214
|
cleanup stops that workspace, including resources created before a build fails.
|
|
6185
6215
|
|
|
6216
|
+
npx --yes --package @stim-cli/ci stim-ci build --platform ios --project ./app
|
|
6186
6217
|
npx --yes --package @stim-cli/ci stim-ci run --platform ios --project ./app --timeout 1800 -- pnpm test:e2e
|
|
6187
6218
|
|
|
6188
6219
|
Or install npm install --global @stim-cli/ci and use stim-ci directly.
|
|
6189
6220
|
Platforms: ios, android, macos, web. Everything after -- is argv, not a shell.
|
|
6190
|
-
|
|
6221
|
+
build is the only step that compiles (or restores from the cache, or with
|
|
6222
|
+
--eas-profile downloads an EAS development build). It records the app for this
|
|
6223
|
+
checkout, platform and selectors (iOS scheme and configuration, Android variant)
|
|
6224
|
+
in workspace state under the Stim home; the last build for those selectors wins.
|
|
6225
|
+
run never builds, fingerprints or replaces JS: it installs and launches that
|
|
6226
|
+
recorded app as built and trusts it, then runs the test. A Debug app still gets
|
|
6227
|
+
Metro from run. With no recorded build for the selectors, run refuses with
|
|
6228
|
+
STIM_NO_RECORDED_BUILD and names the stim-ci build command. Build and run must
|
|
6229
|
+
share the Stim home (--home or STIM_HOME). macOS and web run unchanged: macOS
|
|
6230
|
+
run builds the app itself.
|
|
6231
|
+
build exports nothing unless --export <path> is given (an APK, or a tar.gz).
|
|
6232
|
+
--artifacts selects a directory for result, test and diagnostic files; without
|
|
6233
|
+
it none are written, no logs are copied and the action uploads nothing.
|
|
6191
6234
|
An explicit artifacts directory must be empty; use a new directory per run.
|
|
6192
6235
|
Stdout is one JSON result; progress and test output go to stderr.
|
|
6193
6236
|
|
|
6194
6237
|
Tests receive STIM_CI_PLATFORM, STIM_CI_DEVICE_ID, STIM_CI_APP_ID,
|
|
6195
|
-
STIM_CI_METRO_PORT, STIM_CI_ARTIFACTS_DIR and STIM_CI_RUN_RESULT. The last
|
|
6196
|
-
|
|
6238
|
+
STIM_CI_METRO_PORT, STIM_CI_ARTIFACTS_DIR and STIM_CI_RUN_RESULT. The last two
|
|
6239
|
+
are empty without --artifacts; otherwise STIM_CI_RUN_RESULT is run.json with the
|
|
6240
|
+
exact public API result, whose facts carry the stable cache appPath. Use that target and check app
|
|
6197
6241
|
readiness; launched can still be bundling or unverified.
|
|
6198
6242
|
|
|
6199
6243
|
result.json preserves the test exit code even if diagnostics or cleanup fail.
|
|
@@ -6213,7 +6257,7 @@ CI=true alone does not change defaults, ownership or coordination. Persist only
|
|
|
6213
6257
|
cache artifacts, not state, claims or device ledgers. Independent homes must
|
|
6214
6258
|
not share a writable filesystem cache because its claims live in the home.
|
|
6215
6259
|
|
|
6216
|
-
The programmatic
|
|
6260
|
+
The programmatic API is import { buildCI, runCI } from '@stim-cli/ci'. See its package
|
|
6217
6261
|
README for result types, cancellation, cache policy, and coordination findings.`
|
|
6218
6262
|
},
|
|
6219
6263
|
"hosted-android": {
|
|
@@ -6222,9 +6266,8 @@ README for result types, cancellation, cache policy, and coordination findings.`
|
|
|
6222
6266
|
|
|
6223
6267
|
If Stim is not installed globally, replace stim with npx stim.
|
|
6224
6268
|
|
|
6225
|
-
stim
|
|
6226
|
-
stim
|
|
6227
|
-
stim doctor
|
|
6269
|
+
stim remote add janics-mac-mini
|
|
6270
|
+
stim remote list
|
|
6228
6271
|
stim android --remote janics-mac-mini --device-profile pixel_7
|
|
6229
6272
|
stim status --json
|
|
6230
6273
|
stim reload android
|
|
@@ -6384,10 +6427,9 @@ and show records already copied here.`
|
|
|
6384
6427
|
|
|
6385
6428
|
If Stim is not installed globally, replace stim with npx stim.
|
|
6386
6429
|
|
|
6387
|
-
stim
|
|
6388
|
-
stim
|
|
6389
|
-
|
|
6390
|
-
stim doctor
|
|
6430
|
+
stim remote add janics-mac-mini
|
|
6431
|
+
# A person there runs the stim-server setup command it printed.
|
|
6432
|
+
stim remote list
|
|
6391
6433
|
stim ios --remote janics-mac-mini --device-type "iPhone 17 Pro" --runtime "iOS 27.0"
|
|
6392
6434
|
stim status --json
|
|
6393
6435
|
stim reload ios
|
|
@@ -6471,7 +6513,7 @@ refuses. The host boots headless and ignores this Mac's iosSimulatorApp setting.
|
|
|
6471
6513
|
--slot, --device-type and --runtime select the hosted simulator; --scheme,
|
|
6472
6514
|
--configuration and --eas-profile select the app as usual. The build targets
|
|
6473
6515
|
the offered simulator architecture, not this machine's. --remote-build remains
|
|
6474
|
-
independent and selects a compatible build worker for a
|
|
6516
|
+
independent and selects a compatible build worker for a cache miss.
|
|
6475
6517
|
|
|
6476
6518
|
The host's own owned devices count toward concurrency.maxDevices and its per-platform cap
|
|
6477
6519
|
(concurrency.maxIosDevices, concurrency.maxAndroidDevices; hosted macOS apps use concurrency.maxMacosApps).
|
|
@@ -8757,7 +8799,12 @@ THE POOL: WHICH DEVICE AN ID-LESS \`--device\` PICKS
|
|
|
8757
8799
|
its own hermesc when Hermes is enabled) into a copy of the artifact,
|
|
8758
8800
|
refreshes an expo-updates manifest as described above, re-signs it and
|
|
8759
8801
|
installs that; any swap failure falls back to a full build
|
|
8760
|
-
rather than ever installing stale JS.
|
|
8802
|
+
rather than ever installing stale JS. A simulator Release build can run on
|
|
8803
|
+
a remote machine (stim guide settings, remote.build), which bundles the JS
|
|
8804
|
+
of the checkout it synced, its gitignored .env.production files included,
|
|
8805
|
+
in the remote machine's environment: an EXPO_PUBLIC_ variable set only in
|
|
8806
|
+
this shell is not applied there. A machine without Xcode cannot swap, so a
|
|
8807
|
+
cached Release app is built again on the remote machine instead. Device logs are still collected, so
|
|
8761
8808
|
\`logs --errors\` answers "does it repro in release/Hermes bytecode".
|
|
8762
8809
|
A run with no \`--device\` installs on the simulator only. \`ios --device\`
|
|
8763
8810
|
builds the \`iphoneos\` slice for a cabled iPhone and keys its cache
|
|
@@ -10050,6 +10097,8 @@ THE ONE CASE GC WILL NOT REAP
|
|
|
10050
10097
|
global, so \`worktree remove\` reclaims them along with everything else in
|
|
10051
10098
|
the global workspace directory. Each build starts its transcript file over, so the log
|
|
10052
10099
|
holds one run and a workspace you keep building in does not accumulate them.
|
|
10100
|
+
A failed build also leaves a copy of its transcript (<log>.failed) that the
|
|
10101
|
+
next failed build replaces; \`gc\` does not trim it, \`worktree remove\` does.
|
|
10053
10102
|
|
|
10054
10103
|
Simulators are large and live in the CoreSimulator device set, not in your
|
|
10055
10104
|
project. If the disk is filling up, Stim's own devices are usually not the
|
|
@@ -10993,11 +11042,12 @@ A remote machine approves this one when a person there runs
|
|
|
10993
11042
|
\`stim-server setup\` with this machine's setup ticket (32 random bytes, 43
|
|
10994
11043
|
base64url characters) in STIM_SETUP_TICKET. Stim Desktop's Add wizard makes the
|
|
10995
11044
|
ticket and sets STIM_ACCESS_TICKET for one \`doctor --fix\` run; without it,
|
|
10996
|
-
\`doctor --fix\` makes one and prints the setup
|
|
11045
|
+
\`stim remote add <machine>\` or \`doctor --fix\` makes one and prints the setup
|
|
11046
|
+
command to run on the worker.
|
|
10997
11047
|
Agents never set STIM_ACCESS_TICKET, never run \`stim-server setup\`, never edit
|
|
10998
11048
|
\`remote.*\`, \`server.*\` or \`hosting.*\` for the user, and never approve requests.
|
|
10999
11049
|
Until setup approves, the worker answers unknown-secret and the entry stays
|
|
11000
|
-
pending; every doctor run tries again. The first connection after approval pins
|
|
11050
|
+
pending; every \`stim remote list\` or doctor run tries again. The first connection after approval pins
|
|
11001
11051
|
the worker's stim-server key in build-machines.json or device-host-machines.json,
|
|
11002
11052
|
and every later connection must prove that key; the tailnet node and address
|
|
11003
11053
|
never decide who the worker is. With --fix, a pending entry is replaced when
|
|
@@ -11013,8 +11063,8 @@ agents do not run them. \`stim guide facts doctor\` lists the codes.
|
|
|
11013
11063
|
REMOTE MACHINES AND PHONE APP
|
|
11014
11064
|
When the user mentions slow builds, a busy machine, a full disk or device limit, or
|
|
11015
11065
|
wanting updates away from the desk, tell them about Stim Desktop > Settings >
|
|
11016
|
-
Remote Machines > Add
|
|
11017
|
-
or a Mac that also hosts simulators) or Phones > Pair a Phone (the Stim phone
|
|
11066
|
+
Remote Machines > Add, or \`stim remote add <machine>\` in their terminal (another
|
|
11067
|
+
machine on the tailnet that builds for this one, or a Mac that also hosts simulators) or Phones > Pair a Phone (the Stim phone
|
|
11018
11068
|
app). Stim Desktop also suggests these itself, at most once a day and never
|
|
11019
11069
|
during a build. Agents only tell the user: they never run \`stim-server setup\`,
|
|
11020
11070
|
never edit \`remote.*\`, \`server.*\` or \`hosting.*\` for the user, and never
|
|
@@ -11023,10 +11073,20 @@ approve requests.
|
|
|
11023
11073
|
REMOTE MACHINES ARE MACHINE-LEVEL
|
|
11024
11074
|
\`remote.machines\` names the remote machines this machine may build on and host owned
|
|
11025
11075
|
simulator sessions on, by MagicDNS name with an optional serve port (default
|
|
11026
|
-
7443). Name each node and port once:
|
|
11076
|
+
7443). Name each node and port once. From any directory:
|
|
11077
|
+
|
|
11078
|
+
stim remote add janics-mac-mini
|
|
11079
|
+
stim remote list
|
|
11080
|
+
stim remote remove janics-mac-mini
|
|
11027
11081
|
|
|
11028
|
-
|
|
11029
|
-
|
|
11082
|
+
\`stim remote add\` appends the machine to the machine-scope list, keeping the
|
|
11083
|
+
entries already there, asks it for build and device-host approval and prints
|
|
11084
|
+
the setup command for it. \`stim remote list\` contacts every listed machine
|
|
11085
|
+
and reports both approvals; it asks nothing new. \`stim remote remove\` drops the
|
|
11086
|
+
entry and forgets this machine's credentials for it; the remote machine keeps
|
|
11087
|
+
its approval until a person there runs the \`stim-server devices revoke\`
|
|
11088
|
+
command it prints. Each takes --json. \`stim settings set remote.machines\`
|
|
11089
|
+
replaces the whole list.
|
|
11030
11090
|
|
|
11031
11091
|
The order of \`remote.machines\` is the priority order for every workload: the
|
|
11032
11092
|
build, simulator, emulator and macOS app each go to the first listed machine that
|
|
@@ -11054,16 +11114,15 @@ addresses are refused, and the running server applies a change within seconds.
|
|
|
11054
11114
|
An interface name follows the interface onto whatever private network it
|
|
11055
11115
|
joins, so name the address on a machine that moves between networks, and an
|
|
11056
11116
|
interface only on a worker that stays put. Then the person runs the setup
|
|
11057
|
-
command \`stim
|
|
11117
|
+
command \`stim remote add\` prints here:
|
|
11058
11118
|
|
|
11059
11119
|
stim settings set server.lanAddresses '["10.0.0.92"]' # on the worker
|
|
11060
|
-
stim
|
|
11061
|
-
stim doctor --fix
|
|
11120
|
+
stim remote add local:10.0.0.92 # on this machine
|
|
11062
11121
|
|
|
11063
11122
|
Every connection runs Stim's Noise handshake, so plain WebSocket carries it
|
|
11064
11123
|
without TLS, and the address never identifies anyone. Nothing on a local network
|
|
11065
11124
|
vouches for the worker's key, so \`stim-server setup\` prints the worker's server
|
|
11066
|
-
key fingerprint and \`stim
|
|
11125
|
+
key fingerprint and \`stim remote list\`, run by a person in a terminal, shows
|
|
11067
11126
|
the fingerprint the worker answered with and pins the key only after they
|
|
11068
11127
|
confirm it matches. Until then the entry reports key-unconfirmed and is not
|
|
11069
11128
|
used. Agents never answer that question. The printed setup command carries the
|
|
@@ -11130,8 +11189,8 @@ machine idle: wait for existing work to finish or stop the relevant sessions bef
|
|
|
11130
11189
|
benchmarking. Agents change these settings only when the user asks them to.
|
|
11131
11190
|
|
|
11132
11191
|
DEVICE HOSTING
|
|
11133
|
-
Only \`doctor --fix\`
|
|
11134
|
-
|
|
11192
|
+
Only \`stim remote add\` and \`doctor --fix\` ask for device-host access: they
|
|
11193
|
+
make a setup ticket and print the command. A person approves by running \`stim-server setup\` on the
|
|
11135
11194
|
worker with that ticket: one ticket, one expiry, one record per capability for
|
|
11136
11195
|
the key that holds the ticket, with a per-grant Y/n question (Enter approves) in a
|
|
11137
11196
|
terminal or \`--yes\` otherwise. Agents never run \`stim-server setup\` or
|
|
@@ -11161,9 +11220,11 @@ Stim sends tokens only to the pinned node's own tailnet address,
|
|
|
11161
11220
|
with its MagicDNS name for TLS and Host routing. A changed node refuses
|
|
11162
11221
|
access, and uncertain replies or unreadable credentials preserve the pin.
|
|
11163
11222
|
An invalid remote.machines setting reports an error and preserves every saved credential.
|
|
11164
|
-
\`
|
|
11165
|
-
|
|
11166
|
-
|
|
11223
|
+
\`stim remote remove\` forgets the credentials of the machine it removes, and
|
|
11224
|
+
\`doctor --fix\` forgets those of entries removed from remote.machines otherwise.
|
|
11225
|
+
For a replaced machine, run \`stim remote remove <machine>\`, then
|
|
11226
|
+
\`stim remote add <machine>\` to request a new approval. A definite revoked or
|
|
11227
|
+
lapsed request can be requested again with \`stim remote add\` or --fix.
|
|
11167
11228
|
An in-progress approval inspection reports busy rather than replacing its
|
|
11168
11229
|
pending token. \`stim macos --remote <placement>\` or \`macos.remote\` runs a macOS
|
|
11169
11230
|
app on an approved remote Mac (stim guide macos), and \`ios.remote\` and
|
|
@@ -11192,10 +11253,11 @@ The same \`remote.machines\` list names the machines that may build for this one
|
|
|
11192
11253
|
"remote": { "machines": ["janics-mac-mini"] }
|
|
11193
11254
|
}
|
|
11194
11255
|
|
|
11195
|
-
\`
|
|
11196
|
-
machine and prints the \`stim-server setup\` command a person runs on that
|
|
11197
|
-
machine to approve this one, under the approval rule above
|
|
11198
|
-
|
|
11256
|
+
\`stim remote add <machine>\`, run in any directory, makes a setup ticket for
|
|
11257
|
+
that machine and prints the \`stim-server setup\` command a person runs on that
|
|
11258
|
+
machine to approve this one, under the approval rule above; \`doctor --fix\`,
|
|
11259
|
+
run in an app directory, does the same for every named machine. The next
|
|
11260
|
+
\`stim remote list\` or doctor run pins the worker's stim-server key in $STIM_HOME/build-machines.json. A build grant is full access
|
|
11199
11261
|
to the account stim-server runs as: project code runs there unsandboxed, so it
|
|
11200
11262
|
can grant itself read and control. Revoking it does not undo what that code
|
|
11201
11263
|
already did. Grant it only to machines you trust.
|
|
@@ -11254,12 +11316,15 @@ that has it (--scope limits it to one).
|
|
|
11254
11316
|
|
|
11255
11317
|
A name never prompts for pairing, tries another remote machine or falls back here.
|
|
11256
11318
|
remote-only refuses instead of building here for a build that cannot leave this
|
|
11257
|
-
machine (device,
|
|
11258
|
-
when no pairing or approval exists.
|
|
11319
|
+
machine (device, Android release, an unknown simulator runtime, the build cache
|
|
11320
|
+
off), and when no pairing or approval exists.
|
|
11259
11321
|
Any refusal or failure is STIM_OFFLOAD_REFUSED with the remote machine and reason.
|
|
11260
|
-
Device,
|
|
11261
|
-
the build cache off, and an unknown simulator runtime cannot build there
|
|
11262
|
-
refuse on a cache miss
|
|
11322
|
+
Device, Android release variant, --remote, Android CAS compiler builds, builds
|
|
11323
|
+
with the build cache off, and an unknown simulator runtime cannot build there
|
|
11324
|
+
and refuse on a cache miss, with a remedy to rerun with --remote-build local or
|
|
11325
|
+
auto. An iOS simulator Release or other non-Debug build can: the remote machine
|
|
11326
|
+
bundles the JS of the synced checkout into the app.
|
|
11327
|
+
Invalid values, unlisted names and unpaired names refuse
|
|
11263
11328
|
at setup before consulting the cache; they create no build record or failed-run
|
|
11264
11329
|
stats. A listed paired name with a cache hit compiles nothing, contacts no worker
|
|
11265
11330
|
and records buildMachine with builtOn absent. Build failures retain the selected
|
|
@@ -11272,8 +11337,8 @@ files the native fingerprint hashes or the Expo config reads, such as .env.local
|
|
|
11272
11337
|
and other Expo .env files, secrets included. Nothing under node_modules and no
|
|
11273
11338
|
build output the fingerprint ignores is sent. A fingerprint-mismatch refusal
|
|
11274
11339
|
names the sources that differ and the files pod install or prebuild rewrote there.
|
|
11275
|
-
Run stim
|
|
11276
|
-
worker approves it by running the stim-server setup command
|
|
11340
|
+
Run stim remote add <machine> to ask for build access if not approved. A person
|
|
11341
|
+
on the worker approves it by running the stim-server setup command it printed, with
|
|
11277
11342
|
its ticket and expiry. Check stim settings get remote.machines,
|
|
11278
11343
|
or rerun with --remote-build auto or --remote-build local. Ctrl-C cancels
|
|
11279
11344
|
the remote build without a local xcodebuild, Gradle or SwiftPM compile.
|
|
@@ -11334,10 +11399,10 @@ machine counts as saturated: each machine applies its own value, and a remote
|
|
|
11334
11399
|
machine past it is skipped like a full one. \`stim status\` shows this machine's
|
|
11335
11400
|
load per core against it, as \`capacity.load\` in JSON.
|
|
11336
11401
|
|
|
11337
|
-
Device,
|
|
11402
|
+
Device builds, Android release variants,
|
|
11338
11403
|
\`--remote eas|proxy\` builds, Android builds with the Apple Clang CAS compiler cache,
|
|
11339
11404
|
and iOS/Android runs with the build cache off, always build here. Hosted iOS
|
|
11340
|
-
|
|
11405
|
+
builds can use a separate --remote-build, targeting the hosting Mac's
|
|
11341
11406
|
architecture and runtime.
|
|
11342
11407
|
macOS uses matching Xcode and macOS SDK (not when --remote-build and --remote name the
|
|
11343
11408
|
same Mac; see stim guide macos), with a per-client SwiftPM dependency
|
|
@@ -12342,9 +12407,9 @@ ON ANOTHER MAC
|
|
|
12342
12407
|
|
|
12343
12408
|
stim macos --remote <machine> or macos.remote builds the Debug app on this Mac and runs it on an
|
|
12344
12409
|
approved remote Mac over the tailnet, without SSH. The Mac must be listed
|
|
12345
|
-
in remote.machines and approved: stim
|
|
12346
|
-
person on that Mac runs stim-server setup with that ticket and
|
|
12347
|
-
settings), and stim
|
|
12410
|
+
in remote.machines and approved: stim remote add <machine> adds it and makes a
|
|
12411
|
+
setup ticket, a person on that Mac runs stim-server setup with that ticket and
|
|
12412
|
+
expiry (guide settings), and stim remote list then pins that Mac's stim-server key. Stim goes ahead
|
|
12348
12413
|
only with the stim-server that proves it holds that key.
|
|
12349
12414
|
A refusal or an unreachable host fails the command; with a named Mac it never launches here
|
|
12350
12415
|
instead.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { d as throwIfCancelled } from "./exec-CGuDzt40.mjs";
|
|
2
|
-
import { l as call, u as connectHost } from "./hosted-client-
|
|
3
|
-
import { a as requestHostedMetro } from "./metro-request-
|
|
4
|
-
import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-
|
|
2
|
+
import { l as call, u as connectHost } from "./hosted-client-DMOOu8vD.mjs";
|
|
3
|
+
import { a as requestHostedMetro } from "./metro-request-O8Q-JvBg.mjs";
|
|
4
|
+
import { a as stopHostedNative, i as prepareHostedNative, r as placeHostedNative } from "./hosted-native-BiiUG_Q6.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 { d as throwIfCancelled, l as cancellableSleep } from "./exec-CGuDzt40.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import { t as BuildConnection } from "./client-
|
|
4
|
-
import {
|
|
2
|
+
import { F as diagnoseConnectFailure, q as resolveEndpoint } from "./config-BA3TgoIP.mjs";
|
|
3
|
+
import { t as BuildConnection } from "./client-KSWIeQLA.mjs";
|
|
4
|
+
import { nt as configuredMachines } from "./support-BJbXovoO.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";
|
|
@@ -28,7 +28,7 @@ function credentialRefusal(message, remedy = "Run stim doctor.") {
|
|
|
28
28
|
function hostingCredential(machine) {
|
|
29
29
|
const configured = configuredMachines();
|
|
30
30
|
if (configured === null) throw credentialRefusal("remote.machines is invalid. Run stim guide settings and correct it.", "Run stim guide settings and correct remote.machines.");
|
|
31
|
-
if (!configured.includes(machine)) throw Object.assign(/* @__PURE__ */ new Error(`${machine} is not in remote.machines.
|
|
31
|
+
if (!configured.includes(machine)) throw Object.assign(/* @__PURE__ */ new Error(`${machine} is not in remote.machines. Run stim remote add ${machine} to add it and ask it for hosting access.`), { code: "STIM_BAD_ARG" });
|
|
32
32
|
let credentials;
|
|
33
33
|
try {
|
|
34
34
|
credentials = readDeviceHostMachines();
|
|
@@ -36,9 +36,9 @@ function hostingCredential(machine) {
|
|
|
36
36
|
throw credentialRefusal("The hosting credentials are unreadable. Run stim doctor.");
|
|
37
37
|
}
|
|
38
38
|
const credential = credentials.find((each) => each.machine === machine);
|
|
39
|
-
if (!credential) throw credentialRefusal(`This machine has not asked ${machine} for hosting access. Run stim
|
|
39
|
+
if (!credential) throw credentialRefusal(`This machine has not asked ${machine} for hosting access. Run stim remote add ${machine}.`, `Run stim remote add ${machine}.`);
|
|
40
40
|
if (credential.state !== "approved") {
|
|
41
|
-
const remedy = `A person on ${machine} runs the stim-server setup command stim
|
|
41
|
+
const remedy = `A person on ${machine} runs the stim-server setup command stim remote add ${machine} printed; then run stim remote list.`;
|
|
42
42
|
throw credentialRefusal(`${machine} has not confirmed hosting access for this machine. ${remedy}`, remedy);
|
|
43
43
|
}
|
|
44
44
|
return credential;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as getExecutor } from "./exec-CGuDzt40.mjs";
|
|
2
|
-
import { E as workspaceDir, k as workspaceLogsDir$1 } from "./workspace-state-
|
|
3
|
-
import { l as phaseLine } from "./command-output-
|
|
4
|
-
import {
|
|
5
|
-
import { n as macosDir } from "./state-
|
|
6
|
-
import { n as androidLogGroups, r as isAndroidCrashText } from "./android-
|
|
2
|
+
import { E as workspaceDir, k as workspaceLogsDir$1 } from "./workspace-state-BhwAJBgA.mjs";
|
|
3
|
+
import { l as phaseLine } from "./command-output-T3cDctRE.mjs";
|
|
4
|
+
import { W as parseMachine$1, dt as deviceSlotFileKey, vt as validateDeviceSlot } from "./config-BA3TgoIP.mjs";
|
|
5
|
+
import { n as macosDir } from "./state-B4B5P4LU.mjs";
|
|
6
|
+
import { n as androidLogGroups, r as isAndroidCrashText } from "./android-5wkcMFDG.mjs";
|
|
7
7
|
import { c as readNdjsonGenerations$1, i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
|
|
8
|
-
import { l as call } from "./hosted-client-
|
|
8
|
+
import { l as call } from "./hosted-client-DMOOu8vD.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 { l as phaseLine } from "./command-output-
|
|
2
|
-
import { n as pullHostedNativeLogs, r as readHostedNativeLogs, t as pullHostedMacosLogs } from "./hosted-logs-
|
|
3
|
-
import { u as connectHost } from "./hosted-client-
|
|
4
|
-
import { n as readHostedIos, t as readHostedAndroid } from "./ios-state-
|
|
5
|
-
import "./hosted-macos-
|
|
1
|
+
import { l as phaseLine } from "./command-output-T3cDctRE.mjs";
|
|
2
|
+
import { n as pullHostedNativeLogs, r as readHostedNativeLogs, t as pullHostedMacosLogs } from "./hosted-logs-CClIktQM.mjs";
|
|
3
|
+
import { u as connectHost } from "./hosted-client-DMOOu8vD.mjs";
|
|
4
|
+
import { n as readHostedIos, t as readHostedAndroid } from "./ios-state-Avwz2cbZ.mjs";
|
|
5
|
+
import "./hosted-macos-D4sDJIbB.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
1
|
import { l as cancellableSleep } from "./exec-CGuDzt40.mjs";
|
|
2
|
-
import { l as phaseLine } from "./command-output-
|
|
3
|
-
import { a as agentAccess, i as closeAgentConnection, o as removeAgentAccess, t as pullHostedMacosLogs } from "./hosted-logs-
|
|
4
|
-
import { n as macosDir } from "./state-
|
|
5
|
-
import { _t as runCancellationSignal } from "./toolchain-
|
|
6
|
-
import { _ as sha256, a as RESERVE_TIMEOUT_MS, b as upload, c as bundleManifest, d as heldNoLonger, g as settle, i as PREPARE_TIMEOUT_MS, l as call, n as INSTALL_TIMEOUT_MS, o as SESSION_TIMEOUT_MS, p as hostedSession, s as attach, u as connectHost, v as stoppedSession, y as unknownSession } from "./hosted-client-
|
|
2
|
+
import { l as phaseLine } from "./command-output-T3cDctRE.mjs";
|
|
3
|
+
import { a as agentAccess, i as closeAgentConnection, o as removeAgentAccess, t as pullHostedMacosLogs } from "./hosted-logs-CClIktQM.mjs";
|
|
4
|
+
import { n as macosDir } from "./state-B4B5P4LU.mjs";
|
|
5
|
+
import { _t as runCancellationSignal } from "./toolchain-DCnWAxQL.mjs";
|
|
6
|
+
import { _ as sha256, a as RESERVE_TIMEOUT_MS, b as upload, c as bundleManifest, d as heldNoLonger, g as settle, i as PREPARE_TIMEOUT_MS, l as call, n as INSTALL_TIMEOUT_MS, o as SESSION_TIMEOUT_MS, p as hostedSession, s as attach, u as connectHost, v as stoppedSession, y as unknownSession } from "./hosted-client-DMOOu8vD.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,11 +1,11 @@
|
|
|
1
1
|
import { l as cancellableSleep, w as withDrainingCancellation } from "./exec-CGuDzt40.mjs";
|
|
2
|
-
import { E as workspaceDir, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-
|
|
3
|
-
import { l as phaseLine } from "./command-output-
|
|
4
|
-
import { a as agentAccess, i as closeAgentConnection, n as pullHostedNativeLogs, o as removeAgentAccess } from "./hosted-logs-
|
|
5
|
-
import { _t as runCancellationSignal } from "./toolchain-
|
|
6
|
-
import { _ as sha256, a as RESERVE_TIMEOUT_MS, b as upload, c as bundleManifest, d as heldNoLonger, g as settle, h as requireHostedAppMode, i as PREPARE_TIMEOUT_MS, l as call, n as INSTALL_TIMEOUT_MS, o as SESSION_TIMEOUT_MS, p as hostedSession, r as OFFER_TIMEOUT_MS, s as attach, t as IMAGE_INSTALL_TIMEOUT_MS, u as connectHost, v as stoppedSession, y as unknownSession } from "./hosted-client-
|
|
7
|
-
import { a as requestHostedMetro, n as closeHostedMetro, o as requireHostedMetro, r as hostedAgentPort } from "./metro-request-
|
|
8
|
-
import { s as writeHostedNative } from "./ios-state-
|
|
2
|
+
import { E as workspaceDir, l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-BhwAJBgA.mjs";
|
|
3
|
+
import { l as phaseLine } from "./command-output-T3cDctRE.mjs";
|
|
4
|
+
import { a as agentAccess, i as closeAgentConnection, n as pullHostedNativeLogs, o as removeAgentAccess } from "./hosted-logs-CClIktQM.mjs";
|
|
5
|
+
import { _t as runCancellationSignal } from "./toolchain-DCnWAxQL.mjs";
|
|
6
|
+
import { _ as sha256, a as RESERVE_TIMEOUT_MS, b as upload, c as bundleManifest, d as heldNoLonger, g as settle, h as requireHostedAppMode, i as PREPARE_TIMEOUT_MS, l as call, n as INSTALL_TIMEOUT_MS, o as SESSION_TIMEOUT_MS, p as hostedSession, r as OFFER_TIMEOUT_MS, s as attach, t as IMAGE_INSTALL_TIMEOUT_MS, u as connectHost, v as stoppedSession, y as unknownSession } from "./hosted-client-DMOOu8vD.mjs";
|
|
7
|
+
import { a as requestHostedMetro, n as closeHostedMetro, o as requireHostedMetro, r as hostedAgentPort } from "./metro-request-O8Q-JvBg.mjs";
|
|
8
|
+
import { s as writeHostedNative } from "./ios-state-Avwz2cbZ.mjs";
|
|
9
9
|
import { randomUUID } from "node:crypto";
|
|
10
10
|
import { readFileSync } from "node:fs";
|
|
11
11
|
import { join } from "node:path";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-
|
|
2
|
-
import { Q as pickDevClientScheme, et as schemesFromInfoPlist } from "./toolchain-
|
|
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-T3cDctRE.mjs";
|
|
2
|
+
import { Q as pickDevClientScheme, et as schemesFromInfoPlist } from "./toolchain-DCnWAxQL.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-BJbXovoO.mjs";
|
|
4
|
+
import { n as ensureWorkspaceStorageSafely } from "./native-runtime-C3_NkUlW.mjs";
|
|
5
|
+
import { t as devClientScheme } from "./dev-client-MO_DjTZr.mjs";
|
|
6
|
+
import { c as writeLastBuild, i as iosFacts, n as cacheDescription, o as lastBuildRecord } from "./ios-project-Cz0S1Sz-.mjs";
|
|
7
|
+
import { d as replaceCollector, u as collectorEntry } from "./dependencies-LH-7k1Vr.mjs";
|
|
8
|
+
import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-BhpUWyN7.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,10 +1,10 @@
|
|
|
1
1
|
import { f as WorkspaceProcessCleanupError, l as cancellableSleep, n as isTimeoutError, t as getExecutor } from "./exec-CGuDzt40.mjs";
|
|
2
2
|
import { n as stripAnsi, r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { it as formatBytes, v as loadConfig$1 } from "./config-BA3TgoIP.mjs";
|
|
4
4
|
import { n as runOperationFileQuiet, t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
|
|
5
|
-
import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-
|
|
6
|
-
import { Ot as recordCreatedDeviceAsync, Tt as forgetCreatedDeviceAsync, pt as isStimOwnedSim } from "./android-
|
|
7
|
-
import { n as signedTailFor } from "./apk-signed-tail-
|
|
5
|
+
import { i as stimDesktopInstalledAsync, n as settingDefault, t as STIM_DESKTOP_OPEN_OPTIONS } from "./stim-desktop-D0P_bzmd.mjs";
|
|
6
|
+
import { Ot as recordCreatedDeviceAsync, Tt as forgetCreatedDeviceAsync, pt as isStimOwnedSim } from "./android-SJx1V3R3.mjs";
|
|
7
|
+
import { n as signedTailFor } from "./apk-signed-tail-eZyXIrnc.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";
|