stim 1.26.0 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/{acquire-artifact-DVsvSwf7.mjs → acquire-artifact-BKN2Yuhg.mjs} +2 -2
  2. package/dist/{act-C-BqJEpu.mjs → act-ROviTF_t.mjs} +297 -122
  3. package/dist/{activity-Lnb_EoRY.mjs → activity-Cd-ysFes.mjs} +6 -6
  4. package/dist/{agent-device-usage-output-DbXy5tg8.mjs → agent-device-usage-output-C5nCKWp9.mjs} +5 -5
  5. package/dist/{android-CSbLRD53.mjs → android--HBgpvpW.mjs} +5 -5
  6. package/dist/{android-CiNQw3kq.mjs → android-Cd6w7_qw.mjs} +96 -43
  7. package/dist/{android-B5P81yI-.mjs → android-Deb9X3_Y.mjs} +37 -15
  8. package/dist/{android-DTAcRwBC.mjs → android-DriNoAVy.mjs} +23 -18
  9. package/dist/{android-cas-BTVhZ0Qs.mjs → android-cas-D5e6ecUg.mjs} +4 -4
  10. package/dist/android-cas-compiler.mjs +1 -1
  11. package/dist/api.d.mts +13 -3
  12. package/dist/api.mjs +39 -29
  13. package/dist/{apk-signed-tail-B46U9hXc.mjs → apk-signed-tail-BHQHx3Rm.mjs} +2 -2
  14. package/dist/{artifact-BxREhAaV.mjs → artifact-0AGJYB9O.mjs} +18 -23
  15. package/dist/{artifact-CsAP6AGK.mjs → artifact-faemIZv5.mjs} +19 -24
  16. package/dist/{artifact-platform-CMRc0M_r.mjs → artifact-platform-BO2Uvk_A.mjs} +1 -1
  17. package/dist/auto-placement-z-H5pJza.mjs +350 -0
  18. package/dist/{browser-web-rYPyqhTf.mjs → browser-web-slD8AvLp.mjs} +16 -16
  19. package/dist/{build-cache-DrXNCy3T.mjs → build-cache-gBJ-WKzA.mjs} +43 -21
  20. package/dist/{build-DPhApsjV.mjs → build-hS0QyFlQ.mjs} +35 -31
  21. package/dist/{build-plan-DrMMdayj.mjs → build-plan-CBqYbzYM.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-BWTze1Ls.mjs} +560 -1603
  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-ftXDLto1.mjs} +24 -23
  28. package/dist/cli.mjs +1 -1
  29. package/dist/{client-D9CaRks-.mjs → client-xsdxrhWA.mjs} +48 -62
  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-Dj-WT4BP.mjs} +1 -1
  33. package/dist/{config-BktkY_zC.mjs → config-Cn94Jc0g.mjs} +23 -4
  34. package/dist/{dependencies-Dw6wfQdv.mjs → dependencies-BGokZ-Ng.mjs} +108 -60
  35. package/dist/{dependency-state-DFB41vfr.mjs → dependency-state-C3OtgG94.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-BMca82xo.mjs} +2 -2
  38. package/dist/{device-BcYeHSFu.mjs → device-BJm0irrq.mjs} +16 -16
  39. package/dist/{device-capacity-DCSvUF0l.mjs → device-capacity-6LP7QsaA.mjs} +101 -16
  40. package/dist/device-host-worker.mjs +19 -19
  41. package/dist/{device-ios-BLGfXQeK.mjs → device-ios-534c14fz.mjs} +251 -23
  42. package/dist/{device-lease-run-BmvIl7bI.mjs → device-lease-run-DwsGfjUN.mjs} +5 -5
  43. package/dist/{device-pool-Dluix4H3.mjs → device-pool-BnQqvs6o.mjs} +3 -3
  44. package/dist/{device-BK-zwyd_.mjs → device-tM41-TUq.mjs} +25 -24
  45. package/dist/{doctor-Cp-BhzTS.mjs → doctor-Dbx1ZpD2.mjs} +1 -1
  46. package/dist/{doctor-Bhg1ii70.mjs → doctor-DyqE9n1J.mjs} +28 -16
  47. package/dist/{doctor-OnwP94ne.mjs → doctor-F-3VUUyN.mjs} +76 -32
  48. package/dist/{doctor-fingerprint-D3a04Mhu.mjs → doctor-fingerprint-o7ZI9YLn.mjs} +1 -1
  49. package/dist/doctor-fingerprint.mjs +1 -1
  50. package/dist/{doctor-watchman-BStK05nt.mjs → doctor-watchman-CxDbyrrt.mjs} +5 -5
  51. package/dist/{eas-build-Dsj93iM9.mjs → eas-build-CjNSWmjo.mjs} +4 -4
  52. package/dist/eas-fallback-9fqb46kW.mjs +87 -0
  53. package/dist/{eas-session-ledger-B5vygTiD.mjs → eas-session-ledger-DrP4OuuM.mjs} +6 -6
  54. package/dist/{error-diagnostics-BOOm9Db7.mjs → error-diagnostics-snej9k4j.mjs} +51 -25
  55. package/dist/{exec-VFRpu1iA.mjs → exec-aULwtNly.mjs} +57 -6
  56. package/dist/{gc-C_79zvz4.mjs → gc-BRwAY3qT.mjs} +2 -2
  57. package/dist/{gc-ldgr-hXU.mjs → gc-CGZ1Yg88.mjs} +160 -45
  58. package/dist/{guide-D7K0X6KG.mjs → guide-_rfEh_zM.mjs} +580 -183
  59. package/dist/{hosted-android-Bk54ej6n.mjs → hosted-android-BMKzUNnY.mjs} +4 -4
  60. package/dist/{hosted-client-fHO8yqzc.mjs → hosted-client-D7Pk_Oo1.mjs} +12 -8
  61. package/dist/{hosted-logs-BfbmDM4M.mjs → hosted-logs-B1gqQuva.mjs} +8 -8
  62. package/dist/{hosted-logs-sync-B0pvmOk-.mjs → hosted-logs-sync-Dg3qrZmV.mjs} +5 -5
  63. package/dist/{hosted-macos-CPl0OZ9h.mjs → hosted-macos-B9w4H8hc.mjs} +6 -6
  64. package/dist/{hosted-native-CpDB3-PO.mjs → hosted-native-CdgaiuyP.mjs} +17 -16
  65. package/dist/{idle-shutdown-FfxL1KdG.mjs → idle-shutdown-Cbvo5KEh.mjs} +7 -8
  66. package/dist/{ios-ftxdQbJS.mjs → ios-B5HlVMhQ.mjs} +92 -37
  67. package/dist/{ios-B7-lToDu.mjs → ios-Bk4mWbtS.mjs} +8 -8
  68. package/dist/{ios-ENC4sRPA.mjs → ios-CsRVik64.mjs} +7 -1
  69. package/dist/{ios-WxpDJ5T1.mjs → ios-E26qSpkb.mjs} +27 -11
  70. package/dist/{ios-device-CsyryvpT.mjs → ios-device-C_QkIf1Z.mjs} +3 -3
  71. package/dist/{ios-device-B6HK951C.mjs → ios-device-CiBA-er9.mjs} +1 -1
  72. package/dist/{ios-project-Ty5pHl9O.mjs → ios-project-D8Jcy_br.mjs} +22 -9
  73. package/dist/{ios-signing-4c_qXvQm.mjs → ios-signing-BJzvDPfU.mjs} +2 -2
  74. package/dist/{ios-state-Cw7-WQf2.mjs → ios-state-BZ03NFgF.mjs} +1 -1
  75. package/dist/{js-swap-BMhXYVDS.mjs → js-swap-Dg2a945i.mjs} +8 -7
  76. package/dist/{launch-DOp8RjDz.mjs → launch-CRyBeNsA.mjs} +42 -38
  77. package/dist/lightened-BCsdAGj_.mjs +171 -0
  78. package/dist/{logs-dQDki6Tt.mjs → logs-CC_-ZzEE.mjs} +7 -7
  79. package/dist/{logs-s1dRIG1E.mjs → logs-aJQb-RDg.mjs} +46 -21
  80. package/dist/{macos-B0VEV3Gf.mjs → macos-BGmTpnv9.mjs} +1 -1
  81. package/dist/{macos-DBBPNnIA.mjs → macos-DlCBhMw5.mjs} +73 -38
  82. package/dist/macos-run.mjs +1 -1
  83. package/dist/maintenance-run.mjs +7 -7
  84. package/dist/{metro-CjC10t6E.mjs → metro-CvyD-xwe.mjs} +4 -4
  85. package/dist/{metro-gateway-B6_PgD0L.mjs → metro-gateway-BnHdqMO_.mjs} +3 -3
  86. package/dist/{named-ports-BG0j1X4g.mjs → named-ports-BCyMWA6b.mjs} +3 -3
  87. package/dist/{native-android-CL2NGiik.mjs → native-android-DlpxCyOP.mjs} +17 -18
  88. package/dist/{native-gradle-artifact-inputs-btSUulme.mjs → native-gradle-artifact-inputs-C13qT7R_.mjs} +5 -5
  89. package/dist/{native-runtime-Dq3RBcON.mjs → native-runtime-DqaIBO5w.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-B1W8SrxB.mjs} +3 -3
  92. package/dist/{native-xcode-ios-CBXJAxfC.mjs → native-xcode-ios-QPP0Rm68.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-Bx-0cku-.mjs} +3 -3
  97. package/dist/{page-CzEA_-5_.mjs → page-CQJlcj3x.mjs} +2 -2
  98. package/dist/{phone-reverses-lmj6kcPm.mjs → phone-reverses-C9yAaKEv.mjs} +18 -4
  99. package/dist/{placement-log-DIFPQAXp.mjs → placement-log-BXUbiZM6.mjs} +3 -3
  100. package/dist/{plan-placement-IiiSQhtz.mjs → plan-placement-UxnQjv5Z.mjs} +36 -10
  101. package/dist/{ports-C2_w1Z0Z.mjs → ports-uUrghqWN.mjs} +3 -3
  102. package/dist/{prebuild-gmouvmJZ.mjs → prebuild-BDpToDgR.mjs} +16 -17
  103. package/dist/{project-BUu6Is4k.mjs → project-DYj-HVx6.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-DDBccgJw.mjs} +32 -26
  107. package/dist/{react-native-build-oNwqF5Wb.mjs → react-native-build-DaK2IFyP.mjs} +9 -9
  108. package/dist/{react-native-doctor-BhA3KUte.mjs → react-native-doctor-B-Mw6DcR.mjs} +6 -6
  109. package/dist/{react-native-ios-B-nf4rjN.mjs → react-native-ios-DjYwUF9U.mjs} +23 -17
  110. package/dist/{recordings-BldzVKq0.mjs → recordings-C20iUZfp.mjs} +1 -1
  111. package/dist/{registration-CN6nlhcD.mjs → registration-BwCe64PH.mjs} +1 -1
  112. package/dist/{reload-C9OduiNc.mjs → reload-DJBeF_rC.mjs} +1 -1
  113. package/dist/{reload-CCR7KC_l.mjs → reload-fUdkH2_p.mjs} +16 -16
  114. package/dist/{remote-C8S7FlPF.mjs → remote-y6n99WMW.mjs} +22 -9
  115. package/dist/{result-7F5hEwQJ.mjs → result-CTqBw2Te.mjs} +32 -21
  116. package/dist/{run-BqB0v3pt.mjs → run-DaCeNKRm.mjs} +3 -3
  117. package/dist/{selection-BNPBZ6T5.mjs → selection-Bs8phwhN.mjs} +37 -29
  118. package/dist/{server-bare-A75rDIdD.mjs → server-bare-BOh-iZEj.mjs} +2 -2
  119. package/dist/{server-command-CssKFOD7.mjs → server-command-8CuA51Cv.mjs} +6 -6
  120. package/dist/{server-expo-eQfOdydb.mjs → server-expo-ABQs2XFA.mjs} +4 -4
  121. package/dist/server-expo-Ba_Y21vB.mjs +2 -0
  122. package/dist/{settings-CosW5X-S.mjs → settings-BDVI8Ivc.mjs} +331 -62
  123. package/dist/{settings-OaGQF-ri.mjs → settings-CMHhQNwI.mjs} +24 -3
  124. package/dist/settings-payload-cm60Zhib.mjs +257 -0
  125. package/dist/settings-write-BdNRLlBn.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-0l7RqSpr.mjs} +6 -6
  129. package/dist/{stage-jKQ7CP_B.mjs → stage-F4cAfJGi.mjs} +2 -2
  130. package/dist/{start-C_wefNKB.mjs → start-DcqnF9p8.mjs} +1 -1
  131. package/dist/{start-_BdJ32cZ.mjs → start-DrPwER_2.mjs} +27 -22
  132. package/dist/{state-C1i2nMOP.mjs → state-BX1y5syV.mjs} +4 -4
  133. package/dist/{state-C4OdpOTF.mjs → state-CZxLyetD.mjs} +2 -2
  134. package/dist/{stats-tEpEEH-u.mjs → stats-GxuCbles.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-BfnK9pUd.mjs} +25 -25
  138. package/dist/{status-B9M7x4CZ.mjs → status-Bj7ZYvvc.mjs} +1 -1
  139. package/dist/{status-watch-B5wDIH_o.mjs → status-watch-BfabQn03.mjs} +5 -5
  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-ySNQHXMG.mjs → stop-CH79S3IZ.mjs} +5 -5
  143. package/dist/{stop-DRqQVqDJ.mjs → stop-D-EAr25B.mjs} +21 -20
  144. package/dist/{stop-CmdNhGlC.mjs → stop-x1Yu3He4.mjs} +2 -2
  145. package/dist/supervisor-run.mjs +17 -17
  146. package/dist/{support-CVOCp0Ft.mjs → support-Be0UeVZU.mjs} +10 -10
  147. package/dist/{support-BGSCBoib.mjs → support-CNg_YsOk.mjs} +6 -6
  148. package/dist/{swiftpm-artifact-inputs-CfUzt_0Z.mjs → swiftpm-artifact-inputs-uPqYvGBv.mjs} +4 -4
  149. package/dist/{swiftpm-macos-x6HPpl_2.mjs → swiftpm-macos-Ch4YjY_A.mjs} +11 -12
  150. package/dist/{toolchain-J4J8MrAr.mjs → toolchain-CbCG6C5Z.mjs} +321 -15
  151. package/dist/{toolchain-DoavrvIA.mjs → toolchain-JYAOquPg.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-C0RsbngN.mjs} +731 -727
  155. package/dist/{web-Bihbf7-u.mjs → web-Cq_AQ4DK.mjs} +9 -9
  156. package/dist/web-Je6abcpz.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-BjqdjnJR.mjs} +3 -3
  160. package/dist/{workspaces-g2lhdBXF.mjs → workspaces-DFbj07jp.mjs} +1795 -70
  161. package/dist/{worktree-BKuklFh_.mjs → worktree-COAJ3-OD.mjs} +934 -514
  162. package/dist/{worktree-Bm4cb-nU.mjs → worktree-JGUd_53L.mjs} +1 -1
  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
@@ -1,11 +1,12 @@
1
- import { l as WorkspaceProcessCleanupError } from "./exec-VFRpu1iA.mjs";
2
- import { H as deviceSlotPlatforms } from "./config-BktkY_zC.mjs";
3
- import { l as phaseLine } from "./command-output-BF5AR2dL.mjs";
4
- import { I as parseIosRemote, U as remoteEasFallbackSetting, W as remoteIosSetting, it as tunnelModeSetting, z as publicUrlSetting } from "./settings-CosW5X-S.mjs";
5
- import "./budget-k2mZGvvk.mjs";
6
- import { b as resolveSimulatorAppFlag } from "./support-CVOCp0Ft.mjs";
7
- import { n as devicePlacementRecord } from "./placement-log-DIFPQAXp.mjs";
8
- import { r as devicePlacementLine } from "./eas-fallback-FwkeqqGi.mjs";
1
+ import { l as WorkspaceProcessCleanupError } from "./exec-aULwtNly.mjs";
2
+ import { H as deviceSlotPlatforms } from "./config-Cn94Jc0g.mjs";
3
+ import { l as phaseLine } from "./command-output-Dj-WT4BP.mjs";
4
+ import { B as publicUrlSetting, G as remoteIosSetting, L as parseIosRemote, W as remoteEasFallbackSetting, ot as tunnelModeSetting } from "./settings-BDVI8Ivc.mjs";
5
+ import "./ccache-BWTze1Ls.mjs";
6
+ import { ot as runCancellationSignal } from "./toolchain-CbCG6C5Z.mjs";
7
+ import { b as resolveSimulatorAppFlag } from "./support-Be0UeVZU.mjs";
8
+ import { n as devicePlacementRecord } from "./placement-log-BXUbiZM6.mjs";
9
+ import { n as devicePlacementLine } from "./auto-placement-z-H5pJza.mjs";
9
10
  import chalk from "chalk";
10
11
  //#region src/commands/ios/remote.ts
11
12
  function deviceRemoteConflict(remote, physical) {
@@ -25,6 +26,7 @@ function resolveIosRemote({ opts, settings, physical, recorded }) {
25
26
  } };
26
27
  return {
27
28
  machine,
29
+ ...target?.kind === "machine" && target.placement ? { placement: target.placement } : {},
28
30
  backend: !physical && target?.kind === "backend" ? target.backend : null,
29
31
  recorded
30
32
  };
@@ -68,7 +70,8 @@ function selectIosTarget({ root, slot, opts, settings, physical, appMode, metroC
68
70
  async function selectIosPlacement(args) {
69
71
  const selection = selectIosTarget(args);
70
72
  if ("failure" in selection || selection.machine !== "auto") return selection;
71
- const { root, slot, d, opts, deviceType, runtime, noWait, phase, log, release, appMode, metroCheck } = args;
73
+ const { root, slot, d, opts, deviceType, runtime, noWait, waitMs, phase, log, release, appMode, metroCheck } = args;
74
+ const signal = runCancellationSignal(args.operation) ?? args.operation?.signal;
72
75
  const viewer = resolveSimulatorAppFlag(opts.simulatorApp, args.physical, null);
73
76
  if ("refusal" in viewer) return { failure: viewer.refusal };
74
77
  const refusal = await args.validateSelectors();
@@ -86,11 +89,15 @@ async function selectIosPlacement(args) {
86
89
  root,
87
90
  slot,
88
91
  platform: "ios",
92
+ placement: selection.placement,
89
93
  ...localSims ? { localSims } : {},
90
94
  selectors: hostedIosSelectors(deviceType, runtime),
91
95
  appMode,
92
96
  buildMachine: opts.remoteBuild,
93
97
  noWait,
98
+ ...waitMs === void 0 ? {} : { waitMs },
99
+ onWait: (line) => phase("placement:", line),
100
+ signal,
94
101
  ...easFallback ? { eas: () => d.checkEasFallback({
95
102
  root,
96
103
  platform: "ios",
@@ -108,6 +115,7 @@ async function selectIosPlacement(args) {
108
115
  phase("placement:", devicePlacementLine(placed.placement, placed.skipped));
109
116
  log?.(devicePlacementRecord({
110
117
  platform: "ios",
118
+ selected: selection.placement,
111
119
  fromFlag: opts.remote !== void 0,
112
120
  easFallback,
113
121
  placed
@@ -137,6 +145,11 @@ async function selectIosPlacement(args) {
137
145
  devicePlacement: placed.placement
138
146
  };
139
147
  } catch (error) {
148
+ if (signal?.aborted) return { failure: {
149
+ code: "STIM_CANCELLED",
150
+ message: "The run was cancelled while it waited for a remote machine.",
151
+ remedy: "Run the command again when you want the app on a device."
152
+ } };
140
153
  return { failure: {
141
154
  code: error.code ?? "STIM_HOSTING_REFUSED",
142
155
  message: error.message,
@@ -1,20 +1,20 @@
1
- import { w as workspaceAgentDeviceDir } from "./workspace-state-pUg3_RRA.mjs";
2
- import { H as deviceSlotPlatforms, p as getProject } from "./config-BktkY_zC.mjs";
3
- import { i as formatDuration, l as phaseLine } from "./command-output-BF5AR2dL.mjs";
4
- import { G as resolveAndroidLayout, H as remoteAndroidSetting, I as parseIosRemote, K as resolveCacheProviderConfig, Q as settingFile, a as SETTING_SHAPE_REMEDY, at as unknownSettingKeys, d as androidLayoutSetting, et as settingOriginScope, f as androidLayoutSettingError, p as cacheProviderSettingError, rt as settingsLayers, s as androidAvdConfigSettingError, tt as settingShapeErrors, u as androidDataPartitionSizeGbSettingError } from "./settings-CosW5X-S.mjs";
5
- import { v as detectIsExpo } from "./project-BUu6Is4k.mjs";
6
- import { a as workspaceLinkLine } from "./stim-desktop-6Dqp-gjX.mjs";
7
- import { B as ownedAvdDeviceProfile, I as listInstalledSystemImages, K as ownedAvdSystemImage, N as listAvdDeviceProfilesAsync, Q as profileNeedsFoldFeature, X as pickDefaultSystemImage, at as systemImageSupportsFold, k as hostSystemImageArch, l as androidSystemImageAbi, t as DEFAULT_AVD_DEVICE_PROFILE, vt as parkedMaxSetting } from "./android-DTAcRwBC.mjs";
8
- import { Gn as UPLOAD_TIMEOUT_MS, Jn as easAuthNote, Kn as cacheLevel, W as recordFinishedBuild, Yn as isEasAuthFailureText } from "./budget-k2mZGvvk.mjs";
1
+ import { w as workspaceAgentDeviceDir } from "./workspace-state-BjqdjnJR.mjs";
2
+ import { H as deviceSlotPlatforms, p as getProject } from "./config-Cn94Jc0g.mjs";
3
+ import { i as formatDuration, l as phaseLine } from "./command-output-Dj-WT4BP.mjs";
4
+ import { J as resolveCacheProviderConfig, L as parseIosRemote, U as remoteAndroidSetting, _ as inertSettingWarning, a as SETTING_SHAPE_REMEDY, at as settingsLayers, d as androidLayoutSetting, et as settingFile, f as androidLayoutSettingError, nt as settingOriginScope, p as cacheProviderSettingError, q as resolveAndroidLayout, rt as settingShapeErrors, s as androidAvdConfigSettingError, st as unknownSettingKeys, u as androidDataPartitionSizeGbSettingError } from "./settings-BDVI8Ivc.mjs";
5
+ import { v as detectIsExpo } from "./project-DYj-HVx6.mjs";
6
+ import { a as workspaceLinkLine } from "./stim-desktop-CbWo21kb.mjs";
7
+ import { B as ownedAvdDeviceProfile, I as listInstalledSystemImages, K as ownedAvdSystemImage, N as listAvdDeviceProfilesAsync, Q as profileNeedsFoldFeature, X as pickDefaultSystemImage, at as systemImageSupportsFold, k as hostSystemImageArch, l as androidSystemImageAbi, t as DEFAULT_AVD_DEVICE_PROFILE, vt as parkedMaxSetting } from "./android-DriNoAVy.mjs";
8
+ import { Mn as isEasAuthFailureText, On as UPLOAD_TIMEOUT_MS, jn as easAuthNote, kn as cacheLevel, n as CCACHE_UNAVAILABLE, r as ccacheActivityLine } from "./ccache-BWTze1Ls.mjs";
9
+ import { q as recordFinishedBuild } from "./workspaces-DFbj07jp.mjs";
9
10
  import { d as optimizationBuildProfile, l as artifactCachePolicy, p as resolveOptimizations, u as compilerCacheFallbackMessage } from "./errors-DHm_U5gv.mjs";
10
- import { n as CCACHE_UNAVAILABLE, r as ccacheActivityLine } from "./ccache-Bx5TbxwG.mjs";
11
- import { n as buildPlacementCandidates } from "./client-D9CaRks-.mjs";
12
- import { c as readProductFlavors, s as productFlavorRefusal } from "./react-native-build-oNwqF5Wb.mjs";
13
- import { l as parseDeviceWait } from "./device-lease-run-BmvIl7bI.mjs";
14
- import { t as DEFAULT_DEVICE_SLOT_WAIT_MS } from "./device-capacity-DCSvUF0l.mjs";
15
- import { n as resolveAndroidCas, r as resolveAndroidCompilerCache } from "./android-cas-BTVhZ0Qs.mjs";
16
- import { r as isPhysicalDeviceRequest } from "./native-runtime-Dq3RBcON.mjs";
17
- import { C as remoteAvdFlagRefusal, D as systemImageRefusal, E as resolveVariant, T as resolveSystemImage, a as PLATFORM, m as deviceProfileRefusal, v as foldableImageRefusal, w as resolveDeviceProfile, y as isReleaseVariant } from "./support-BGSCBoib.mjs";
11
+ import { n as buildPlacementCandidates } from "./client-xsdxrhWA.mjs";
12
+ import { c as readProductFlavors, s as productFlavorRefusal } from "./react-native-build-DaK2IFyP.mjs";
13
+ import { l as parseDeviceWait } from "./device-lease-run-DwsGfjUN.mjs";
14
+ import { t as DEFAULT_DEVICE_SLOT_WAIT_MS } from "./device-capacity-6LP7QsaA.mjs";
15
+ import { n as resolveAndroidCas, r as resolveAndroidCompilerCache } from "./android-cas-D5e6ecUg.mjs";
16
+ import { r as isPhysicalDeviceRequest } from "./native-runtime-DqaIBO5w.mjs";
17
+ import { C as remoteAvdFlagRefusal, D as systemImageRefusal, E as resolveVariant, T as resolveSystemImage, a as PLATFORM, m as deviceProfileRefusal, v as foldableImageRefusal, w as resolveDeviceProfile, y as isReleaseVariant } from "./support-CNg_YsOk.mjs";
18
18
  import { buildDiagnostics } from "@stim-cli/core/state";
19
19
  import chalk from "chalk";
20
20
  //#region src/commands/android/plan.ts
@@ -83,7 +83,7 @@ function resolveAndroidBuildPlan({ settings, settingsContext, env, easProfile, v
83
83
  const layoutError = androidLayoutError(settings, root, bound, detectExpo);
84
84
  if (layoutError) return fail("STIM_BAD_ARG", layoutError, SETTING_SHAPE_REMEDY);
85
85
  const layout = resolveAndroidLayout(settings, root, bound);
86
- for (const key of unknownSettingKeys(settings)) warn("setting", `Warning: setting "${key}" is not read by Stim and will be ignored.`);
86
+ for (const key of unknownSettingKeys(settings)) warn("setting", inertSettingWarning(settings, key));
87
87
  let optimizations;
88
88
  try {
89
89
  optimizations = resolveOptimizations(settings, env);
@@ -197,6 +197,7 @@ async function resolveAndroidRunPlan({ settings, settingsContext, env, slot, sig
197
197
  } : machine ? {
198
198
  kind: "hosted",
199
199
  machine,
200
+ ...remoteTarget?.kind === "machine" && remoteTarget.placement ? { placement: remoteTarget.placement } : {},
200
201
  systemImage,
201
202
  deviceProfile
202
203
  } : remoteBackend ? {
@@ -308,7 +309,7 @@ function androidFacts({ root, slot, serial, avdName = null, deviceName = null, s
308
309
  ...devServer ? { devServer } : {}
309
310
  };
310
311
  }
311
- function lastBuildRecord({ devicePlacement, fingerprint, cacheKey, cacheHit, cacheSkipped = false, durationMs, appPath, bundleId, startedAt, status, errorCode = null, avdName = null, deviceName = null, missReason = null, diagnostics = null, configuration = null, buildMachine = "auto", builtOn, offloadedTo = null, offloadFallback = null }) {
312
+ function lastBuildRecord({ devicePlacement, fingerprint, cacheKey, cacheHit, cacheSkipped = false, durationMs, appPath, bundleId, startedAt, status, errorCode = null, avdName = null, deviceName = null, missReason = null, diagnostics = null, configuration = null, buildMachine = "auto", builtOn, offloadedTo = null, offloadFallback = null, message = null, remedy = null, deviceSerial = null }) {
312
313
  const record = {
313
314
  platform: PLATFORM,
314
315
  avdName: avdName ?? null,
@@ -333,6 +334,13 @@ function lastBuildRecord({ devicePlacement, fingerprint, cacheKey, cacheHit, cac
333
334
  if (missReason && !cacheLevel(cacheHit)) record.missReason = missReason;
334
335
  const recorded = status === "failed" ? buildDiagnostics(diagnostics) : [];
335
336
  if (recorded.length) record.diagnostics = recorded;
337
+ const device = deviceName ?? avdName;
338
+ const ledger = {
339
+ ...device && device !== deviceSerial ? { device: { name: device } } : {},
340
+ ...message ? { message } : {},
341
+ ...remedy ? { remedy } : {}
342
+ };
343
+ if (Object.keys(ledger).length) record.ledger = ledger;
336
344
  return record;
337
345
  }
338
346
  async function finishAndroidUpload(uploadPending, remote, phase) {
@@ -426,14 +434,16 @@ function cacheOutcome(cacheHit, providerName = null, offloadedTo = null) {
426
434
  if (cacheHit === "local") return "cache hit";
427
435
  return offloadedTo ? `built on ${offloadedTo}` : "built";
428
436
  }
429
- function persistLastBuild({ recordBuild = recordFinishedBuild, root, record, startedAt, durationMs, status, errorCode = null, diagnostics = null, out }) {
437
+ function persistLastBuild({ recordBuild = recordFinishedBuild, root, record, startedAt, durationMs, status, errorCode = null, diagnostics = null, message = null, remedy = null, out }) {
430
438
  const lastBuild = lastBuildRecord({
431
439
  ...record,
432
440
  startedAt,
433
441
  durationMs,
434
442
  status,
435
443
  errorCode,
436
- diagnostics
444
+ diagnostics,
445
+ message,
446
+ remedy
437
447
  });
438
448
  try {
439
449
  recordBuild(root, lastBuild);
@@ -451,7 +461,8 @@ function persistThrownBuild({ acquired, error, ...args }) {
451
461
  persistLastBuild({
452
462
  ...args,
453
463
  status: "failed",
454
- errorCode: typeof code === "string" ? code : void 0
464
+ errorCode: typeof code === "string" ? code : void 0,
465
+ message: error instanceof Error ? error.message : String(error)
455
466
  });
456
467
  }
457
468
  //#endregion
@@ -1,6 +1,6 @@
1
- import { D as ownership_claim_exports, S as process_identity_exports, t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
- import { a as macosRuntimeClaim, i as macosProcess, r as macosLogFile, s as updateMacosRecord } from "./state-C4OdpOTF.mjs";
3
- import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
1
+ import { D as ownership_claim_exports, S as process_identity_exports, t as getExecutor } from "./exec-aULwtNly.mjs";
2
+ import { a as macosRuntimeClaim, i as macosProcess, r as macosLogFile, s as updateMacosRecord } from "./state-CZxLyetD.mjs";
3
+ import { i as createNdjsonWriter } from "./ndjson-Dy2W4vRa.mjs";
4
4
  import { LOG_ROTATE_BYTES } from "@stim-cli/core";
5
5
  import { readMacosRecord } from "@stim-cli/core/state";
6
6
  import { StringDecoder } from "node:string_decoder";
@@ -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-BjqdjnJR.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-CbCG6C5Z.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-BDVI8Ivc.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-BDVI8Ivc.mjs";
3
+ import { T as MODE_COMMAND } from "./project-DYj-HVx6.mjs";
4
+ import { f as signalProcessTree } from "./metro-CvyD-xwe.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-ABQs2XFA.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-BDVI8Ivc.mjs";
4
+ import { C as resolvePackageJson } from "./project-DYj-HVx6.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-ABQs2XFA.mjs";
2
+ export { startExpoServer };