stim 1.23.1 → 1.25.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 (174) hide show
  1. package/README.md +3 -2
  2. package/dist/{acquire-artifact-BzYRDgaP.mjs → acquire-artifact-zA4S7RHE.mjs} +2 -2
  3. package/dist/{act-vxiMwdf5.mjs → act-BbHS3oV8.mjs} +41 -26
  4. package/dist/{activity-BpWUPgUm.mjs → activity-BpjwrQXU.mjs} +6 -6
  5. package/dist/{agent-device-usage-output-CUlLsbRt.mjs → agent-device-usage-output-Bnkerfod.mjs} +5 -5
  6. package/dist/{android-DtfRGLcc.mjs → android-BGwuK3Mc.mjs} +75 -50
  7. package/dist/{android-CLi6DSiS.mjs → android-CNZgRC-4.mjs} +5 -5
  8. package/dist/{android-C7sVmyI9.mjs → android-Cjcj8MCw.mjs} +140 -46
  9. package/dist/{android-cas-ngferVq2.mjs → android-cas-BVqh2Zep.mjs} +3 -3
  10. package/dist/android-cas-compiler.mjs +1 -1
  11. package/dist/{android-project-DVWyCbWU.d.mts → android-project-CTYaETc0.d.mts} +6 -2
  12. package/dist/{android-DR5lZ2Az.mjs → android-saBeB4lr.mjs} +13 -3
  13. package/dist/api.d.mts +22 -5
  14. package/dist/api.mjs +32 -31
  15. package/dist/{artifact-Xvgibgzq.mjs → artifact-Co8zixVx.mjs} +19 -17
  16. package/dist/{artifact-DBI3DALs.mjs → artifact-DN8JNwqS.mjs} +18 -17
  17. package/dist/{artifact-platform-CXcmX_j3.mjs → artifact-platform-CMRc0M_r.mjs} +3 -3
  18. package/dist/{browser-web-BJN9ZHxB.mjs → browser-web-CCgZsHmI.mjs} +16 -17
  19. package/dist/{budget-3ivAK99e.mjs → budget-HyShrIpL.mjs} +149 -47
  20. package/dist/{build-Dv9s8Fz-.mjs → build-CAiw8Ezm.mjs} +33 -29
  21. package/dist/{build-cache-Dv7RN200.mjs → build-cache-CKCzxzxA.mjs} +172 -21
  22. package/dist/{build-plan-BmbdHQbr.mjs → build-plan-zCuHGlA8.mjs} +8 -7
  23. package/dist/{cache-manifest-DSeQjt-Q.mjs → cache-manifest-BPXRONJz.mjs} +1 -1
  24. package/dist/cache-manifest.mjs +1 -1
  25. package/dist/{ccache-CH2EWGPB.mjs → ccache-h1FKhZeg.mjs} +6 -6
  26. package/dist/{cdp-3fwICjzi.mjs → cdp-BG3FJCCx.mjs} +1 -1
  27. package/dist/{chrome-Bbw689-6.mjs → chrome-BvV8ssI3.mjs} +1 -1
  28. package/dist/{cli-BkK6Wr5i.mjs → cli-C4w607Pz.mjs} +20 -20
  29. package/dist/cli.mjs +1 -1
  30. package/dist/{client-B4MMzfo_.mjs → client-BQsmyp_-.mjs} +274 -39
  31. package/dist/collector-run.mjs +6 -6
  32. package/dist/{command-output-YKGWivpG.mjs → command-output-BBvS1H6v.mjs} +3 -2
  33. package/dist/{config-DlrsduwG.mjs → config-BZhXY15H.mjs} +3 -3
  34. package/dist/{created-devices-x9rN6bhs.mjs → created-devices-D2Aca-xu.mjs} +6 -2
  35. package/dist/{dependency-state-1I9KZT1Y.mjs → dependency-state-BwNCYG5Q.mjs} +2 -2
  36. package/dist/{detached-entry-BwNEtIrP.mjs → detached-entry-KmieOKgN.mjs} +1 -1
  37. package/dist/{dev-client-BFxiDpkf.mjs → dev-client-CHoXXZeg.mjs} +3 -3
  38. package/dist/{device-CiNYxqp6.mjs → device-B9FqTBYW.mjs} +81 -54
  39. package/dist/{device-B7ljwccX.mjs → device-F5-4z9ef.mjs} +16 -16
  40. package/dist/{device-capacity-DH0QsZYZ.mjs → device-capacity-ZYaRALv5.mjs} +20 -16
  41. package/dist/device-host-worker.mjs +17 -17
  42. package/dist/{device-ios-CbVDtDIy.mjs → device-ios-DkHBrmvH.mjs} +32 -50
  43. package/dist/{device-lease-run-DXPSwdbb.mjs → device-lease-run-ogEeJ62K.mjs} +6 -6
  44. package/dist/{device-pool-B4iOXIrD.mjs → device-pool-BIg8MU8l.mjs} +3 -3
  45. package/dist/{doctor-DRu-8ld6.mjs → doctor-A_Nr_fDe.mjs} +1 -1
  46. package/dist/{doctor-HUC1igzw.mjs → doctor-Bm8TVpGn.mjs} +37 -31
  47. package/dist/{doctor-fingerprint-DZLoYFVb.mjs → doctor-fingerprint-zlujA1Gs.mjs} +1 -1
  48. package/dist/doctor-fingerprint.mjs +1 -1
  49. package/dist/{doctor-C6t4Maue.mjs → doctor-k3P3PizH.mjs} +14 -14
  50. package/dist/{doctor-watchman-iGBpC6KM.mjs → doctor-watchman-BovI1y3-.mjs} +5 -5
  51. package/dist/{eas-build-DMWSSvxq.mjs → eas-build-CyDKNTBP.mjs} +4 -4
  52. package/dist/{eas-fallback-vKlrqxgE.mjs → eas-fallback-gaZi-dJL.mjs} +16 -15
  53. package/dist/{eas-session-ledger-BQF9Yyy9.mjs → eas-session-ledger-BMCA1gdO.mjs} +12 -8
  54. package/dist/{error-diagnostics-DYsjJIHz.mjs → error-diagnostics-B1Mj_-7h.mjs} +17 -42
  55. package/dist/{errors-ccaPc4ox.mjs → errors-DHm_U5gv.mjs} +2 -1
  56. package/dist/{exec-DEoAhcze.mjs → exec-VFRpu1iA.mjs} +116 -28
  57. package/dist/{gc-BW8E1uSC.mjs → gc-B9jcnmIk.mjs} +205 -28
  58. package/dist/{gc-dDE4QPVu.mjs → gc-eaz403W6.mjs} +2 -2
  59. package/dist/{guide-DYYEO3Wz.mjs → guide-DR0K0xW9.mjs} +328 -89
  60. package/dist/{hosted-android-xcfgCgSF.mjs → hosted-android-Bvb2-ZxD.mjs} +4 -4
  61. package/dist/{hosted-client-Bt-tndxV.mjs → hosted-client-rsRqysJc.mjs} +4 -4
  62. package/dist/{hosted-ios-y19jCYFF.mjs → hosted-ios-RtVcJH3u.mjs} +1 -1
  63. package/dist/{hosted-logs-DzJKzKlj.mjs → hosted-logs-CWKGYWNX.mjs} +11 -6
  64. package/dist/{hosted-macos-BJusKvqL.mjs → hosted-macos-d0pv9Tth.mjs} +7 -7
  65. package/dist/{hosted-native-BmQC6U_x.mjs → hosted-native-BxTizGU2.mjs} +58 -11
  66. package/dist/{idle-shutdown-CJmUOV5x.mjs → idle-shutdown-BIyfl0Zj.mjs} +10 -10
  67. package/dist/{ios-hcBpnEGk.mjs → ios-BQzvJlzw.mjs} +122 -17
  68. package/dist/{ios-CWjqfSm_.mjs → ios-BRVM8b0P.mjs} +81 -49
  69. package/dist/{ios-DTOYZGMJ.mjs → ios-Dvt97HgQ.mjs} +8 -8
  70. package/dist/{ios-xtlRHaeB.mjs → ios-ENC4sRPA.mjs} +1 -1
  71. package/dist/{ios-device-BXZ0c7Kb.mjs → ios-device-B6HK951C.mjs} +1 -1
  72. package/dist/{ios-device-DFGuwF4U.mjs → ios-device-CKSvk0bu.mjs} +3 -3
  73. package/dist/{ios-project-CSZYI1iu.mjs → ios-project-DCUDo06I.mjs} +5 -5
  74. package/dist/{ios-signing-BtAffm0A.mjs → ios-signing-4c_qXvQm.mjs} +2 -2
  75. package/dist/{ios-state-Dtw5K2aI.mjs → ios-state-CT9nV5SP.mjs} +15 -7
  76. package/dist/{js-swap-BSBHldmm.mjs → js-swap-Z9HbC4cj.mjs} +7 -6
  77. package/dist/{launch-D-zq8SHG.mjs → launch-D0lPvFFu.mjs} +49 -30
  78. package/dist/{launch-CP2wDCVd.mjs → launch-DscF1QfM.mjs} +52 -50
  79. package/dist/{logs-pNvA2hHK.mjs → logs-BsIRre8x.mjs} +16 -9
  80. package/dist/{logs-By5aw3g9.mjs → logs-Crs9y34Z.mjs} +8 -6
  81. package/dist/{macos-CPMahOC2.mjs → macos-CcUlJPMu.mjs} +1 -1
  82. package/dist/{macos-C67FZ2ft.mjs → macos-D477nfzH.mjs} +49 -42
  83. package/dist/macos-run.mjs +1 -1
  84. package/dist/maintenance-run.mjs +7 -7
  85. package/dist/{metro-DiXtA3Ty.mjs → metro-1pJgCX4U.mjs} +4 -4
  86. package/dist/{metro-gateway-CKZqKqx7.mjs → metro-gateway-Bp9gJQAN.mjs} +3 -4
  87. package/dist/{named-ports-DkEzOfzO.mjs → named-ports-BVbn8SvC.mjs} +3 -3
  88. package/dist/{native-android-_MWSs3PP.mjs → native-android-BvMizJn1.mjs} +17 -17
  89. package/dist/{native-gradle-artifact-inputs-DHFnmrVf.mjs → native-gradle-artifact-inputs-BJscK4vN.mjs} +5 -5
  90. package/dist/{native-run-Dv88i0aU.mjs → native-run-D5OJsGwA.mjs} +6 -6
  91. package/dist/{native-runtime-DBRfY_PN.mjs → native-runtime-B9w_Qyz3.mjs} +10 -9
  92. package/dist/{native-source-Y0yLhFyQ.mjs → native-source-D-4Dh4JU.mjs} +7 -4
  93. package/dist/{native-xcode-inputs-CqViUh3r.mjs → native-xcode-inputs-Cv4l-obn.mjs} +2 -2
  94. package/dist/{native-xcode-ios-vFgqL_yS.mjs → native-xcode-ios-DGrg90hE.mjs} +21 -20
  95. package/dist/offload-worker.d.mts +12 -4
  96. package/dist/offload-worker.mjs +78 -43
  97. package/dist/{operation-exec-BW0em61G.mjs → operation-exec-CUZifp6Z.mjs} +2 -25
  98. package/dist/{ownership-C5fo5Edb.mjs → ownership-jxxz-19m.mjs} +3 -3
  99. package/dist/{page-DBL2PiUU.mjs → page-CzEA_-5_.mjs} +2 -3
  100. package/dist/phone-reverses-CYb7RRAx.mjs +57 -0
  101. package/dist/{placement-log-BnGgJRRZ.mjs → placement-log-DjOXJRIH.mjs} +1 -1
  102. package/dist/{plan-placement-cr0fEU7b.mjs → plan-placement-BqKgKHCi.mjs} +3 -3
  103. package/dist/{ports-DpXjKkSV.mjs → ports-DtS1Amb0.mjs} +3 -3
  104. package/dist/{prebuild-BligW0QS.mjs → prebuild-JUaqOLpc.mjs} +14 -9
  105. package/dist/{project-DhCtQWWU.mjs → project-BiC68mIp.mjs} +21 -17
  106. package/dist/{pull-request-W1IuLXDt.mjs → pull-request-CbNlkFok.mjs} +2 -2
  107. package/dist/pull-requests.mjs +1 -1
  108. package/dist/{react-native-android-ZlhQfhvq.mjs → react-native-android-DRYqoJc4.mjs} +76 -32
  109. package/dist/{react-native-build-CelbTO_y.mjs → react-native-build-CwZB-agu.mjs} +23 -20
  110. package/dist/{react-native-doctor-LTIaP7lv.mjs → react-native-doctor-BCrytK7h.mjs} +10 -9
  111. package/dist/{react-native-ios-C5W0SA6f.mjs → react-native-ios-Cr1buNFo.mjs} +41 -24
  112. package/dist/{recordings-CQmfzAh7.mjs → recordings-BaoQ0t-J.mjs} +1 -1
  113. package/dist/{registration-BcRgF6Ox.mjs → registration-CN6nlhcD.mjs} +1 -1
  114. package/dist/{reload-QcwnYLYV.mjs → reload-Beftw2X3.mjs} +1 -1
  115. package/dist/{reload-COJWTbae.mjs → reload-FbSgMF8x.mjs} +144 -42
  116. package/dist/{remote-DR8qUERM.mjs → remote-BuZj6AyU.mjs} +16 -7
  117. package/dist/{result-utnBea7x.mjs → result-CR2vk2cj.mjs} +41 -18
  118. package/dist/{run-DidHghD1.mjs → run-BtzE09Dl.mjs} +2 -2
  119. package/dist/{selection-DSMbWEX2.mjs → selection-D5cxEl3t.mjs} +13 -7
  120. package/dist/{server-bare-CafzuyFB.mjs → server-bare-CH9X0RLn.mjs} +56 -4
  121. package/dist/{server-command-B9o92sLM.mjs → server-command-CaBbDNU2.mjs} +5 -5
  122. package/dist/server-expo-C16Zf2k7.mjs +2 -0
  123. package/dist/{server-expo-BXrWxNYh.mjs → server-expo-Ck8EIidM.mjs} +14 -9
  124. package/dist/{settings-C7O8A6ZI.mjs → settings-B5tCoq9N.mjs} +132 -39
  125. package/dist/{settings-PfJx8uK1.mjs → settings-DzH9mGQZ.mjs} +1 -1
  126. package/dist/{settings-write-Chuy7Cte.mjs → settings-write-n0zwfohx.mjs} +7 -7
  127. package/dist/settings.schema.json +51 -0
  128. package/dist/{simslim-BNckWpXi.mjs → simslim-BjxszUAb.mjs} +22 -7
  129. package/dist/{slot-launch-B7AuoWJv.mjs → slot-launch-QeuJMlnJ.mjs} +6 -6
  130. package/dist/{stage-C4u17aES.mjs → stage-D8xlRU2D.mjs} +2 -3
  131. package/dist/{start-BL_BsiWt.mjs → start-C1JLjkNw.mjs} +1 -1
  132. package/dist/{start-CU8mCPC7.mjs → start-YMpNwLhh.mjs} +75 -35
  133. package/dist/{state--smjFSTL.mjs → state-DMRNP7-4.mjs} +4 -4
  134. package/dist/{state-08I3hw3_.mjs → state-DPaM3u5K.mjs} +2 -2
  135. package/dist/{stats-CO6sK0Nh.mjs → stats-CP7STzZw.mjs} +5 -5
  136. package/dist/{stats-report-BzaPrRm6.mjs → stats-report-n2U5plhk.mjs} +1 -1
  137. package/dist/{status-_WPHzVft.mjs → status-CRLiJ-O_.mjs} +24 -24
  138. package/dist/{status-BRROykC8.mjs → status-Fect2w9R.mjs} +1 -1
  139. package/dist/{status-CrJutl6-.mjs → status-cNw6i0_t.mjs} +1 -1
  140. package/dist/{status-watch-BHFasOZN.mjs → status-watch-Bc2J4TZn.mjs} +5 -5
  141. package/dist/status-worker.mjs +1 -1
  142. package/dist/stim-clonefile.c +18 -0
  143. package/dist/{stim-desktop-D5OGpYZM.mjs → stim-desktop-DS0mzR8U.mjs} +2 -2
  144. package/dist/{stop-iuFHjUST.mjs → stop-Br7LKxBE.mjs} +2 -2
  145. package/dist/{stop-CR5689oB.mjs → stop-COP6PQqw.mjs} +5 -5
  146. package/dist/{stop-BJ06ipTZ.mjs → stop-Db9Kh-UA.mjs} +109 -56
  147. package/dist/supervisor-run.mjs +17 -17
  148. package/dist/{support-CbXPbUMJ.mjs → support-Cxj9CmII.mjs} +6 -6
  149. package/dist/{support-TWuQlHQo.mjs → support-qKcbgmI5.mjs} +14 -11
  150. package/dist/{swiftpm-artifact-inputs-DFcGsXDP.mjs → swiftpm-artifact-inputs-iY9fsmOc.mjs} +4 -4
  151. package/dist/{swiftpm-macos-DbwGCpZg.mjs → swiftpm-macos-Bp_sn9P4.mjs} +15 -14
  152. package/dist/{toolchain-XkA2PfJZ.mjs → toolchain-DB1aeqxO.mjs} +1 -1
  153. package/dist/{toolchain-B9hCFCQw.mjs → toolchain-VzLJzZ7O.mjs} +69 -37
  154. package/dist/trigger-BLsHgAGR.mjs +2 -0
  155. package/dist/{trigger-Cbyc41d_.mjs → trigger-CBMe2YLH.mjs} +2 -2
  156. package/dist/{warm-progress-CA3TgT3-.mjs → warm-progress-BV3ZPmcY.mjs} +6 -6
  157. package/dist/{web-DRF_oFXk.mjs → web-B4Yjyt1G.mjs} +12 -10
  158. package/dist/web-DS4UDWvf.mjs +2 -0
  159. package/dist/web-run.mjs +8 -9
  160. package/dist/windows-report.mjs +12 -1
  161. package/dist/windows-report.ps1 +1 -1
  162. package/dist/{workspace-state-U08dEzhG.mjs → workspace-state-CPSp3mav.mjs} +11 -4
  163. package/dist/{workspaces-e41xsjKr.mjs → workspaces-C9w4aeXF.mjs} +36 -32
  164. package/dist/{worktree-B4Nj3EGS.mjs → worktree-CclFIe1Z.mjs} +324 -99
  165. package/dist/{worktree-BEwxVwKF.mjs → worktree-Ct9Gk3KL.mjs} +1 -1
  166. package/dist/{xcode-Rq744mBF.mjs → xcode-CiIIDnuD.mjs} +42 -28
  167. package/package.json +7 -7
  168. package/shim/bundle-response.cjs +53 -1
  169. package/shim/bundle-response.d.cts +1 -1
  170. package/shim/expo-metro-config.cjs +23 -1
  171. package/dist/native-gradle-inputs-Dnh84Zbd.mjs +0 -211
  172. package/dist/server-expo-Ddr8cG_c.mjs +0 -2
  173. package/dist/trigger-yb_nFzPF.mjs +0 -2
  174. package/dist/web-kDE9Myoy.mjs +0 -2
@@ -1,18 +1,17 @@
1
- import { h as withDrainingCancellation, x as ownership_claim_exports } from "./exec-DEoAhcze.mjs";
1
+ import { D as ownership_claim_exports, c as throwIfCancelled, x as withDrainingCancellation } from "./exec-VFRpu1iA.mjs";
2
2
  import { d as workspaceDir } from "./paths-DQtTgsBf.mjs";
3
- import { _ as stepTimer, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-YKGWivpG.mjs";
4
- import { f as throwIfCancelled } from "./operation-exec-BW0em61G.mjs";
5
- import { Hn as isEasAuthFailureText, Ln as RESOLVE_TIMEOUT_MS, Vn as easAuthNote } from "./budget-3ivAK99e.mjs";
6
- import { d as runCancellationSignal, r as cancelledFailure } from "./native-run-Dv88i0aU.mjs";
7
- import { d as prepareProviderDownloadDir, f as providerDownloadPath, p as providerUploadOutcome } from "./build-cache-Dv7RN200.mjs";
8
- import { o as compilationCacheActivityLine, t as COMPILATION_CACHE_NOT_RUN } from "./xcode-Rq744mBF.mjs";
9
- import { _ as clearCorruptCompilationCache, c as offloadPlacement, g as COMPILATION_CACHE_CORRUPT, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText } from "./client-B4MMzfo_.mjs";
10
- import { a as requireLocalBuild, r as namedBuildMachine, t as OffloadRefusal } from "./selection-DSMbWEX2.mjs";
11
- import { S as xcodeFailureReport, p as printDiagnostics } from "./support-TWuQlHQo.mjs";
12
- import { l as skippedMissReason } from "./prebuild-BligW0QS.mjs";
13
- import { t as buildPlacementRecord } from "./placement-log-BnGgJRRZ.mjs";
14
- import { n as settleArtifactUploads, t as acquireArtifact } from "./acquire-artifact-BzYRDgaP.mjs";
15
- import { r as finishIosUpload, t as IosRecipeRefusal } from "./ios-project-CSZYI1iu.mjs";
3
+ import { _ as stepTimer, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-BBvS1H6v.mjs";
4
+ import { Bn as RESOLVE_TIMEOUT_MS, Gn as isEasAuthFailureText, Wn as easAuthNote } from "./budget-HyShrIpL.mjs";
5
+ import { d as runCancellationSignal, r as cancelledFailure } from "./native-run-D5OJsGwA.mjs";
6
+ import { _ as providerUploadOutcome, g as providerDownloadPath, h as prepareProviderDownloadDir, x as storedAppId } from "./build-cache-CKCzxzxA.mjs";
7
+ import { o as compilationCacheActivityLine, t as COMPILATION_CACHE_NOT_RUN } from "./xcode-CiIIDnuD.mjs";
8
+ import { C as COMPILATION_CACHE_CORRUPT, c as offloadPlacement, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText, w as clearCorruptCompilationCache } from "./client-BQsmyp_-.mjs";
9
+ import { i as namedBuildMachine, o as requireLocalBuild, r as fingerprintMismatchRemedy, t as OffloadRefusal } from "./selection-D5cxEl3t.mjs";
10
+ import { S as xcodeFailureReport, p as printDiagnostics } from "./support-qKcbgmI5.mjs";
11
+ import { u as skippedMissReason } from "./prebuild-JUaqOLpc.mjs";
12
+ import { t as buildPlacementRecord } from "./placement-log-DjOXJRIH.mjs";
13
+ import { n as settleArtifactUploads, t as acquireArtifact } from "./acquire-artifact-zA4S7RHE.mjs";
14
+ import { r as finishIosUpload, t as IosRecipeRefusal } from "./ios-project-DCUDo06I.mjs";
16
15
  import { rmSync } from "node:fs";
17
16
  import { join } from "node:path";
18
17
  import { machineCapacity } from "@stim-cli/core/state";
@@ -64,7 +63,7 @@ async function acquireIosArtifact({ context, root, logFile, recipe, physical, co
64
63
  machine: info.machine
65
64
  }
66
65
  }));
67
- if (namedBuildMachine(buildMachine)) throw new OffloadRefusal(buildMachine, reason);
66
+ if (namedBuildMachine(buildMachine)) throw new OffloadRefusal(buildMachine, reason, info.remedy);
68
67
  requireLocalBuild(buildMachine);
69
68
  offloadFallback = reason;
70
69
  buildFailure = {
@@ -424,6 +423,7 @@ async function acquireIosArtifact({ context, root, logFile, recipe, physical, co
424
423
  choice,
425
424
  expectedFingerprint: storeHash,
426
425
  request: recipe.offload.request(runtime),
426
+ fingerprintInputs: recipe.offload.fingerprintInputs,
427
427
  stagingDir,
428
428
  onPhase: (name, msg) => phase(name, remotePhaseText(name, msg, choice.machine)),
429
429
  onEnter: (name) => {
@@ -483,7 +483,8 @@ async function acquireIosArtifact({ context, root, logFile, recipe, physical, co
483
483
  });
484
484
  fallBack(`${choice.machine}: ${why}`, `offload failed: ${why}`, {
485
485
  code: corrupt === void 0 ? "offload-failed" : COMPILATION_CACHE_CORRUPT,
486
- machine: choice.machine
486
+ machine: choice.machine,
487
+ remedy: outcome.ok ? void 0 : fingerprintMismatchRemedy(outcome.reason)
487
488
  });
488
489
  logWriter().write({
489
490
  src: "build",
@@ -788,7 +789,7 @@ async function acquireIosArtifact({ context, root, logFile, recipe, physical, co
788
789
  artifact: {
789
790
  handoff,
790
791
  path: appPath,
791
- bundleId,
792
+ bundleId: bundleId ?? (cacheHit && storeKey ? storedAppId("ios", storeKey) : null),
792
793
  cache: {
793
794
  identity: storeHash && storeKey ? {
794
795
  fingerprint: storeHash,
@@ -1,14 +1,14 @@
1
- import { t as getExecutor } from "./exec-DEoAhcze.mjs";
1
+ import { t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
2
  import { join } from "node:path";
3
3
  //#region src/macos/artifact-platform.ts
4
- async function validateMacosArtifactPlatform(context, bundle, product, signal) {
4
+ async function validateMacosArtifactPlatform(context, bundle, product, signal, nodeArch = process.arch) {
5
5
  const binary = join(bundle, "Contents", "MacOS", product);
6
6
  const options = {
7
7
  timeoutMs: 3e4,
8
8
  signal,
9
9
  declareFor: context
10
10
  };
11
- const architecture = process.arch === "x64" ? "x86_64" : process.arch;
11
+ const architecture = nodeArch === "x64" ? "x86_64" : nodeArch;
12
12
  const archs = await getExecutor().runFileAsync("xcrun", [
13
13
  "lipo",
14
14
  "-archs",
@@ -1,22 +1,21 @@
1
- import { g as process_identity_exports, i as withWorkspaceProcessLock, r as WorkspaceProcessCleanupError, t as getExecutor, x as ownership_claim_exports } from "./exec-DEoAhcze.mjs";
1
+ import { D as ownership_claim_exports, S as process_identity_exports, c as throwIfCancelled, l as WorkspaceProcessCleanupError, s as cancelledError, t as getExecutor, u as withWorkspaceProcessLock } from "./exec-VFRpu1iA.mjs";
2
2
  import { d as workspaceDir, m as workspaceLogsDir$1 } from "./paths-DQtTgsBf.mjs";
3
- import { p as getProject } from "./config-DlrsduwG.mjs";
4
- import { l as phaseLine } from "./command-output-YKGWivpG.mjs";
5
- import { d as cancelledError, f as throwIfCancelled } from "./operation-exec-BW0em61G.mjs";
6
- import { r as readWorkspaceState$1 } from "./workspace-state-U08dEzhG.mjs";
7
- import { a as SETTING_SHAPE_REMEDY, at as webSettings, j as metroPortSetting } from "./settings-C7O8A6ZI.mjs";
8
- import { b as isPackageResolvable, v as detectIsExpo } from "./project-DhCtQWWU.mjs";
3
+ import { p as getProject } from "./config-BZhXY15H.mjs";
4
+ import { l as phaseLine } from "./command-output-BBvS1H6v.mjs";
5
+ import { l as withWorkspaceStateLockAsync, r as readWorkspaceState$1 } from "./workspace-state-CPSp3mav.mjs";
6
+ import { M as metroPortSetting, a as SETTING_SHAPE_REMEDY, ot as webSettings } from "./settings-B5tCoq9N.mjs";
7
+ import { b as isPackageResolvable, v as detectIsExpo } from "./project-BiC68mIp.mjs";
8
+ import { d as resolveProjectMetro } from "./metro-1pJgCX4U.mjs";
9
9
  import { s as readNdjsonGenerations$1 } from "./ndjson-CgE_o3Dl.mjs";
10
- import { d as resolveProjectMetro } from "./metro-DiXtA3Ty.mjs";
11
- import { f as webLogFile, m as webSupervisorLogFile, o as readWebRecord, s as updateWebRecord } from "./state--smjFSTL.mjs";
12
- import { en as readMetroRecords } from "./budget-3ivAK99e.mjs";
13
- import { E as teardownBrowserHeld, h as resolveSupervisorTarget } from "./workspaces-e41xsjKr.mjs";
14
- import { i as reserveBrowserPort, n as getNamedPort } from "./named-ports-DkEzOfzO.mjs";
15
- import { n as sendToOwnedPage, t as liveWebRecord } from "./page-DBL2PiUU.mjs";
16
- import { o as resolveWorkspaceMetroPort } from "./start-CU8mCPC7.mjs";
10
+ import { f as webLogFile, m as webSupervisorLogFile, o as readWebRecord, s as updateWebRecord } from "./state-DMRNP7-4.mjs";
11
+ import { rn as readMetroRecords } from "./budget-HyShrIpL.mjs";
12
+ import { D as teardownBrowserHeld, g as resolveSupervisorTarget } from "./workspaces-C9w4aeXF.mjs";
13
+ import { i as reserveBrowserPort, n as getNamedPort } from "./named-ports-BVbn8SvC.mjs";
14
+ import { n as sendToOwnedPage, t as liveWebRecord } from "./page-CzEA_-5_.mjs";
15
+ import { o as resolveWorkspaceMetroPort } from "./start-YMpNwLhh.mjs";
17
16
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
18
- import { n as windowsLauncherArgs } from "./detached-entry-BwNEtIrP.mjs";
19
- import { a as findChrome, t as CHROME_INSTALL_REMEDY } from "./chrome-Bbw689-6.mjs";
17
+ import { n as windowsLauncherArgs } from "./detached-entry-KmieOKgN.mjs";
18
+ import { a as findChrome, t as CHROME_INSTALL_REMEDY } from "./chrome-BvV8ssI3.mjs";
20
19
  import { randomUUID } from "node:crypto";
21
20
  import { mkdirSync, openSync, statSync, watch } from "node:fs";
22
21
  import { ambientEnv } from "@stim-cli/core";
@@ -260,7 +259,7 @@ async function launchOwnedBrowser({ url, config }, { root, note, signal }) {
260
259
  const since = Date.now();
261
260
  try {
262
261
  await sendToOwnedPage(live, "Page.navigate", { url }, signal);
263
- updateWebRecord(root, live, { url });
262
+ await withWorkspaceStateLockAsync(root, () => updateWebRecord(root, live, { url }));
264
263
  note(chalk.dim(phaseLine("device", `reusing the owned Chrome (pid ${live.chromeProcess?.pid})`)));
265
264
  return {
266
265
  ok: true,
@@ -1,25 +1,26 @@
1
- import { a as workspaceProcessLockError, b as debugLog, g as process_identity_exports, i as withWorkspaceProcessLock, m as operationState, n as isTimeoutError, p as isTermination, r as WorkspaceProcessCleanupError, t as getExecutor, x as ownership_claim_exports } from "./exec-DEoAhcze.mjs";
1
+ import { D as ownership_claim_exports, E as debugLog, S as process_identity_exports, b as operationState, c as throwIfCancelled, d as workspaceProcessLockError, l as WorkspaceProcessCleanupError, n as isTimeoutError, o as cancellableSleep, s as cancelledError, t as getExecutor, u as withWorkspaceProcessLock, y as isTermination } from "./exec-VFRpu1iA.mjs";
2
2
  import { d as workspaceDir, f as workspaceId$1, g as workspaceStateFile$1, i as sharedBuildCache, m as workspaceLogsDir$1 } from "./paths-DQtTgsBf.mjs";
3
- import { D as withConfigLock$1, F as isOnMountedVolume, G as projectDeviceSlots, H as deviceSlotPlatforms, L as measuredDirectorySizeAsync, M as directorySize, N as directorySizeAsync, O as withConfigLockAsync$1, P as formatBytes, R as volumeRootFor, _ as loadConfig$1, a as clearDevice, d as getConfigDir, o as clearSupervisor, p as getProject } from "./config-DlrsduwG.mjs";
3
+ import { D as withConfigLock$1, F as isOnMountedVolume, G as projectDeviceSlots, H as deviceSlotPlatforms, L as measuredDirectorySizeAsync, M as directorySize, N as directorySizeAsync, O as withConfigLockAsync$1, P as formatBytes, R as volumeRootFor, _ as loadConfig$1, a as clearDevice, d as getConfigDir, o as clearSupervisor, p as getProject } from "./config-BZhXY15H.mjs";
4
4
  import { n as stripAnsi } from "./process-output-Fpl8PYi8.mjs";
5
- import { a as formatElapsed, l as phaseLine, o as formatLongDuration, s as isAppLaunchError, u as plural } from "./command-output-YKGWivpG.mjs";
6
- import { a as killOnAbort, d as cancelledError, f as throwIfCancelled, n as runOperationFileQuiet, r as childEnvironment, t as runOperationFile, u as cancellableSleep } from "./operation-exec-BW0em61G.mjs";
7
- import { d as writeWorkspaceState, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, t as clearWorkspaceStateKey } from "./workspace-state-U08dEzhG.mjs";
8
- import { J as resolveProjectSettingsAsync, d as androidLayoutSetting, lt as planMetroReach } from "./settings-C7O8A6ZI.mjs";
9
- import { C as resolvePackageJson, M as readMetroTunnel, N as readPidFile, P as readRemoteSession, i as findProjectRoot$1, j as clearWorkspaceSupervisor, k as clearRemoteSession, s as ownedDeviceLabel, v as detectIsExpo } from "./project-DhCtQWWU.mjs";
5
+ import { a as formatElapsed, l as phaseLine, o as formatLongDuration, s as isAppLaunchError, u as plural } from "./command-output-BBvS1H6v.mjs";
6
+ import { a as killOnAbort, n as runOperationFileQuiet, r as childEnvironment, t as runOperationFile } from "./operation-exec-CUZifp6Z.mjs";
7
+ import { d as writeWorkspaceState, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, t as clearWorkspaceStateKey } from "./workspace-state-CPSp3mav.mjs";
8
+ import { Y as resolveProjectSettingsAsync, d as androidLayoutSetting, ut as planMetroReach } from "./settings-B5tCoq9N.mjs";
9
+ import { C as resolvePackageJson, M as readMetroTunnel, N as readPidFile, P as readRemoteSession, i as findProjectRoot$1, j as clearWorkspaceSupervisor, k as clearRemoteSession, s as ownedDeviceLabel, v as detectIsExpo } from "./project-BiC68mIp.mjs";
10
+ import { F as listAvdsAsync, G as ownedAvdSerialResolverAsync, I as listInstalledSystemImages, J as parseAvdSystemImage, V as ownedAvdDirectory, W as ownedAvdSerialResolver, d as androidToolPath, dt as isStimOwnedSim, m as avdIniPaths, mt as dropParked, o as androidHome, q as parseAvdDeviceProfile, ut as isStimOwnedAvd, v as avdStorageRoots, yt as readParked } from "./android-Cjcj8MCw.mjs";
11
+ import { a as listeningPidsAsync, c as pidExists, d as resolveProjectMetro, h as isMetroRunning, r as killMetroTreeAsync, u as processCwds } from "./metro-1pJgCX4U.mjs";
10
12
  import { r as createNdjsonWriter, s as readNdjsonGenerations$1 } from "./ndjson-CgE_o3Dl.mjs";
11
- import { a as listeningPidsAsync, c as pidExists, d as resolveProjectMetro, h as isMetroRunning, r as killMetroTreeAsync, u as processCwds } from "./metro-DiXtA3Ty.mjs";
12
- import { C as environmentState, a as removeEasSessionClaim, d as parseWatchRoots, f as parseWatchmanClients, i as recordEasSessionClaim, l as parseSubscriberNames, n as easMachineStateRoot$1, o as removeEasSessionClaimAsync, p as parseWatchmanPid, r as readEasSessionLedger$1, s as compareStimVersions, t as assertEasMachineRootWritable, u as parseTriggerCount, w as formatSpace, y as capacity } from "./eas-session-ledger-BQF9Yyy9.mjs";
13
- import { i as registeredCaches } from "./cache-manifest-DSeQjt-Q.mjs";
13
+ import { C as environmentState, a as removeEasSessionClaim, d as parseWatchRoots, f as parseWatchmanClients, i as recordEasSessionClaim, l as parseSubscriberNames, n as easMachineStateRoot$1, o as removeEasSessionClaimAsync, p as parseWatchmanPid, r as readEasSessionLedger$1, s as compareStimVersions, t as assertEasMachineRootWritable, u as parseTriggerCount, w as formatSpace, y as capacity } from "./eas-session-ledger-BMCA1gdO.mjs";
14
+ import { i as registeredCaches } from "./cache-manifest-BPXRONJz.mjs";
14
15
  import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
15
- import { c as nativeRunWaitNotice, d as runCancellationSignal, m as claimForEmptying } from "./native-run-Dv88i0aU.mjs";
16
- import { A as teardownParkedAvd, D as teardownOwnedAvd, F as writeUsageCache, L as listBuildSlots, M as probePublicHttp, N as canonical, P as measureDu, T as eraseParkedIosSim, a as collectWorkspaceOutputs, f as withIdleWorkspace, h as resolveSupervisorTarget, j as teardownParkedIosSim, k as teardownOwnedIosSim, r as clearWorkspaceOutputs, w as eraseParkedAvd, z as GC_OUTPUT } from "./workspaces-e41xsjKr.mjs";
17
- import { N as listBuildLocks, b as leaseIsExpired, g as workspaceActivity, i as createActivityReaderAsync, o as envDir, p as readHostProcessTableAsync, r as createActivityReader, s as idleForMs, x as listLeaseFiles } from "./activity-BpWUPgUm.mjs";
18
- import { F as listAvdsAsync, G as ownedAvdSerialResolverAsync, I as listInstalledSystemImages, J as parseAvdSystemImage, V as ownedAvdDirectory, W as ownedAvdSerialResolver, d as androidToolPath, lt as isStimOwnedAvd, m as avdIniPaths, o as androidHome, pt as dropParked, q as parseAvdDeviceProfile, ut as isStimOwnedSim, v as avdStorageRoots, vt as readParked } from "./android-C7sVmyI9.mjs";
19
- import { B as deviceHoldsBundle, D as sanitizeDeviceLabel, b as parseSimctlList, f as listAllIosSimsAsync, g as listUserApps, k as uninstallIosApp, p as listIosDeviceTypesAsync, u as iosSimulatorFailureAdvice, y as parseRuntimeVersion, z as deviceHoldsApk } from "./ios-hcBpnEGk.mjs";
20
- import { n as supervisorError } from "./errors-ccaPc4ox.mjs";
21
- import { n as expoBinFromPackage, r as expoBinPath, s as findBinUpward } from "./server-expo-BXrWxNYh.mjs";
22
- import { t as DEV_MENU_LAUNCH_ARGS } from "./ios-device-BXZ0c7Kb.mjs";
16
+ import { c as nativeRunWaitNotice, d as runCancellationSignal, m as claimForEmptying } from "./native-run-D5OJsGwA.mjs";
17
+ import { A as teardownOwnedIosSim, B as GC_OUTPUT, E as eraseParkedIosSim, F as measureDu, I as writeUsageCache, M as teardownParkedIosSim, N as probePublicHttp, O as teardownOwnedAvd, P as canonical, R as listBuildSlots, T as eraseParkedAvd, a as collectWorkspaceOutputs, g as resolveSupervisorTarget, j as teardownParkedAvd, p as withIdleWorkspace, r as clearWorkspaceOutputs } from "./workspaces-C9w4aeXF.mjs";
18
+ import { N as listBuildLocks, b as leaseIsExpired, g as workspaceActivity, i as createActivityReaderAsync, o as envDir, p as readHostProcessTableAsync, r as createActivityReader, s as idleForMs, x as listLeaseFiles } from "./activity-BpjwrQXU.mjs";
19
+ import { c as expoConfigContents } from "./build-cache-CKCzxzxA.mjs";
20
+ import { D as sanitizeDeviceLabel, H as deviceHoldsApk, U as deviceHoldsBundle, b as parseSimctlList, f as listAllIosSimsAsync, g as listUserApps, k as uninstallIosApp, p as listIosDeviceTypesAsync, u as iosSimulatorFailureAdvice, y as parseRuntimeVersion } from "./ios-BQzvJlzw.mjs";
21
+ import { n as supervisorError } from "./errors-DHm_U5gv.mjs";
22
+ import { c as findBinUpward, n as expoBinFromPackage, r as expoBinPath, s as expoTelemetryEnv } from "./server-expo-Ck8EIidM.mjs";
23
+ import { t as DEV_MENU_LAUNCH_ARGS } from "./ios-device-B6HK951C.mjs";
23
24
  import { createRequire } from "node:module";
24
25
  import { randomUUID } from "node:crypto";
25
26
  import { closeSync, existsSync, lstatSync, mkdirSync, openSync, readFileSync, readSync, readdirSync, realpathSync, renameSync, rmSync, statSync, statfsSync, writeFileSync } from "node:fs";
@@ -2224,7 +2225,10 @@ async function readProjectConfig(root, { context, run = null, timeoutMs = CONFIG
2224
2225
  "config",
2225
2226
  "--json",
2226
2227
  root
2227
- ], { timeoutMs });
2228
+ ], {
2229
+ timeoutMs,
2230
+ env: expoTelemetryEnv(context?.env ?? process.env)
2231
+ });
2228
2232
  } catch (err) {
2229
2233
  if (err instanceof Error && "code" in err && err.code === "STIM_CLAIM_UNAVAILABLE") throw err;
2230
2234
  context?.signal.throwIfAborted();
@@ -2239,9 +2243,24 @@ async function readProjectConfig(root, { context, run = null, timeoutMs = CONFIG
2239
2243
  return { unavailable: `\`expo config --json\` did not print JSON: ${firstLine(err)}` };
2240
2244
  }
2241
2245
  }
2242
- async function loadProjectProvider(projectRoot, { context, isExpo = true, run = null, requireFrom = null, timeoutMs = CONFIG_TIMEOUT_MS } = {}) {
2246
+ /**
2247
+ * The app config the fingerprint already evaluated, for a dynamic config. @expo/fingerprint's ExpoConfigEASProject
2248
+ * skip removes `owner`, so a missing owner under the EAS provider cannot be told from a stripped one and is read from
2249
+ * `expo config --json` instead.
2250
+ */
2251
+ function fingerprintedConfig(projectRoot, sources) {
2252
+ if (!sources || !dynamicConfigFile(projectRoot)) return null;
2253
+ const config = expoConfigContents(sources);
2254
+ if (!config) return null;
2255
+ if (normalizeProvider(providerFromConfig(config))?.reference === "eas-build-cache-provider" && ownerFromConfig(config) === null) return null;
2256
+ return {
2257
+ config,
2258
+ source: "fingerprint"
2259
+ };
2260
+ }
2261
+ async function loadProjectProvider(projectRoot, { context, isExpo = true, run = null, requireFrom = null, timeoutMs = CONFIG_TIMEOUT_MS, sources } = {}) {
2243
2262
  if (!isExpo) return { none: true };
2244
- const read = await readProjectConfig(projectRoot, {
2263
+ const read = fingerprintedConfig(projectRoot, sources) ?? await readProjectConfig(projectRoot, {
2245
2264
  context,
2246
2265
  run,
2247
2266
  timeoutMs
@@ -2779,9 +2798,9 @@ async function writeIosDevMenuOffDefaults(udid, bundleId, exec) {
2779
2798
  "false"
2780
2799
  ], { timeoutMs: 6e4 });
2781
2800
  }
2782
- function describeIosSimulatorFailure(error, exec) {
2801
+ async function describeIosSimulatorFailure(error, exec) {
2783
2802
  const detail = describe$1(error);
2784
- return error?.code === "ETIMEDOUT" ? `${detail}. ${iosSimulatorFailureAdvice(exec)}` : detail;
2803
+ return error?.code === "ETIMEDOUT" ? `${detail}. ${await iosSimulatorFailureAdvice(exec)}` : detail;
2785
2804
  }
2786
2805
  async function installIosApp({ udid, appPath, bundleId = null, devClientScheme = null, schemeApprovals = [], proveInstalled = true }, { exec = null, now = null } = {}) {
2787
2806
  const e = exec || getExecutor();
@@ -2805,7 +2824,7 @@ async function installIosApp({ udid, appPath, bundleId = null, devClientScheme =
2805
2824
  return {
2806
2825
  failed: true,
2807
2826
  code: INSTALL_ERROR,
2808
- reason: `simctl install failed for ${appPath}: ${describeIosSimulatorFailure(err, e)}`
2827
+ reason: `simctl install failed for ${appPath}: ${await describeIosSimulatorFailure(err, e)}`
2809
2828
  };
2810
2829
  }
2811
2830
  const artifactFinishedAt = now?.();
@@ -2831,7 +2850,7 @@ async function installIosApp({ udid, appPath, bundleId = null, devClientScheme =
2831
2850
  return {
2832
2851
  failed: true,
2833
2852
  code: INSTALL_ERROR,
2834
- reason: `Installed ${bundleId}, but could not prepare the dev client: ${describeIosSimulatorFailure(err, e)}`
2853
+ reason: `Installed ${bundleId}, but could not prepare the dev client: ${await describeIosSimulatorFailure(err, e)}`
2835
2854
  };
2836
2855
  }
2837
2856
  const devClientPreparationDurationMs = now && preparationStartedAt !== void 0 ? now() - preparationStartedAt : void 0;
@@ -2911,7 +2930,7 @@ function appProcessFromPid(pid) {
2911
2930
  pid
2912
2931
  };
2913
2932
  }
2914
- async function iosAppProcess(udid, bundleId, { exec = null } = {}) {
2933
+ async function iosAppProcess(udid, bundleId, { exec = null, timeoutMs = 2e3 } = {}) {
2915
2934
  const e = exec || getExecutor();
2916
2935
  const started = performance.now();
2917
2936
  let probe = { state: "unknown" };
@@ -2923,7 +2942,7 @@ async function iosAppProcess(udid, bundleId, { exec = null } = {}) {
2923
2942
  udid,
2924
2943
  "launchctl",
2925
2944
  "list"
2926
- ], { timeoutMs: 2e3 });
2945
+ ], { timeoutMs });
2927
2946
  const label = `UIKitApplication:${bundleId}[`;
2928
2947
  probe = { state: "stopped" };
2929
2948
  for (const line of out.split("\n")) {
@@ -2966,16 +2985,18 @@ async function launchIosApp({ udid, bundleId, metroPort, devClientScheme = null,
2966
2985
  const e = exec || getExecutor();
2967
2986
  const running = await iosAppProcess(udid, bundleId, { exec: e });
2968
2987
  const stateUnknown = running.state === "unknown";
2988
+ const launchRestarts = metroPort === null || !devClientScheme || Boolean(consolePaths);
2969
2989
  const launchArgs = [
2970
2990
  "simctl",
2971
2991
  "launch",
2972
2992
  ...consolePaths ? [`--stdout=${consolePaths.stdout}`, `--stderr=${consolePaths.stderr}`] : [],
2973
- ...stateUnknown ? ["--terminate-running-process"] : [],
2993
+ ...stateUnknown || running.state === "running" && launchRestarts ? ["--terminate-running-process"] : [],
2974
2994
  udid,
2975
2995
  bundleId
2976
2996
  ];
2977
2997
  const restart = {};
2978
- if (running.state === "running") {
2998
+ if (running.state === "running" && launchRestarts) restart.restartedPid = running.pid;
2999
+ else if (running.state === "running") {
2979
3000
  try {
2980
3001
  await e.runFileAsync("xcrun", [
2981
3002
  "simctl",
@@ -2987,7 +3008,7 @@ async function launchIosApp({ udid, bundleId, metroPort, devClientScheme = null,
2987
3008
  return {
2988
3009
  failed: true,
2989
3010
  code: LAUNCH_ERROR,
2990
- reason: `simctl terminate ${bundleId} failed, so the running app (pid ${running.pid}) was not restarted: ${describeIosSimulatorFailure(err, e)}`
3011
+ reason: `simctl terminate ${bundleId} failed, so the running app (pid ${running.pid}) was not restarted: ${await describeIosSimulatorFailure(err, e)}`
2991
3012
  };
2992
3013
  }
2993
3014
  restart.restartedPid = running.pid;
@@ -3008,7 +3029,7 @@ async function launchIosApp({ udid, bundleId, metroPort, devClientScheme = null,
3008
3029
  return {
3009
3030
  failed: true,
3010
3031
  code: LAUNCH_ERROR,
3011
- reason: `Could not point ${bundleId} at Metro port ${metroPort} (defaults write RCT_jsLocation): ${describeIosSimulatorFailure(err, e)}`
3032
+ reason: `Could not point ${bundleId} at Metro port ${metroPort} (defaults write RCT_jsLocation): ${await describeIosSimulatorFailure(err, e)}`
3012
3033
  };
3013
3034
  }
3014
3035
  if (devClientScheme) {
@@ -3020,7 +3041,7 @@ async function launchIosApp({ udid, bundleId, metroPort, devClientScheme = null,
3020
3041
  return {
3021
3042
  failed: true,
3022
3043
  code: LAUNCH_ERROR,
3023
- reason: `Could not turn off ${bundleId}'s dev menu before opening it (defaults write): ${describeIosSimulatorFailure(err, e)}`
3044
+ reason: `Could not turn off ${bundleId}'s dev menu before opening it (defaults write): ${await describeIosSimulatorFailure(err, e)}`
3024
3045
  };
3025
3046
  }
3026
3047
  let launchedWithInitialUrl = false;
@@ -3069,7 +3090,7 @@ async function launchIosApp({ udid, bundleId, metroPort, devClientScheme = null,
3069
3090
  return {
3070
3091
  failed: true,
3071
3092
  code: LAUNCH_ERROR,
3072
- reason: `simctl ${launchedWithInitialUrl ? `launch ${bundleId}` : `openurl ${url}`} failed: ${describeIosSimulatorFailure(err, e)}`
3093
+ reason: `simctl ${launchedWithInitialUrl ? `launch ${bundleId}` : `openurl ${url}`} failed: ${await describeIosSimulatorFailure(err, e)}`
3073
3094
  };
3074
3095
  }
3075
3096
  }
@@ -3098,7 +3119,7 @@ async function launchIosApp({ udid, bundleId, metroPort, devClientScheme = null,
3098
3119
  return {
3099
3120
  failed: true,
3100
3121
  code: LAUNCH_ERROR,
3101
- reason: `simctl launch ${bundleId} failed: ${describeIosSimulatorFailure(err, e)}`
3122
+ reason: `simctl launch ${bundleId} failed: ${await describeIosSimulatorFailure(err, e)}`
3102
3123
  };
3103
3124
  }
3104
3125
  }
@@ -3658,7 +3679,10 @@ const LAUNCH_UNVERIFIED = "unverified";
3658
3679
  const LAUNCH_BUNDLING = "bundling";
3659
3680
  const LAUNCH_FATAL = "fatal";
3660
3681
  const VERIFY_TIMEOUT_MS = 2e4;
3682
+ const MANIFEST_GRACE_MS = 15e3;
3683
+ const MANIFEST_VERIFY_TIMEOUT_MS = 6e4;
3661
3684
  const STABILITY_WINDOW_MS = 3e3;
3685
+ const JS_RUNNING_SETTLE_MS = 500;
3662
3686
  const VERIFY_POLL_MS = 500;
3663
3687
  const BUNDLE_EVENTS = /* @__PURE__ */ new Set([
3664
3688
  "bundle_build_started",
@@ -3695,6 +3719,21 @@ function isBundleRequestProof(record, since = 0, port = null, platform = null) {
3695
3719
  if (!new RegExp(`:${digits}\\b`).test(rec.msg)) return false;
3696
3720
  return BUNDLE_URL_PATH.test(rec.msg);
3697
3721
  }
3722
+ const JS_RUNNING = /^Running "[^"]*"/;
3723
+ function isJsRunning(record, platform) {
3724
+ return record.src === "device" && record.platform === platform && (record.level === "info" || record.level === "debug") && typeof record.msg === "string" && JS_RUNNING.test(record.msg);
3725
+ }
3726
+ function jsRunningSince(signals, since, runtimeWaiting, platform) {
3727
+ if (since === null || runtimeWaiting) return null;
3728
+ const running = signals.find((record) => Number(record.ts) >= since && isJsRunning(record, platform));
3729
+ return running ? Number(running.ts) : null;
3730
+ }
3731
+ function settledWindowEnd(stabilityDeadline, jsRunningAt) {
3732
+ return stabilityDeadline !== null && jsRunningAt !== null ? Math.min(stabilityDeadline, jsRunningAt + JS_RUNNING_SETTLE_MS) : stabilityDeadline;
3733
+ }
3734
+ function jsRunningFields(jsRunningAt) {
3735
+ return jsRunningAt === null ? {} : { jsRunning: true };
3736
+ }
3698
3737
  function expoBundleLine(msg) {
3699
3738
  return /\bBundl(?:ing|ed)\b/.test(msg);
3700
3739
  }
@@ -3710,6 +3749,19 @@ async function nativeLaunchFailure({ readCrashes, since, platform, processAlive,
3710
3749
  waitedMs
3711
3750
  } : null;
3712
3751
  }
3752
+ function manifestDeadline(records, { startedAt, timeoutMs }) {
3753
+ const base = startedAt + timeoutMs;
3754
+ const open = /* @__PURE__ */ new Set();
3755
+ let servedAt = null;
3756
+ for (const record of records.toSorted((a, b) => Number(a.ts) - Number(b.ts))) if (record.event === "manifest_request_started") open.add(record.requestId);
3757
+ else {
3758
+ open.delete(record.requestId);
3759
+ if (record.event === "manifest_request_finished") servedAt = Number(record.ts);
3760
+ }
3761
+ const cap = startedAt + Math.max(timeoutMs, MANIFEST_VERIFY_TIMEOUT_MS);
3762
+ if (open.size > 0) return cap;
3763
+ return servedAt === null ? base : Math.min(cap, Math.max(base, servedAt + MANIFEST_GRACE_MS));
3764
+ }
3713
3765
  async function verifyLaunch({ slot, appPid, platformShared, logsDir, since, metroPort = null, platform = null, mode = null, requireBundleResponse, timeoutMs = VERIFY_TIMEOUT_MS, stabilityMs = STABILITY_WINDOW_MS, pollMs = VERIFY_POLL_MS, readRecords = null, readDeviceRecords = null, readClientRecords = null, readNativeCrashes = null, processAlive = null, onReadinessPending = null, onActivity, now = Date.now, sleep = (ms) => new Promise((r) => setTimeout(r, ms)) } = {}) {
3714
3766
  const delivered = (record) => deliveryOwner(record, {
3715
3767
  slot,
@@ -3720,7 +3772,8 @@ async function verifyLaunch({ slot, appPid, platformShared, logsDir, since, metr
3720
3772
  const readDevice = readDeviceRecords || (() => readNdjson(logsDir, "device.ndjson"));
3721
3773
  const readClient = readClientRecords || (() => readNdjson(logsDir, "client.ndjson"));
3722
3774
  const startedAt = now();
3723
- const bundleDeadline = startedAt + Math.max(0, timeoutMs);
3775
+ const baseTimeoutMs = Math.max(0, timeoutMs);
3776
+ let bundleDeadline = startedAt + baseTimeoutMs;
3724
3777
  let proof = null;
3725
3778
  let activity = null;
3726
3779
  let stabilityDeadline = null;
@@ -3741,6 +3794,10 @@ async function verifyLaunch({ slot, appPid, platformShared, logsDir, since, metr
3741
3794
  const bundleRecords = metroRecords.filter((record) => (!requireBundleResponse || String(record.event).startsWith("bundle_response_")) && delivered(record));
3742
3795
  const deviceRecords = readDevice().filter((record) => after(record, since) && (slot === void 0 || (record.slot ?? "default") === slot));
3743
3796
  const clientRecords = readClient().filter((record) => after(record, since) && !platformShared);
3797
+ bundleDeadline = manifestDeadline(metroRecords.filter((record) => String(record.event).startsWith("manifest_request_") && (!platform || record.platform === platform)), {
3798
+ startedAt,
3799
+ timeoutMs: baseTimeoutMs
3800
+ });
3744
3801
  if (now() >= nextCrashCheck) {
3745
3802
  nextCrashCheck = now() + 2e3;
3746
3803
  const crash = await nativeLaunchFailure({
@@ -3782,6 +3839,8 @@ async function verifyLaunch({ slot, appPid, platformShared, logsDir, since, metr
3782
3839
  const runtimeWaiting = runtimeLoadingAt !== null && runtimeStartedAt === null;
3783
3840
  const completedAt = proof ? Math.max(Number(proof.ts), runtimeStartedAt ?? 0) : null;
3784
3841
  if (completedAt !== null) stabilityDeadline = completedAt + Math.max(0, stabilityMs);
3842
+ const jsRunningAt = jsRunningSince(signals, completedAt, runtimeWaiting, platform);
3843
+ const windowEnd = settledWindowEnd(stabilityDeadline, jsRunningAt);
3785
3844
  const readinessDeadline = completedAt !== null ? completedAt + APP_READINESS_TIMEOUT_MS : bundleDeadline;
3786
3845
  if (pendingAt === null) {
3787
3846
  const pending = signals.find((record) => appReadinessSignal(record, platform) === "pending" && (runtimeWaiting || stabilityDeadline === null || Number(record.ts) <= stabilityDeadline));
@@ -3808,7 +3867,7 @@ async function verifyLaunch({ slot, appPid, platformShared, logsDir, since, metr
3808
3867
  ...pendingAt !== null ? { readiness: "error" } : {}
3809
3868
  };
3810
3869
  }
3811
- if (proof && stabilityDeadline !== null && (pendingAt !== null || now() >= stabilityDeadline)) {
3870
+ if (proof && windowEnd !== null && (pendingAt !== null || now() >= windowEnd)) {
3812
3871
  const errorSince = pendingAt === null ? Number(proof.ts ?? since ?? 0) : Number(since ?? 0);
3813
3872
  const errors = [
3814
3873
  ...metroRecords.filter((record) => after(record, errorSince) && recordCouldBelongToPlatform(record, platform)),
@@ -3836,7 +3895,8 @@ async function verifyLaunch({ slot, appPid, platformShared, logsDir, since, metr
3836
3895
  processAlive: alive,
3837
3896
  mode,
3838
3897
  waitedMs,
3839
- ...pendingAt !== null ? { readiness: appErrors ? "error" : ready ? "ready" : "timed-out" } : {}
3898
+ ...pendingAt !== null ? { readiness: appErrors ? "error" : ready ? "ready" : "timed-out" } : {},
3899
+ ...jsRunningFields(jsRunningAt)
3840
3900
  };
3841
3901
  }
3842
3902
  if ((!proof || runtimeWaiting) && now() >= bundleDeadline) return await bundleTimeoutOutcome({
@@ -3852,7 +3912,7 @@ async function verifyLaunch({ slot, appPid, platformShared, logsDir, since, metr
3852
3912
  mode,
3853
3913
  waitedMs: now() - startedAt
3854
3914
  });
3855
- await sleep(Math.min(pollMs, Math.max(0, (runtimeWaiting ? bundleDeadline : proof && pendingAt !== null ? readinessDeadline : stabilityDeadline ?? bundleDeadline) - now())));
3915
+ await sleep(Math.min(pollMs, Math.max(0, (runtimeWaiting ? bundleDeadline : proof && pendingAt !== null ? readinessDeadline : windowEnd ?? bundleDeadline) - now())));
3856
3916
  }
3857
3917
  }
3858
3918
  function launchActivity(pendingAt, proof, bundling) {
@@ -4052,6 +4112,7 @@ function resolveMetroOrigin({ metroPort, publicUrl = null, mode = "auto", isExpo
4052
4112
  remedy: "This is a Stim bug: the tunnel step did not run before the launch."
4053
4113
  };
4054
4114
  }
4115
+ const EAS_PROJECT_NOT_CONFIGURED = /EAS project not configured/i;
4055
4116
  function describe(err) {
4056
4117
  const e = err;
4057
4118
  const stderr = typeof e?.stderr === "string" ? e.stderr.trim() : "";
@@ -4137,7 +4198,8 @@ function remoteDeviceDeps(ctx) {
4137
4198
  reason: cleanup.reason ?? `Could not verify recorded EAS session ${recorded.sessionId}.`,
4138
4199
  remedy: "Inspect the recorded session, then run `stim stop` again."
4139
4200
  };
4140
- clearRemoteSession(ctx.root, recorded.sessionId);
4201
+ const sessionId = recorded.sessionId;
4202
+ await withWorkspaceStateLockAsync(ctx.root, () => clearRemoteSession(ctx.root, sessionId));
4141
4203
  }
4142
4204
  }
4143
4205
  }
@@ -4168,9 +4230,16 @@ function remoteDeviceDeps(ctx) {
4168
4230
  remedy: `Run \`eas simulator:list --name ${name}\` and stop any running session with \`eas simulator:stop --id <id>\`, then retry.`
4169
4231
  };
4170
4232
  }
4233
+ const failure = describe(err);
4234
+ if (EAS_PROJECT_NOT_CONFIGURED.test(failure)) return {
4235
+ failed: true,
4236
+ code: "STIM_REMOTE_EAS_UNAVAILABLE",
4237
+ reason: "The Expo app is not linked to an EAS project, so no EAS Simulator session was created.",
4238
+ remedy: `Link it with \`eas init --id <project-id> --non-interactive\` (existing project) or \`eas init --account <account-name> --non-interactive\` (new project), then run \`stim ${ctx.platform ?? "ios"} --remote eas\` again.`
4239
+ };
4171
4240
  return {
4172
4241
  failed: true,
4173
- reason: `eas sim failed: ${describe(err)}`
4242
+ reason: `eas sim failed: ${failure}`
4174
4243
  };
4175
4244
  }
4176
4245
  const created = parseCreatedSession(stdout);
@@ -4379,6 +4448,18 @@ async function resolveRemoteContext({ root, backend, platform = "ios", easBin, e
4379
4448
  code: "STIM_BAD_ARG"
4380
4449
  };
4381
4450
  }
4451
+ let sessionMaxMinutes = maxDurationMinutes;
4452
+ if (backend === "eas" && sessionMaxMinutes === null) {
4453
+ const setting = settingDefinition("remote.easMaxDurationMinutes");
4454
+ const configured = loadConfig$1()?.remote?.easMaxDurationMinutes;
4455
+ const problem = setting && configured !== void 0 ? settingValueError(setting, configured) : null;
4456
+ if (problem) return {
4457
+ failed: `Invalid remote.easMaxDurationMinutes value ${JSON.stringify(configured)}. Expected ${problem}.`,
4458
+ remedy: "Run `stim settings set remote.easMaxDurationMinutes <minutes> --scope machine`, then retry.",
4459
+ code: "STIM_BAD_ARG"
4460
+ };
4461
+ sessionMaxMinutes = typeof configured === "number" ? configured : Number(setting?.default);
4462
+ }
4382
4463
  return { ctx: {
4383
4464
  root,
4384
4465
  label: `${ownedDeviceLabel(root)}-${workspaceId$1(root)}`,
@@ -4387,7 +4468,7 @@ async function resolveRemoteContext({ root, backend, platform = "ios", easBin, e
4387
4468
  easBin: easBin ?? "",
4388
4469
  agentDeviceBin,
4389
4470
  operation,
4390
- maxDurationMinutes,
4471
+ maxDurationMinutes: sessionMaxMinutes,
4391
4472
  deviceType: backend === "eas" ? deviceType : null,
4392
4473
  publicMetroUrl: null,
4393
4474
  existingDaemon
@@ -4504,7 +4585,7 @@ async function ensureRemoteBootOwned({ root, platform, sessionName, startedAt, d
4504
4585
  const sessionId = createdSessionId();
4505
4586
  if (!sessionId) return booted;
4506
4587
  try {
4507
- recordEasSessionClaim({
4588
+ await recordEasSessionClaim({
4508
4589
  sessionId,
4509
4590
  name: sessionName,
4510
4591
  platform,
@@ -4513,7 +4594,7 @@ async function ensureRemoteBootOwned({ root, platform, sessionName, startedAt, d
4513
4594
  stateFile: workspaceStateFile$1(root)
4514
4595
  }, ledgerRoot);
4515
4596
  const preview = webPreviewUrl();
4516
- writeState(root, { remoteDevice: {
4597
+ await writeState(root, { remoteDevice: {
4517
4598
  platform,
4518
4599
  sessionId,
4519
4600
  startedAt,
@@ -5777,8 +5858,8 @@ async function deleteProjectDevices(orphanedDevices, staleDevices, staleDeviceRe
5777
5858
  projectPath: d.project,
5778
5859
  slot: d.slot
5779
5860
  } } : {},
5780
- ..."project" in d ? { onRemoved: () => {
5781
- if (clearDevice(d.project, d.kind, d.slot, d.id)) output.log(chalk.dim(` cleared the ${d.kind} record for ${d.project}`));
5861
+ ..."project" in d ? { onRemoved: async () => {
5862
+ if (await withConfigLockAsync$1(() => clearDevice(d.project, d.kind, d.slot, d.id))) output.log(chalk.dim(` cleared the ${d.kind} record for ${d.project}`));
5782
5863
  } } : {},
5783
5864
  ..."orphanedDirectory" in d ? { orphanedDirectory: d.orphanedDirectory } : {}
5784
5865
  });
@@ -5811,7 +5892,7 @@ async function deleteProjectDevices(orphanedDevices, staleDevices, staleDeviceRe
5811
5892
  for (const d of staleDevices) {
5812
5893
  const status = await reap(d);
5813
5894
  if (d.kind === "ios" && (status === "torn-down" || status === "missing")) {
5814
- clearDevice(d.project, d.kind, d.slot, d.id);
5895
+ await withConfigLockAsync$1(() => clearDevice(d.project, d.kind, d.slot, d.id));
5815
5896
  output.log(chalk.dim(` cleared the ${d.kind} record for ${d.project}`));
5816
5897
  }
5817
5898
  }
@@ -7645,6 +7726,7 @@ const NO_BUILD_PROGRESS = {
7645
7726
  waitingFor: () => {},
7646
7727
  output: () => {},
7647
7728
  durations: () => ({}),
7729
+ phase: () => null,
7648
7730
  steps: () => null,
7649
7731
  clear: () => {}
7650
7732
  };
@@ -7671,6 +7753,23 @@ function tapBuildLog(writer, progress) {
7671
7753
  }
7672
7754
  };
7673
7755
  }
7756
+ function runFailureRecord({ code, message, phase }) {
7757
+ return {
7758
+ src: "build",
7759
+ level: "error",
7760
+ event: "run_failed",
7761
+ ...code ? { code } : {},
7762
+ ...phase ? { phase } : {},
7763
+ msg: [code, message].filter(Boolean).join(": ") || "the run failed"
7764
+ };
7765
+ }
7766
+ function thrownRunFailureRecord(error, phase) {
7767
+ return runFailureRecord({
7768
+ code: typeof error === "object" && error !== null && "code" in error && typeof error.code === "string" ? error.code : void 0,
7769
+ message: error instanceof Error ? error.message : String(error),
7770
+ phase
7771
+ });
7772
+ }
7674
7773
  const DETAIL_WRITE_MS = 2e3;
7675
7774
  function toolLine(record) {
7676
7775
  if (!record || typeof record !== "object") return null;
@@ -7853,6 +7952,9 @@ function startBuildProgress({ root, platform, slot, claim, now = Date.now, note
7853
7952
  durations() {
7854
7953
  return phaseDurations(record.phases, now());
7855
7954
  },
7955
+ phase() {
7956
+ return record.phase;
7957
+ },
7856
7958
  steps() {
7857
7959
  const detail = parser.detail("");
7858
7960
  return detail?.unit === "steps" ? detail.total : null;
@@ -9282,4 +9384,4 @@ function budgetLine(report) {
9282
9384
  return `${report.volumes.length ? `${report.volumes.map((v) => `${v.freeGb} GB free on ${v.volume}`).join(", ")} (reclaims below ${Math.max(budget.minFreeDiskGb, budget.hardFloorDiskGb)} GB, ${budget.hardFloorDiskGb ? `refuses below ${budget.hardFloorDiskGb} GB` : "never refuses"})` : "disk budget off"}; ${report.memory ? `roughly ${report.memory.committedGb} GB of a ${budget.maxCommittedMemoryGb} GB memory budget committed` : "memory budget off"}`;
9283
9385
  }
9284
9386
  //#endregion
9285
- export { includesRecordings as $, MIN_EAS_CLI_DEVICE_VERSION as $n, readCollectorRecords as $t, workspaceBuildInProgress as A, readBundleSchemes as An, unverifiedDeviceCommand as At, recordFinishedBuild as B, checkEasAuth as Bn, ensureMetroReachable as Bt, collectIdleDevices as C, launchAndroidApp as Cn, describeParkedSims as Ct, idleDeviceLines as D, reverseMetroPorts as Dn, findOrphanedDevices as Dt, collectOwnedDeviceActivityAsync as E, restartedAppNote as En, eraseParkedDevices as Et, buildStatusLine as F, processContext as Fn, withRemoteSessionGcLocks as Ft, readStats$1 as G, providerFromConfig as Gn, resolveRemoteContext as Gt, tapBuildLog as H, isEasAuthFailureText as Hn, readInstalledEasCliVersionAsync as Ht, bundlingActivity as I, runProcessOperation as In, REMOTE_SESSION_ERROR as It, recordRunStats as J, resolveRemote as Jn, LAUNCH_FATAL as Jt, recordCapacityRefusal as K, readProjectConfig as Kn, withEasProjectLock as Kt, estimateBuild as L, RESOLVE_TIMEOUT_MS as Ln, binOnPath as Lt, NO_BUILD_PROGRESS as M, readRemoteSimulatorArch as Mn, collectEasSessionSweep as Mt, activeBuildState as N, gateMetroOrigin as Nn, deleteEasSessions as Nt, parseIdleDuration as O, writeDebugHttpHost as On, findStaleDeviceRecords as Ot, buildReport as P, exitAfterFlush as Pn, describeError as Pt, includesParkedDevices as Q, remoteCommand as Qn, isBundleProof as Qt, parseActiveBuild as R, UPLOAD_TIMEOUT_MS as Rn, bundleEntryPoint as Rt, withdrawDevServerStopRequest as S, iosAppProcess as Sn, sizeCaches as Sr, deleteProjectDevices as St, collectOwnedDeviceActivity as T, launchIosApp as Tn, deviceSweepIsScoped as Tt, createRunRecorder as U, loadProjectProvider as Un, remoteAndroidDeps as Ut, startBuildProgress as V, easAuthNote as Vn, ensureRemoteBootOwned as Vt, readRunEstimates as W, ownerFromConfig as Wn, remoteIosDeps as Wt, emptyCaches as X, bundleInvocation as Xn, RELEASE_VERIFY_WAIT_MS as Xt, statsProjectKey$1 as Y, uploadRemote as Yn, LAUNCH_UNVERIFIED as Yt, includesArchives as Z, remoteCliInvocation as Zn, VERIFY_TIMEOUT_MS as Zt, devServerStopRecord as _, ensureMetroReverse as _n, phase as _r, collectDeviceLeases as _t, inspectBudget as a, verifyReleaseLaunch as an, GRADLE_DAEMONS_KIND as ar, selectsBeyondCaches as at, requestDevServerStop as b, installConflictKind as bn, discoverCaches as br, deleteParkedAvds as bt, readVolumeSpace as c, DEFAULT_METRO_PORT as cn, inspectWatchmanMemory as cr, deleteGradleVersion as ct, trimmableCaches as d, androidAppProcess as dn, memoryScope as dr, gradleVersionsPending as dt, readMetroRecords as en, MIN_EAS_CLI_SIMULATOR_VERSION as er, includesWorkspaceOutputs as et, stopOwnedMetro as f, androidDevClientUrl as fn, memorySweepIsScoped as fr, includesGradleVersions as ft, devServerStopLevel as g, deviceShellArg as gn, stopIdleGradleDaemons as gr, DEVICE_LIST_TIMEOUT_MS$1 as gt, describeMetroLastStop as h, devClientUrl as hn, scopedMemoryReport as hr, collectInventory as ht, enforceBudget as i, verifyLaunch as in, parseArchiveSelector as ir, selectCaches as it, ACTIVE_BUILD_KEY as j, schemesFromInfoPlist as jn, withAndroidAvdSizes as jt, shutDownIdleDevices as k, pickDevClientScheme as kn, findStaleProjectDevices as kt, readVolumeSpaceAsync as l, INSTALL_ERROR as ln, memoryCacheKind as lr, deleteGradleVersions as lt, describeDevServerStop as m, clearOtherUserApps as mn, reclaimMemory as mr, getMachineCacheReport as mt, budgetLine as n, unverifiedLaunchLines as nn, easCliUpgradeRemedy as nr, planCacheEmptying as nt, machineNumber as o, APP_READINESS_TIMEOUT_MS as on, WATCHMAN_KIND as or, trimCaches as ot, stopOwnedMetroForReset as p, appProcessFromPid as pn, memoryWorkPending as pr, waitForGradleExit as pt, recordCapacityWait as q, resolveEasCliBin as qn, LAUNCH_BUNDLING as qt, cacheLabel as r, verifyAndroidReleaseLaunch as rn, ownedSessionName as rr, previewScopedEmptying as rt, peekBudget as s, ADB_INSTALL_TIMEOUT_MS as sn, collectMemoryReport as sr, collectGradleVersions as st, budgetGate as t, unattributedLaunchLines as tn, easCliSupport as tr, isWorkspacesScope as tt, resolveBudget as u, IOS_DEV_MENU_OFF_DEFAULTS_PLIST as un, memoryLines as ur, gradleVersionLines as ut, logVanishedSupervisor as v, hasMetroReverse as vn, attributeMachineUsage as vr, collectParkedAvds as vt, collectIdleDevicesAsync as w, launchAndroidReleaseApp as wn, describeUnverifiableDevices as wt, vanishedSupervisorMessage as x, installIosApp as xn, pruneCache as xr, deleteParkedSims as xt, metroLastStop as y, installAndroidApp as yn, readFootprints as yr, collectParkedSims as yt, recordBuildPhase as z, cacheLevel as zn, endRecordedSession as zt };
9387
+ export { includesArchives as $, bundleInvocation as $n, RELEASE_VERIFY_WAIT_MS as $t, workspaceBuildInProgress as A, reverseMetroPorts as An, findStaleDeviceRecords as At, recordFinishedBuild as B, RESOLVE_TIMEOUT_MS as Bn, bundleEntryPoint as Bt, collectIdleDevices as C, installConflictKind as Cn, discoverCaches as Cr, deleteParkedSims as Ct, idleDeviceLines as D, launchAndroidReleaseApp as Dn, deviceSweepIsScoped as Dt, collectOwnedDeviceActivityAsync as E, launchAndroidApp as En, describeUnverifiableDevices as Et, buildStatusLine as F, readRemoteSimulatorArch as Fn, deleteEasSessions as Ft, createRunRecorder as G, isEasAuthFailureText as Gn, remoteAndroidDeps as Gt, startBuildProgress as H, cacheLevel as Hn, ensureMetroReachable as Ht, bundlingActivity as I, gateMetroOrigin as In, describeError as It, recordCapacityRefusal as J, providerFromConfig as Jn, withEasProjectLock as Jt, readRunEstimates as K, loadProjectProvider as Kn, remoteIosDeps as Kt, estimateBuild as L, exitAfterFlush as Ln, withRemoteSessionGcLocks as Lt, NO_BUILD_PROGRESS as M, pickDevClientScheme as Mn, unverifiedDeviceCommand as Mt, activeBuildState as N, readBundleSchemes as Nn, withAndroidAvdSizes as Nt, parseIdleDuration as O, launchIosApp as On, eraseParkedDevices as Ot, buildReport as P, schemesFromInfoPlist as Pn, collectEasSessionSweep as Pt, emptyCaches as Q, uploadRemote as Qn, MANIFEST_VERIFY_TIMEOUT_MS as Qt, parseActiveBuild as R, processContext as Rn, REMOTE_SESSION_ERROR as Rt, withdrawDevServerStopRequest as S, installAndroidApp as Sn, readFootprints as Sr, deleteParkedAvds as St, collectOwnedDeviceActivity as T, iosAppProcess as Tn, sizeCaches as Tr, describeParkedSims as Tt, tapBuildLog as U, checkEasAuth as Un, ensureRemoteBootOwned as Ut, runFailureRecord as V, UPLOAD_TIMEOUT_MS as Vn, endRecordedSession as Vt, thrownRunFailureRecord as W, easAuthNote as Wn, readInstalledEasCliVersionAsync as Wt, recordRunStats as X, resolveEasCliBin as Xn, LAUNCH_FATAL as Xt, recordCapacityWait as Y, readProjectConfig as Yn, LAUNCH_BUNDLING as Yt, statsProjectKey$1 as Z, resolveRemote as Zn, LAUNCH_UNVERIFIED as Zt, devServerStopRecord as _, clearOtherUserApps as _n, reclaimMemory as _r, collectInventory as _t, inspectBudget as a, unverifiedLaunchLines as an, easCliUpgradeRemedy as ar, previewScopedEmptying as at, requestDevServerStop as b, ensureMetroReverse as bn, phase as br, collectParkedAvds as bt, readVolumeSpace as c, verifyReleaseLaunch as cn, GRADLE_DAEMONS_KIND as cr, trimCaches as ct, trimmableCaches as d, DEFAULT_METRO_PORT as dn, inspectWatchmanMemory as dr, deleteGradleVersions as dt, VERIFY_TIMEOUT_MS as en, remoteCliInvocation as er, includesParkedDevices as et, stopOwnedMetro as f, INSTALL_ERROR as fn, memoryCacheKind as fr, gradleVersionLines as ft, devServerStopLevel as g, appProcessFromPid as gn, memoryWorkPending as gr, getMachineCacheReport as gt, describeMetroLastStop as h, androidDevClientUrl as hn, memorySweepIsScoped as hr, waitForGradleExit as ht, enforceBudget as i, unattributedLaunchLines as in, easCliSupport as ir, planCacheEmptying as it, ACTIVE_BUILD_KEY as j, writeDebugHttpHost as jn, findStaleProjectDevices as jt, shutDownIdleDevices as k, restartedAppNote as kn, findOrphanedDevices as kt, readVolumeSpaceAsync as l, APP_READINESS_TIMEOUT_MS as ln, WATCHMAN_KIND as lr, collectGradleVersions as lt, describeDevServerStop as m, androidAppProcess as mn, memoryScope as mr, includesGradleVersions as mt, budgetLine as n, readCollectorRecords as nn, MIN_EAS_CLI_DEVICE_VERSION as nr, includesWorkspaceOutputs as nt, machineNumber as o, verifyAndroidReleaseLaunch as on, ownedSessionName as or, selectCaches as ot, stopOwnedMetroForReset as p, IOS_DEV_MENU_OFF_DEFAULTS_PLIST as pn, memoryLines as pr, gradleVersionsPending as pt, readStats$1 as q, ownerFromConfig as qn, resolveRemoteContext as qt, cacheLabel as r, readMetroRecords as rn, MIN_EAS_CLI_SIMULATOR_VERSION as rr, isWorkspacesScope as rt, peekBudget as s, verifyLaunch as sn, parseArchiveSelector as sr, selectsBeyondCaches as st, budgetGate as t, isBundleProof as tn, remoteCommand as tr, includesRecordings as tt, resolveBudget as u, ADB_INSTALL_TIMEOUT_MS as un, collectMemoryReport as ur, deleteGradleVersion as ut, logVanishedSupervisor as v, devClientUrl as vn, scopedMemoryReport as vr, DEVICE_LIST_TIMEOUT_MS$1 as vt, collectIdleDevicesAsync as w, installIosApp as wn, pruneCache as wr, deleteProjectDevices as wt, vanishedSupervisorMessage as x, hasMetroReverse as xn, attributeMachineUsage as xr, collectParkedSims as xt, metroLastStop as y, deviceShellArg as yn, stopIdleGradleDaemons as yr, collectDeviceLeases as yt, recordBuildPhase as z, runProcessOperation as zn, binOnPath as zt };