stim 1.26.0 → 1.28.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.
Files changed (172) hide show
  1. package/dist/{acquire-artifact-DVsvSwf7.mjs → acquire-artifact-CKByBnTD.mjs} +2 -2
  2. package/dist/{act-C-BqJEpu.mjs → act-8iswyfRa.mjs} +319 -126
  3. package/dist/{activity-Lnb_EoRY.mjs → activity-DRMg4_mD.mjs} +6 -6
  4. package/dist/{agent-device-usage-output-DbXy5tg8.mjs → agent-device-usage-output-tE90fDdo.mjs} +5 -5
  5. package/dist/{android-CiNQw3kq.mjs → android-CHmSU4B4.mjs} +101 -45
  6. package/dist/{android-DTAcRwBC.mjs → android-CsPs-7Mg.mjs} +23 -18
  7. package/dist/{android-B5P81yI-.mjs → android-D577ApKG.mjs} +37 -15
  8. package/dist/{android-CSbLRD53.mjs → android-YWCbmkVK.mjs} +5 -5
  9. package/dist/{android-cas-BTVhZ0Qs.mjs → android-cas-_aDifWW0.mjs} +4 -4
  10. package/dist/android-cas-compiler.mjs +1 -1
  11. package/dist/api.d.mts +14 -4
  12. package/dist/api.mjs +39 -29
  13. package/dist/{apk-signed-tail-B46U9hXc.mjs → apk-signed-tail-CQbwM0qO.mjs} +2 -2
  14. package/dist/{artifact-CsAP6AGK.mjs → artifact-DYtHjxsn.mjs} +19 -24
  15. package/dist/{artifact-BxREhAaV.mjs → artifact-bFkfD3vf.mjs} +18 -23
  16. package/dist/{artifact-platform-CMRc0M_r.mjs → artifact-platform-BO2Uvk_A.mjs} +1 -1
  17. package/dist/auto-placement-BVqs8AJi.mjs +350 -0
  18. package/dist/{browser-web-rYPyqhTf.mjs → browser-web-BUaLcafY.mjs} +16 -16
  19. package/dist/{build-DPhApsjV.mjs → build-cQURy_KW.mjs} +35 -31
  20. package/dist/{build-cache-DrXNCy3T.mjs → build-cache-CZULpXVl.mjs} +43 -21
  21. package/dist/{build-plan-DrMMdayj.mjs → build-plan-CxoYfxsc.mjs} +7 -6
  22. package/dist/{cache-manifest-BEZ9Bpl1.mjs → cache-manifest-DEjqGGat.mjs} +1 -1
  23. package/dist/cache-manifest.mjs +1 -1
  24. package/dist/{budget-k2mZGvvk.mjs → ccache-Bm_A1xX9.mjs} +562 -1604
  25. package/dist/{cdp-BG3FJCCx.mjs → cdp-C3svvXiE.mjs} +1 -1
  26. package/dist/{chrome-BvV8ssI3.mjs → chrome-DyDWurWG.mjs} +1 -1
  27. package/dist/{cli-BBKFGOFl.mjs → cli-CpbaLDa7.mjs} +24 -23
  28. package/dist/cli.mjs +1 -1
  29. package/dist/{client-D9CaRks-.mjs → client-YxCer6ab.mjs} +84 -65
  30. package/dist/collector-run.d.mts +10 -9
  31. package/dist/collector-run.mjs +42 -27
  32. package/dist/{command-output-BF5AR2dL.mjs → command-output-C8R1KIvi.mjs} +1 -1
  33. package/dist/{config-BktkY_zC.mjs → config-Cn94Jc0g.mjs} +23 -4
  34. package/dist/{dependencies-Dw6wfQdv.mjs → dependencies-DKeMzwXY.mjs} +108 -60
  35. package/dist/{dependency-state-DFB41vfr.mjs → dependency-state-CojA2o0t.mjs} +14 -7
  36. package/dist/{detached-entry-KmieOKgN.mjs → detached-entry-BPlSaCwC.mjs} +1 -1
  37. package/dist/{dev-client-DXR_tPVY.mjs → dev-client-D-BW5uiq.mjs} +2 -2
  38. package/dist/{device-BK-zwyd_.mjs → device-CgXfbcz5.mjs} +25 -24
  39. package/dist/{device-capacity-DCSvUF0l.mjs → device-capacity-Cd8lMSn3.mjs} +175 -22
  40. package/dist/{device-BcYeHSFu.mjs → device-eeK95Lir.mjs} +16 -16
  41. package/dist/device-host-worker.mjs +22 -20
  42. package/dist/{device-ios-BLGfXQeK.mjs → device-ios-Cc9ulihb.mjs} +251 -23
  43. package/dist/{device-lease-run-BmvIl7bI.mjs → device-lease-run-Mtzp4THX.mjs} +5 -5
  44. package/dist/{device-pool-Dluix4H3.mjs → device-pool-eRz6DtCg.mjs} +3 -3
  45. package/dist/{doctor-Bhg1ii70.mjs → doctor-Bz_ouYAW.mjs} +28 -16
  46. package/dist/{doctor-Cp-BhzTS.mjs → doctor-C2QyhejJ.mjs} +1 -1
  47. package/dist/{doctor-fingerprint-D3a04Mhu.mjs → doctor-fingerprint-o7ZI9YLn.mjs} +1 -1
  48. package/dist/doctor-fingerprint.mjs +1 -1
  49. package/dist/{doctor-watchman-BStK05nt.mjs → doctor-watchman-BTW82PDC.mjs} +5 -5
  50. package/dist/{doctor-OnwP94ne.mjs → doctor-xf7ht-5n.mjs} +76 -32
  51. package/dist/{eas-build-Dsj93iM9.mjs → eas-build-Dm6q68QY.mjs} +4 -4
  52. package/dist/eas-fallback-DajNpxf-.mjs +87 -0
  53. package/dist/{eas-session-ledger-B5vygTiD.mjs → eas-session-ledger-CBFo_Uo1.mjs} +37 -8
  54. package/dist/{error-diagnostics-BOOm9Db7.mjs → error-diagnostics-D1QfyJzQ.mjs} +51 -25
  55. package/dist/{exec-VFRpu1iA.mjs → exec-aULwtNly.mjs} +57 -6
  56. package/dist/{gc-ldgr-hXU.mjs → gc-DM5oMm-J.mjs} +161 -45
  57. package/dist/{gc-C_79zvz4.mjs → gc-PLFwb0k4.mjs} +2 -2
  58. package/dist/{guide-D7K0X6KG.mjs → guide-C4I46XAk.mjs} +674 -213
  59. package/dist/{hosted-android-Bk54ej6n.mjs → hosted-android-DlaKLbW0.mjs} +6 -7
  60. package/dist/{hosted-client-fHO8yqzc.mjs → hosted-client-DDRm9hPJ.mjs} +51 -20
  61. package/dist/{hosted-logs-BfbmDM4M.mjs → hosted-logs-bSebOKbz.mjs} +8 -8
  62. package/dist/{hosted-logs-sync-B0pvmOk-.mjs → hosted-logs-sync-B0c53W_c.mjs} +5 -5
  63. package/dist/{hosted-macos-CPl0OZ9h.mjs → hosted-macos-B7-8Pv4H.mjs} +6 -6
  64. package/dist/{hosted-native-CpDB3-PO.mjs → hosted-native-CDe33CSr.mjs} +22 -18
  65. package/dist/{idle-shutdown-FfxL1KdG.mjs → idle-shutdown-CQ0QwU9J.mjs} +7 -8
  66. package/dist/{ios-WxpDJ5T1.mjs → ios-B1DYuOjh.mjs} +27 -11
  67. package/dist/{ios-B7-lToDu.mjs → ios-B1HvafEG.mjs} +8 -8
  68. package/dist/{ios-ENC4sRPA.mjs → ios-CsRVik64.mjs} +7 -1
  69. package/dist/{ios-device-CsyryvpT.mjs → ios-device-B4elVFKi.mjs} +3 -3
  70. package/dist/{ios-device-B6HK951C.mjs → ios-device-CiBA-er9.mjs} +1 -1
  71. package/dist/{ios-project-Ty5pHl9O.mjs → ios-project-CR4mZ7CH.mjs} +22 -9
  72. package/dist/{ios-signing-4c_qXvQm.mjs → ios-signing-BJzvDPfU.mjs} +2 -2
  73. package/dist/{ios-state-Cw7-WQf2.mjs → ios-state-BPHqMDdZ.mjs} +1 -1
  74. package/dist/{ios-ftxdQbJS.mjs → ios-tg4tp3q1.mjs} +94 -37
  75. package/dist/{js-swap-BMhXYVDS.mjs → js-swap-CVpSW1fn.mjs} +8 -7
  76. package/dist/{launch-DOp8RjDz.mjs → launch-DoySmhjz.mjs} +42 -38
  77. package/dist/lightened-DFAJgfIk.mjs +171 -0
  78. package/dist/{logs-s1dRIG1E.mjs → logs-BGsW7iPe.mjs} +46 -21
  79. package/dist/{logs-dQDki6Tt.mjs → logs-DI5ILkYB.mjs} +7 -7
  80. package/dist/{macos-DBBPNnIA.mjs → macos-Bo9st9Di.mjs} +73 -38
  81. package/dist/{macos-B0VEV3Gf.mjs → macos-C12RMJQF.mjs} +1 -1
  82. package/dist/macos-run.mjs +1 -1
  83. package/dist/maintenance-run.mjs +7 -7
  84. package/dist/{metro-CjC10t6E.mjs → metro-BnhXV2Mj.mjs} +4 -4
  85. package/dist/{metro-gateway-B6_PgD0L.mjs → metro-request-DXyKjVDF.mjs} +26 -47
  86. package/dist/{named-ports-BG0j1X4g.mjs → named-ports-Phoi2POD.mjs} +3 -3
  87. package/dist/{native-android-CL2NGiik.mjs → native-android-vxgtLD7w.mjs} +17 -18
  88. package/dist/{native-gradle-artifact-inputs-btSUulme.mjs → native-gradle-artifact-inputs-BN96IVw8.mjs} +5 -5
  89. package/dist/{native-runtime-Dq3RBcON.mjs → native-runtime-DG4Rodzj.mjs} +9 -8
  90. package/dist/{native-source-D-4Dh4JU.mjs → native-source-D1AzWiuP.mjs} +1 -1
  91. package/dist/{native-xcode-inputs-BW7H8JGu.mjs → native-xcode-inputs-BKarCoKg.mjs} +3 -3
  92. package/dist/{native-xcode-ios-CBXJAxfC.mjs → native-xcode-ios-8A-efGa5.mjs} +17 -17
  93. package/dist/{ndjson-CgE_o3Dl.mjs → ndjson-Dy2W4vRa.mjs} +2 -2
  94. package/dist/offload-worker.mjs +23 -24
  95. package/dist/{operation-exec-CUZifp6Z.mjs → operation-exec-Dp4FuIGR.mjs} +1 -1
  96. package/dist/{ownership-BjYvMNX_.mjs → ownership-DJCq48IJ.mjs} +3 -3
  97. package/dist/{page-CzEA_-5_.mjs → page-CQJlcj3x.mjs} +2 -2
  98. package/dist/{phone-reverses-lmj6kcPm.mjs → phone-reverses-BzTa8g1F.mjs} +18 -4
  99. package/dist/{placement-log-DIFPQAXp.mjs → placement-log-Cvhta5ib.mjs} +3 -3
  100. package/dist/{plan-placement-IiiSQhtz.mjs → plan-placement-WkZdccuN.mjs} +36 -10
  101. package/dist/{ports-C2_w1Z0Z.mjs → ports-UV4mJgyC.mjs} +3 -3
  102. package/dist/{prebuild-gmouvmJZ.mjs → prebuild-k8d_tqOq.mjs} +16 -17
  103. package/dist/{project-BUu6Is4k.mjs → project-Sui52ywT.mjs} +17 -17
  104. package/dist/{pull-request-CbNlkFok.mjs → pull-request-BzLmzAIQ.mjs} +2 -2
  105. package/dist/pull-requests.mjs +1 -1
  106. package/dist/{react-native-android-Cgg99REN.mjs → react-native-android-DANlGGQf.mjs} +32 -26
  107. package/dist/{react-native-build-oNwqF5Wb.mjs → react-native-build-jUHnIfZ9.mjs} +9 -9
  108. package/dist/{react-native-doctor-BhA3KUte.mjs → react-native-doctor-DCWRjS7K.mjs} +6 -6
  109. package/dist/{react-native-ios-B-nf4rjN.mjs → react-native-ios-BwMsFMXi.mjs} +23 -17
  110. package/dist/{recordings-BldzVKq0.mjs → recordings-iy0mkm7b.mjs} +1 -1
  111. package/dist/{registration-CN6nlhcD.mjs → registration-BwCe64PH.mjs} +1 -1
  112. package/dist/{reload-C9OduiNc.mjs → reload-Bj7QyuDy.mjs} +1 -1
  113. package/dist/{reload-CCR7KC_l.mjs → reload-c_uEyc_X.mjs} +16 -16
  114. package/dist/{remote-C8S7FlPF.mjs → remote-DFlpAqdV.mjs} +23 -10
  115. package/dist/{result-7F5hEwQJ.mjs → result-BIcXREyC.mjs} +32 -21
  116. package/dist/{run-BqB0v3pt.mjs → run-y2HwyNvg.mjs} +3 -3
  117. package/dist/{selection-BNPBZ6T5.mjs → selection-CXgM_VK_.mjs} +37 -29
  118. package/dist/{server-bare-A75rDIdD.mjs → server-bare-2N4vSRZG.mjs} +2 -2
  119. package/dist/{server-command-CssKFOD7.mjs → server-command-qneHPcRI.mjs} +6 -6
  120. package/dist/{server-expo-eQfOdydb.mjs → server-expo-Ccm9zB0o.mjs} +4 -4
  121. package/dist/server-expo-WulkyAwT.mjs +2 -0
  122. package/dist/{settings-CosW5X-S.mjs → settings-CY5JZlNN.mjs} +375 -62
  123. package/dist/{settings-OaGQF-ri.mjs → settings-Cfd_Q6ys.mjs} +24 -3
  124. package/dist/settings-payload-DwQiEMCn.mjs +257 -0
  125. package/dist/settings-write-CJpjkeAd.mjs +185 -0
  126. package/dist/settings.schema.json +51 -33
  127. package/dist/{simslim-Bax1qcxu.mjs → simslim-DCQwzoPy.mjs} +2 -2
  128. package/dist/{slot-launch-CYCEhfBY.mjs → slot-launch-BpmanOnk.mjs} +6 -6
  129. package/dist/{stage-jKQ7CP_B.mjs → stage-CmugrSG5.mjs} +2 -2
  130. package/dist/{start-C_wefNKB.mjs → start-CHH3zgIU.mjs} +1 -1
  131. package/dist/{start-_BdJ32cZ.mjs → start-DYLk6GXn.mjs} +27 -22
  132. package/dist/{state-C1i2nMOP.mjs → state-B2QJbDwz.mjs} +4 -4
  133. package/dist/{state-C4OdpOTF.mjs → state-BXC1Lfxw.mjs} +2 -2
  134. package/dist/{stats-tEpEEH-u.mjs → stats-DxKqhcGp.mjs} +5 -5
  135. package/dist/{stats-report-n2U5plhk.mjs → stats-report-B86Cv7Uc.mjs} +1 -1
  136. package/dist/{status-CRXz-Gtj.mjs → status-7ULDEJ1e.mjs} +1 -1
  137. package/dist/{status-DQrqodLj.mjs → status-BHCkOZga.mjs} +51 -28
  138. package/dist/{status-B9M7x4CZ.mjs → status-D_Ljc89p.mjs} +1 -1
  139. package/dist/{status-watch-B5wDIH_o.mjs → status-watch-BmsPqYSU.mjs} +18 -7
  140. package/dist/status-worker.mjs +1 -1
  141. package/dist/{stim-desktop-6Dqp-gjX.mjs → stim-desktop-CbWo21kb.mjs} +2 -2
  142. package/dist/{stop-DRqQVqDJ.mjs → stop-D-dGE9gh.mjs} +21 -20
  143. package/dist/{stop-ySNQHXMG.mjs → stop-DQvE-P76.mjs} +10 -6
  144. package/dist/{stop-CmdNhGlC.mjs → stop-b2pouxAO.mjs} +2 -2
  145. package/dist/supervisor-run.mjs +237 -63
  146. package/dist/{support-BGSCBoib.mjs → support-04IhBUTT.mjs} +6 -6
  147. package/dist/{support-CVOCp0Ft.mjs → support-BtlJKjyQ.mjs} +12 -11
  148. package/dist/{swiftpm-artifact-inputs-CfUzt_0Z.mjs → swiftpm-artifact-inputs-Cj2UpmPN.mjs} +4 -4
  149. package/dist/{swiftpm-macos-x6HPpl_2.mjs → swiftpm-macos-BhF2stxY.mjs} +11 -12
  150. package/dist/{toolchain-J4J8MrAr.mjs → toolchain-mLA_km-b.mjs} +321 -15
  151. package/dist/{toolchain-DoavrvIA.mjs → toolchain-qktiV8xc.mjs} +1 -1
  152. package/dist/{trigger-KVaWWNyn.mjs → trigger-DMou-X7j.mjs} +2 -2
  153. package/dist/trigger-qp2ji5wE.mjs +2 -0
  154. package/dist/{warm-progress-DvhTX_eu.mjs → warm-progress-B0Vpuvpl.mjs} +731 -727
  155. package/dist/{web-Bihbf7-u.mjs → web-BYmK0TjL.mjs} +9 -9
  156. package/dist/web-CrVLVQZY.mjs +2 -0
  157. package/dist/web-run.mjs +9 -9
  158. package/dist/windows-report.mjs +1 -1
  159. package/dist/{workspace-state-pUg3_RRA.mjs → workspace-state-kIZrdlSg.mjs} +3 -3
  160. package/dist/{workspaces-g2lhdBXF.mjs → workspaces-CmOcceDN.mjs} +1879 -74
  161. package/dist/{worktree-BKuklFh_.mjs → worktree-2dk5edza.mjs} +933 -534
  162. package/dist/worktree-nliAoHxB.mjs +2 -0
  163. package/package.json +7 -7
  164. package/dist/ccache-Bx5TbxwG.mjs +0 -143
  165. package/dist/eas-fallback-FwkeqqGi.mjs +0 -381
  166. package/dist/hosted-ios-D55QhYaD.mjs +0 -15
  167. package/dist/native-run-BfIDFKLH.mjs +0 -275
  168. package/dist/server-expo-wvcj5tiZ.mjs +0 -2
  169. package/dist/settings-write-QjYfSrjF.mjs +0 -360
  170. package/dist/trigger-DzJu208Q.mjs +0 -2
  171. package/dist/web-BFLueSh-.mjs +0 -2
  172. package/dist/worktree-Bm4cb-nU.mjs +0 -2
@@ -1,12 +1,12 @@
1
- import { C as reportSignal, b as operationState } from "./exec-VFRpu1iA.mjs";
2
- import { M as withDirLock$1 } from "./workspace-state-pUg3_RRA.mjs";
3
- import { $ as findPeer$1, Q as endpoint, X as diagnoseTailscale, Y as diagnoseOutcome, _ as loadConfig$1, ct as tailscaleStatusAsync, d as getConfigDir, dt as readHostPermissions, it as realIo, lt as diagnosisFinding, nt as parseMachine$1, rt as reachMachine, st as setupRemedy, tt as outdatedServer, ut as notOnTailnetDiagnosis } from "./config-BktkY_zC.mjs";
4
- import { o as cocoapodsInstall } from "./toolchain-J4J8MrAr.mjs";
1
+ import { C as reportSignal, b as operationState } from "./exec-aULwtNly.mjs";
2
+ import { M as withDirLock$1 } from "./workspace-state-kIZrdlSg.mjs";
3
+ import { $ as endpoint$1, X as diagnoseOutcome, Z as diagnoseTailscale, _ as loadConfig$1, at as realIo, ct as setupRemedy, d as getConfigDir, dt as notOnTailnetDiagnosis, et as findPeer$1, ft as readHostPermissions, it as reachMachine, lt as tailscaleStatusAsync, nt as outdatedServer, rt as parseMachine$1, ut as diagnosisFinding } from "./config-Cn94Jc0g.mjs";
4
+ import { o as cocoapodsInstall } from "./toolchain-mLA_km-b.mjs";
5
5
  import { releaseClaim, tryAcquireClaim } from "@stim-cli/core/ownership-claim";
6
6
  import { mkdirSync, renameSync, rmSync, writeFileSync } from "node:fs";
7
7
  import { hostname } from "node:os";
8
8
  import { ambientContext, ambientEnv, withDirLockAsync } from "@stim-cli/core";
9
- import { MACHINE_CREDENTIALS_VERSION, OFFLOAD_MODES, acceptsShape, automaticMachineEnabled, buildMachinesFile, buildMachinesLock, cannotHost, deviceHostMachinesClaims, deviceHostMachinesFile, deviceHostMachinesLock, isJsonObject, parseMachine, readBuildMachines, readDeviceHostMachines, settingDefinition } from "@stim-cli/core/state";
9
+ import { MACHINE_CREDENTIALS_VERSION, acceptsShape, automaticMachineEnabled, buildMachinesFile, buildMachinesLock, cannotHost, deviceHostMachinesClaims, deviceHostMachinesFile, deviceHostMachinesLock, isJsonObject, parseMachine, placementWord, readBuildMachines, readDeviceHostMachines, settingDefinition } from "@stim-cli/core/state";
10
10
  import { InvalidArgumentError } from "commander";
11
11
  //#region src/device-host/machines.ts
12
12
  function note$1(title, detail, fix = null) {
@@ -201,7 +201,7 @@ async function inspectDeviceHostMachines({ fix, version = "<version>", tickets =
201
201
  const outcome = await reachMachine({
202
202
  machine,
203
203
  access: "device-host",
204
- endpoint: endpoint(peer, parsed.port),
204
+ endpoint: endpoint$1(peer, parsed.port),
205
205
  address: peer.dnsName,
206
206
  credential,
207
207
  other: () => readBuildMachines().find((each) => each.machine === machine),
@@ -283,7 +283,7 @@ async function inspectDeviceHostMachines({ fix, version = "<version>", tickets =
283
283
  entry: machine,
284
284
  peer,
285
285
  port: parsed.port,
286
- target: endpoint(peer, parsed.port),
286
+ target: endpoint$1(peer, parsed.port),
287
287
  reason: outcome.reason,
288
288
  transport: outcome.transport
289
289
  });
@@ -417,12 +417,14 @@ function predictedRefusal(entry, problems) {
417
417
  remedy: known.map((problem) => problemFix(problem, entry)).join("\n")
418
418
  };
419
419
  }
420
- function offloadFindings(entry, problems, notes) {
420
+ function offloadFindings(entry, problems, notes, operation) {
421
+ const selected = operation?.env.STIM_REMOTE_BUILD?.trim() || loadConfig$1()?.remote?.build;
422
+ const consequence = typeof selected === "string" && placementWord(selected) === "remote-only" ? "remote.build is remote-only, so automatic builds skip this machine and refuse rather than build on this Mac:" : "Builds fall back to this machine:";
421
423
  return [...problems.map((problem) => ({
422
424
  code: `build-machine-${problem.code}`,
423
425
  level: TRANSIENT.has(problem.code) ? "note" : "cost",
424
426
  title: `Remote machine ${entry} ${PROBLEM_TITLES[problem.code]}`,
425
- detail: `Builds fall back to this machine: ${problem.reason}.${problem.code === "cocoapods" ? ` A build sent there with --remote-build ${entry} still runs.` : ""}`,
427
+ detail: `${consequence} ${problem.reason}.${problem.code === "cocoapods" ? ` A build sent there with --remote-build ${entry} still runs.` : ""}`,
426
428
  fix: problemFix(problem, entry)
427
429
  })), ...notes.map((each) => ({
428
430
  code: `build-machine-${each.code}`,
@@ -466,7 +468,7 @@ async function inspectMachine(entry, status, deviceName, fix, version, tickets,
466
468
  const outcome = await reachMachine({
467
469
  machine: entry,
468
470
  access: "build",
469
- endpoint: endpoint(peer, parsed.port),
471
+ endpoint: endpoint$1(peer, parsed.port),
470
472
  address: peer.dnsName,
471
473
  credential,
472
474
  other,
@@ -552,7 +554,7 @@ async function inspectMachine(entry, status, deviceName, fix, version, tickets,
552
554
  entry,
553
555
  peer,
554
556
  port: parsed.port,
555
- target: endpoint(peer, parsed.port),
557
+ target: endpoint$1(peer, parsed.port),
556
558
  reason: outcome.reason,
557
559
  transport: outcome.transport
558
560
  });
@@ -589,7 +591,7 @@ async function inspectMachine(entry, status, deviceName, fix, version, tickets,
589
591
  ...capacity ? { capacity } : {}
590
592
  },
591
593
  finding: null,
592
- extra: offloadFindings(entry, problems, notes)
594
+ extra: offloadFindings(entry, problems, notes, operation)
593
595
  };
594
596
  }
595
597
  /**
@@ -643,6 +645,13 @@ const FINGERPRINT_MISMATCH_REMEDY = "The build Mac fingerprints the synced check
643
645
  function fingerprintMismatchRemedy(reason) {
644
646
  return reason.startsWith("fingerprint-mismatch: the checkout there ") ? FINGERPRINT_MISMATCH_REMEDY : void 0;
645
647
  }
648
+ const MISSING_PACKAGE_MANAGER = /^deps-failed: spawn (pnpm|yarn|npm) ENOENT/;
649
+ /** The remedy for a worker whose dependency install could not start its package manager; undefined for any other reason. */
650
+ function missingPackageManagerRemedy(machine, reason) {
651
+ const tool = MISSING_PACKAGE_MANAGER.exec(reason)?.[1];
652
+ if (!tool) return void 0;
653
+ return `${machine} has no ${tool} on the PATH of its stim-server service, and the app's lockfile needs it. ${tool === "npm" ? "Reinstall Node there, which ships npm" : `Install it with \`corepack enable ${tool}\` or \`npm install --global ${tool}\`, using sudo where Node is installed system-wide`}, then run the same command again, or rerun with --remote-build auto or --remote-build local.`;
654
+ }
646
655
  const PODS_FAILED_PREFIX = "pod install failed: ";
647
656
  /** The reason a failed worker job is reported with: a `pods-failed` code reads as a failed pod install. */
648
657
  function workerFailureReason(code, message) {
@@ -663,17 +672,15 @@ function podsFailedRemedy(machine, reason, localCocoapods) {
663
672
  var OffloadRefusal = class extends Error {
664
673
  code = "STIM_OFFLOAD_REFUSED";
665
674
  remedy;
666
- constructor(machine, reason, remedy = "Run stim doctor --fix to ask for build access if not paired; it prints the stim-server setup command a person runs on the worker to approve this machine. Check stim settings get remote.machines, or rerun with --remote-build auto or --remote-build local.") {
675
+ constructor(machine, reason, remedy = "Run stim doctor --fix to ask for build access if not paired; it prints the stim-server setup command a person runs on the worker to approve this machine. Check stim settings get remote.machines, or rerun with --remote-build auto, remote or local.") {
667
676
  super(reason.startsWith(`${machine}: `) ? reason : `${machine}: ${reason}`);
668
677
  this.remedy = remedy;
669
678
  }
670
679
  };
671
680
  function resolveBuildMachine(flag, env, setting) {
672
681
  const selected = flag ?? (env?.trim() || void 0) ?? setting ?? "auto";
673
- if (typeof selected !== "string" || !selected.trim() || !parseMachine(selected)) throw Object.assign(/* @__PURE__ */ new Error("--remote-build / remote.build must be auto, local, or a tailnet machine name."), { code: "STIM_BAD_ARG" });
674
- const trimmed = selected.trim();
675
- const reserved = trimmed.toLowerCase();
676
- return reserved === "auto" || reserved === "local" ? reserved : trimmed;
682
+ if (typeof selected !== "string" || !selected.trim() || !parseMachine(selected)) throw Object.assign(/* @__PURE__ */ new Error("--remote-build / remote.build must be local, auto, remote, remote-only, or a tailnet machine name."), { code: "STIM_BAD_ARG" });
683
+ return placementWord(selected) ?? selected.trim();
677
684
  }
678
685
  function parseBuildMachineOption(value) {
679
686
  try {
@@ -682,11 +689,18 @@ function parseBuildMachineOption(value) {
682
689
  throw new InvalidArgumentError(error.message);
683
690
  }
684
691
  }
685
- function requireLocalBuild(selected) {
686
- if (selected === "auto" && !automaticMachineEnabled("build", "local")) throw new OffloadRefusal("auto", "local is disabled in remote.buildPoolDisabled; enable it or select a machine explicitly");
692
+ function automaticBuild(selected) {
693
+ const word = placementWord(selected);
694
+ return word !== null && word !== "local";
695
+ }
696
+ function requireLocalBuild(selected, reason) {
697
+ const word = placementWord(selected);
698
+ const lead = reason ? `${reason}; ` : "";
699
+ if (word === "remote-only") throw new OffloadRefusal(selected, `${lead}remote-only never builds on this machine`);
700
+ if ((word === "auto" || word === "remote") && !automaticMachineEnabled("build", "local")) throw new OffloadRefusal(selected, `${lead}local is disabled in remote.buildPoolDisabled; enable it or select a machine explicitly`);
687
701
  }
688
702
  function namedBuildMachine(selected) {
689
- return selected !== "auto" && selected !== "local";
703
+ return placementWord(selected) === null;
690
704
  }
691
705
  function requireConfiguredMachine(selected, machines) {
692
706
  if (!namedBuildMachine(selected)) return selected;
@@ -703,16 +717,10 @@ const settingSource = (flag, env, setting) => flag !== void 0 ? "flag" : env?.tr
703
717
  /** The settings that decide where a build runs, with the layer each value came from, for this run's `--remote-build`. */
704
718
  function buildPlacementSettings(selected) {
705
719
  const flag = operationState(ambientContext()).buildMachineFlag;
706
- const remote = loadConfig$1()?.remote;
707
- const rawMode = ambientEnv().STIM_REMOTE_BUILD_MODE || remote?.buildMode;
708
720
  return [{
709
721
  key: "remote.build",
710
722
  value: selected,
711
- from: settingSource(flag, ambientEnv().STIM_REMOTE_BUILD, remote?.build)
712
- }, {
713
- key: "remote.buildMode",
714
- value: selected === "local" ? "off" : OFFLOAD_MODES.includes(rawMode) ? rawMode : "auto",
715
- from: settingSource(void 0, ambientEnv().STIM_REMOTE_BUILD_MODE, remote?.buildMode)
723
+ from: settingSource(flag, ambientEnv().STIM_REMOTE_BUILD, loadConfig$1()?.remote?.build)
716
724
  }];
717
725
  }
718
726
  function resolveBuildPlacement(flag) {
@@ -730,10 +738,10 @@ function resolveBuildPlacement(flag) {
730
738
  failure: {
731
739
  code: error.code,
732
740
  message: error.message,
733
- remedy: error instanceof OffloadRefusal ? error.remedy : "Pass --remote-build auto, local, or an entry from stim settings get remote.machines."
741
+ remedy: error instanceof OffloadRefusal ? error.remedy : "Pass --remote-build local, auto, remote, remote-only, or an entry from stim settings get remote.machines."
734
742
  }
735
743
  };
736
744
  }
737
745
  }
738
746
  //#endregion
739
- export { parseBuildMachineOption as a, resolveBuildMachine as c, inspectBuildMachines as d, pairedMachines as f, inspectDeviceHostMachines as g, hostingMachines as h, namedBuildMachine as i, resolveBuildPlacement as l, configuredMachines as m, buildPlacementSettings as n, podsFailedRemedy as o, predictedRefusal as p, fingerprintMismatchRemedy as r, requireLocalBuild as s, OffloadRefusal as t, workerFailureReason as u };
747
+ export { hostingMachines as _, missingPackageManagerRemedy as a, podsFailedRemedy as c, resolveBuildPlacement as d, workerFailureReason as f, configuredMachines as g, predictedRefusal as h, fingerprintMismatchRemedy as i, requireLocalBuild as l, pairedMachines as m, automaticBuild as n, namedBuildMachine as o, inspectBuildMachines as p, buildPlacementSettings as r, parseBuildMachineOption as s, OffloadRefusal as t, resolveBuildMachine as u, inspectDeviceHostMachines as v };
@@ -1,5 +1,5 @@
1
- import { O as __commonJSMin, k as __require, t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
- import { J as resolveProjectSettings } from "./settings-CosW5X-S.mjs";
1
+ import { O as __commonJSMin, k as __require, t as getExecutor } from "./exec-aULwtNly.mjs";
2
+ import { X as resolveProjectSettings } from "./settings-CY5JZlNN.mjs";
3
3
  import { c as registerMetroStore, f as resolveMetroSharedCache, n as supervisorError, r as appendCacheStore, s as metroStoreRoot } from "./errors-DHm_U5gv.mjs";
4
4
  import { createRequire } from "node:module";
5
5
  import { isAbsolute, join, relative, sep } from "node:path";
@@ -1,9 +1,9 @@
1
- import { t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
- import { n as METRO_COMMAND_PORT } from "./settings-CosW5X-S.mjs";
3
- import { T as MODE_COMMAND } from "./project-BUu6Is4k.mjs";
4
- import { f as signalProcessTree } from "./metro-CjC10t6E.mjs";
5
- import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
6
- import { g as projectNodeLine, p as recordFromLine, v as withProjectNode, y as superviseChildServer } from "./server-expo-eQfOdydb.mjs";
1
+ import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
+ import { n as METRO_COMMAND_PORT } from "./settings-CY5JZlNN.mjs";
3
+ import { T as MODE_COMMAND } from "./project-Sui52ywT.mjs";
4
+ import { f as signalProcessTree } from "./metro-BnhXV2Mj.mjs";
5
+ import { i as createNdjsonWriter } from "./ndjson-Dy2W4vRa.mjs";
6
+ import { g as projectNodeLine, p as recordFromLine, v as withProjectNode, y as superviseChildServer } from "./server-expo-Ccm9zB0o.mjs";
7
7
  import { join } from "node:path";
8
8
  import { LOG_ROTATE_BYTES } from "@stim-cli/core";
9
9
  //#region src/supervisor/server-command.ts
@@ -1,8 +1,8 @@
1
- import { o as cancellableSleep, t as getExecutor } from "./exec-VFRpu1iA.mjs";
1
+ import { o as cancellableSleep, t as getExecutor } from "./exec-aULwtNly.mjs";
2
2
  import { n as stripAnsi, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
- import { J as resolveProjectSettings } from "./settings-CosW5X-S.mjs";
4
- import { C as resolvePackageJson } from "./project-BUu6Is4k.mjs";
5
- import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
3
+ import { X as resolveProjectSettings } from "./settings-CY5JZlNN.mjs";
4
+ import { C as resolvePackageJson } from "./project-Sui52ywT.mjs";
5
+ import { i as createNdjsonWriter } from "./ndjson-Dy2W4vRa.mjs";
6
6
  import { a as expoMetroStoreEnv, c as registerMetroStore, f as resolveMetroSharedCache, i as expoMetroConfigPath, n as supervisorError, o as metroStoreConfirmedRoot, s as metroStoreRoot } from "./errors-DHm_U5gv.mjs";
7
7
  import { accessSync, constants, existsSync, readFileSync } from "node:fs";
8
8
  import { delimiter, dirname, join } from "node:path";
@@ -0,0 +1,2 @@
1
+ import { m as startExpoServer } from "./server-expo-Ccm9zB0o.mjs";
2
+ export { startExpoServer };