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,30 +1,29 @@
1
- import { h as withDrainingCancellation } from "./exec-DEoAhcze.mjs";
1
+ import { c as throwIfCancelled, s as cancelledError, x as withDrainingCancellation } from "./exec-VFRpu1iA.mjs";
2
2
  import { d as workspaceDir, m as workspaceLogsDir } from "./paths-DQtTgsBf.mjs";
3
- import { E as upsertProject, p as getProject, u as getConcurrencyLimits } 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 { i as recordWorkspaceUse } from "./workspace-state-U08dEzhG.mjs";
7
- import { G as resolveCacheProviderConfig, J as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY } from "./settings-C7O8A6ZI.mjs";
8
- import { f as projectRegistry, v as detectIsExpo } from "./project-DhCtQWWU.mjs";
3
+ import { E as upsertProject, O as withConfigLockAsync, p as getProject, u as getConcurrencyLimits } from "./config-BZhXY15H.mjs";
4
+ import { l as phaseLine } from "./command-output-BBvS1H6v.mjs";
5
+ import { a as recordWorkspaceUseAsync } from "./workspace-state-CPSp3mav.mjs";
6
+ import { K as resolveCacheProviderConfig, Y as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY } from "./settings-B5tCoq9N.mjs";
7
+ import { f as projectRegistry, v as detectIsExpo } from "./project-BiC68mIp.mjs";
8
+ import { s as workspaceShareURL } from "./stim-desktop-DS0mzR8U.mjs";
9
+ import { k as hostSystemImageArch } from "./android-Cjcj8MCw.mjs";
9
10
  import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
10
- import { B as recordFinishedBuild, Bn as checkEasAuth, H as tapBuildLog, J as recordRunStats, Jn as resolveRemote, U as createRunRecorder, V as startBuildProgress, W as readRunEstimates, Y as statsProjectKey, Yn as uploadRemote } from "./budget-3ivAK99e.mjs";
11
- import { d as runCancellationSignal, f as withNativeBuildRun } from "./native-run-Dv88i0aU.mjs";
12
- import { I as acquireBuildSlot, R as releaseBuildSlot } from "./workspaces-e41xsjKr.mjs";
13
- import { F as waitForBuild, M as acquireBuildLock, P as releaseBuildLock } from "./activity-BpWUPgUm.mjs";
14
- import { p as providerUploadOutcome } from "./build-cache-Dv7RN200.mjs";
15
- import { k as hostSystemImageArch } from "./android-C7sVmyI9.mjs";
16
- import { m as listIosRuntimes } from "./ios-hcBpnEGk.mjs";
17
- import { s as workspaceShareURL } from "./stim-desktop-D5OGpYZM.mjs";
18
- import { d as optimizationBuildProfile, l as artifactCachePolicy } from "./errors-ccaPc4ox.mjs";
19
- import { p as readBundleId } from "./xcode-Rq744mBF.mjs";
20
- import { h as setRemoteLogSink } from "./client-B4MMzfo_.mjs";
21
- import { s as resolveBuildPlacement } from "./selection-DSMbWEX2.mjs";
22
- import { c as iosProjectPathError, g as resolveIosBuildSetup, m as resolveConfiguration, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-TWuQlHQo.mjs";
23
- import { n as ensureWorkspaceStorageSafely } from "./native-runtime-DBRfY_PN.mjs";
24
- import { t as acquireAndroidArtifact } from "./artifact-Xvgibgzq.mjs";
25
- import { i as persistLastBuild, n as finishAndroidUpload, s as resolveAndroidBuildPlan } from "./result-utnBea7x.mjs";
26
- import { a as lastBuildRecord } from "./ios-project-CSZYI1iu.mjs";
27
- import { t as acquireIosArtifact } from "./artifact-DBI3DALs.mjs";
11
+ import { B as recordFinishedBuild, G as createRunRecorder, H as startBuildProgress, K as readRunEstimates, Qn as uploadRemote, U as tapBuildLog, Un as checkEasAuth, X as recordRunStats, Z as statsProjectKey, Zn as resolveRemote } from "./budget-HyShrIpL.mjs";
12
+ import { d as runCancellationSignal, f as withNativeBuildRun } from "./native-run-D5OJsGwA.mjs";
13
+ import { L as acquireBuildSlot, z as releaseBuildSlot } from "./workspaces-C9w4aeXF.mjs";
14
+ import { F as waitForBuild, M as acquireBuildLock, P as releaseBuildLock } from "./activity-BpjwrQXU.mjs";
15
+ import { _ as providerUploadOutcome, x as storedAppId } from "./build-cache-CKCzxzxA.mjs";
16
+ import { m as listIosRuntimes } from "./ios-BQzvJlzw.mjs";
17
+ import { d as optimizationBuildProfile, l as artifactCachePolicy } from "./errors-DHm_U5gv.mjs";
18
+ import { p as readBundleId } from "./xcode-CiIIDnuD.mjs";
19
+ import { S as setRemoteLogSink } from "./client-BQsmyp_-.mjs";
20
+ import { c as resolveBuildPlacement } from "./selection-D5cxEl3t.mjs";
21
+ import { c as iosProjectPathError, g as resolveIosBuildSetup, m as resolveConfiguration, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-qKcbgmI5.mjs";
22
+ import { n as ensureWorkspaceStorageSafely } from "./native-runtime-B9w_Qyz3.mjs";
23
+ import { t as acquireAndroidArtifact } from "./artifact-Co8zixVx.mjs";
24
+ import { a as persistLastBuild, l as resolveAndroidBuildPlan, n as finishAndroidUpload } from "./result-CR2vk2cj.mjs";
25
+ import { a as lastBuildRecord } from "./ios-project-DCUDo06I.mjs";
26
+ import { t as acquireIosArtifact } from "./artifact-DN8JNwqS.mjs";
28
27
  import { constants, promises } from "node:fs";
29
28
  import { basename, join } from "node:path";
30
29
  import { hostSimulatorArch } from "@stim-cli/core";
@@ -74,8 +73,10 @@ async function buildAndroidOperation(context, root, options, { artifactScope, ca
74
73
  command: "build",
75
74
  platform: "android"
76
75
  }, async (claim) => {
77
- if (!getProject(root)) upsertProject(root, {});
78
- recordWorkspaceUse(root, /* @__PURE__ */ new Date(), context.env, context.cwd);
76
+ await withConfigLockAsync(() => {
77
+ if (!getProject(root)) upsertProject(root, {});
78
+ });
79
+ await recordWorkspaceUseAsync(root, /* @__PURE__ */ new Date(), context.env, context.cwd, context.signal);
79
80
  const started = Date.now();
80
81
  const startedAt = new Date(started).toISOString();
81
82
  const progress = startBuildProgress({
@@ -181,6 +182,7 @@ async function buildAndroidOperation(context, root, options, { artifactScope, ca
181
182
  resolveRemoteBuild: resolveRemote,
182
183
  uploadRemoteBuild: uploadRemote,
183
184
  loadCacheProviderModule: loadCacheProvider,
185
+ storedAppId,
184
186
  acquireSlot: acquireBuildSlot,
185
187
  releaseSlot: releaseBuildSlot,
186
188
  now: Date.now
@@ -303,8 +305,10 @@ async function buildIosOperation(context, root, options) {
303
305
  command: "build",
304
306
  platform: "ios"
305
307
  }, async (claim) => {
306
- if (!getProject(root)) upsertProject(root, {});
307
- recordWorkspaceUse(root, /* @__PURE__ */ new Date(), context.env, context.cwd);
308
+ await withConfigLockAsync(() => {
309
+ if (!getProject(root)) upsertProject(root, {});
310
+ });
311
+ await recordWorkspaceUseAsync(root, /* @__PURE__ */ new Date(), context.env, context.cwd, context.signal);
308
312
  const started = Date.now();
309
313
  const startedAt = new Date(started).toISOString();
310
314
  const progress = startBuildProgress({
@@ -1,18 +1,20 @@
1
- import { h as withDrainingCancellation, t as getExecutor } from "./exec-DEoAhcze.mjs";
1
+ import { c as throwIfCancelled, t as getExecutor, x as withDrainingCancellation } from "./exec-VFRpu1iA.mjs";
2
2
  import { i as sharedBuildCache } from "./paths-DQtTgsBf.mjs";
3
- import { a as killOnAbort, c as gitQuiet, f as throwIfCancelled, o as git, r as childEnvironment } from "./operation-exec-BW0em61G.mjs";
4
- import { m as defaultAndroidLayout } from "./settings-C7O8A6ZI.mjs";
5
- import { r as register } from "./cache-manifest-DSeQjt-Q.mjs";
3
+ import { a as killOnAbort, c as gitQuiet, o as git, r as childEnvironment, s as gitAsync } from "./operation-exec-CUZifp6Z.mjs";
4
+ import { m as defaultAndroidLayout } from "./settings-B5tCoq9N.mjs";
5
+ import { r as register } from "./cache-manifest-BPXRONJz.mjs";
6
6
  import { createHash } from "node:crypto";
7
7
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
8
8
  import { join } from "node:path";
9
9
  import { artifactIn, buildCacheKey, resolveArtifact, storeArtifactAsync } from "@stim-cli/core";
10
- import { join as join$1, posix as posix$1, relative as relative$1, sep as sep$1 } from "path";
11
- import { existsSync as existsSync$1, mkdirSync as mkdirSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, realpathSync as realpathSync$1, rmSync as rmSync$1, statSync as statSync$1 } from "fs";
12
- import { writeFile } from "node:fs/promises";
10
+ import { isAbsolute as isAbsolute$1, join as join$1, posix as posix$1, relative as relative$1, resolve as resolve$1, sep as sep$1 } from "path";
11
+ import { existsSync as existsSync$1, lstatSync as lstatSync$1, mkdirSync as mkdirSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, realpathSync as realpathSync$1, rmSync as rmSync$1, statSync as statSync$1 } from "fs";
12
+ import { readdir, writeFile } from "node:fs/promises";
13
13
  import { isDeepStrictEqual } from "util";
14
14
  import * as expoFingerprint from "@expo/fingerprint";
15
15
  import { loadConfigAsync } from "@expo/fingerprint/build/Config.js";
16
+ import { normalizeOptionsAsync } from "@expo/fingerprint/build/Options.js";
17
+ import { isIgnoredPathWithMatchObjects } from "@expo/fingerprint/build/utils/Path.js";
16
18
  import { buildUploadTimeoutMs } from "@stim-cli/cache";
17
19
  const ASSET_MANIFEST_FILE = "assets-manifest.json";
18
20
  const MAX_DEPTH = 4;
@@ -174,7 +176,22 @@ const FINGERPRINT_PLATFORMS = /* @__PURE__ */ new Set(["ios", "android"]);
174
176
  * a lockfile with machine paths, a generated report -- belongs in that
175
177
  * project's `.fingerprintignore`, which still applies on top of this.
176
178
  */
177
- const DEFAULT_FINGERPRINT_IGNORES = ["**/android/local.properties", "**/android/.idea/**"];
179
+ const DEFAULT_FINGERPRINT_IGNORES = [
180
+ "**/android/local.properties",
181
+ "**/android/.idea/**",
182
+ "**/*.xcodeproj/xcuserdata/**/*"
183
+ ];
184
+ /**
185
+ * `react-native bundle` output, ignored only while an ignore pattern matches it: a committed copy can be a native
186
+ * resource, while a Debug build loads JS from Metro and a release cache hit injects the current JS. The match skips
187
+ * the index, so a force-added copy counts the same on a build worker, whose mirror index is empty. A build worker
188
+ * has only the synced .gitignore files, so the client sends the paths it ignored (`ignoredFingerprintPaths`) for
189
+ * those it ignores through .git/info/exclude or a global excludes file.
190
+ */
191
+ const BUNDLE_OUTPUT_IGNORES = {
192
+ "ios/main.jsbundle": "ios/main.jsbundle",
193
+ "ios/assets": "ios/assets/**/*"
194
+ };
178
195
  const APP_ROOT_IOS_SKIPPED = /* @__PURE__ */ new Set([
179
196
  "node_modules",
180
197
  "Pods",
@@ -184,10 +201,12 @@ const APP_ROOT_IOS_SKIPPED = /* @__PURE__ */ new Set([
184
201
  ".DS_Store",
185
202
  ".stim.json"
186
203
  ]);
187
- function gitIgnoredNames(projectRoot, names) {
204
+ const appRootNames = (entries) => entries.filter((name) => !APP_ROOT_IOS_SKIPPED.has(name) && !name.startsWith(".watchman-cookie-"));
205
+ function gitIgnoredNames(projectRoot, names, noIndex = false) {
188
206
  if (names.length === 0) return /* @__PURE__ */ new Set();
189
207
  const out = gitQuiet(projectRoot, [
190
208
  "check-ignore",
209
+ ...noIndex ? ["--no-index"] : [],
191
210
  "--",
192
211
  ...names
193
212
  ]);
@@ -211,7 +230,7 @@ function iosProjectFingerprintOptions(projectRoot, iosProjectPath, { list = (dir
211
230
  reasons
212
231
  }];
213
232
  if (appRoot) {
214
- const names = list(projectRoot).filter((name) => !APP_ROOT_IOS_SKIPPED.has(name) && !name.startsWith(".watchman-cookie-"));
233
+ const names = appRootNames(list(projectRoot));
215
234
  const skip = ignored(projectRoot, names);
216
235
  extraSources = names.filter((name) => !skip.has(name)).toSorted((a, b) => a.localeCompare(b)).map((filePath) => ({
217
236
  type: isDirectory(join$1(projectRoot, filePath)) ? "dir" : "file",
@@ -274,17 +293,51 @@ function androidProjectFingerprintOptions(projectRoot, layout, exists = existsSy
274
293
  ].map((dir) => `${moduleRel}/${dir}/**/*`)
275
294
  };
276
295
  }
277
- async function fingerprintProject(projectRoot, { platform, iosProjectPath = "ios", androidLayout = null, createFingerprint = expoFingerprint.createFingerprintAsync, debug = false } = {}) {
296
+ /**
297
+ * The bundle output and, with `ios.projectPath` '.', the top-level entries that git ignores here for an iOS
298
+ * fingerprint, as the paths a build worker needs to ignore the same ones: it has no .git/info/exclude or global
299
+ * excludes file.
300
+ */
301
+ function ignoredFingerprintPaths(projectRoot, { platform, iosProjectPath = "ios" }) {
302
+ if (platform !== "ios") return [];
303
+ const appRoot = iosProjectPath === "." ? gitIgnoredNames(projectRoot, appRootNames(readdirSync$1(projectRoot))) : [];
304
+ return [...gitIgnoredNames(projectRoot, Object.keys(BUNDLE_OUTPUT_IGNORES), true), ...appRoot].toSorted();
305
+ }
306
+ /**
307
+ * With `ios.projectPath` '.', the top-level entries that git tracks here although an ignore pattern matches them, as
308
+ * the names a build worker must count: its mirror index is empty, so its own `check-ignore` skips them.
309
+ */
310
+ function trackedFingerprintPaths(projectRoot, { platform, iosProjectPath = "ios" }) {
311
+ if (platform !== "ios" || iosProjectPath !== ".") return [];
312
+ const names = appRootNames(readdirSync$1(projectRoot));
313
+ const ignored = gitIgnoredNames(projectRoot, names);
314
+ const matched = gitIgnoredNames(projectRoot, names, true);
315
+ return names.filter((name) => matched.has(name) && !ignored.has(name)).toSorted();
316
+ }
317
+ async function fingerprintOptions(projectRoot, { platform, iosProjectPath = "ios", androidLayout = null, ignoredPaths = [], trackedPaths = [] }) {
318
+ const ignoredHere = (names, noIndex = false) => /* @__PURE__ */ new Set([...gitIgnoredNames(projectRoot, names, noIndex), ...ignoredPaths.filter((path) => names.includes(path))]);
319
+ const ignoredAtAppRoot = (names) => new Set([...ignoredHere(names)].filter((name) => !trackedPaths.includes(name)));
278
320
  const platforms = platform && FINGERPRINT_PLATFORMS.has(platform) ? { platforms: [platform] } : void 0;
279
- const ios = platform === "ios" ? iosProjectFingerprintOptions(projectRoot, iosProjectPath) : androidLayout?.custom ? androidProjectFingerprintOptions(projectRoot, androidLayout) : {};
321
+ const ios = platform === "ios" ? iosProjectFingerprintOptions(projectRoot, iosProjectPath, { ignored: (_, names) => ignoredAtAppRoot(names) }) : androidLayout?.custom ? androidProjectFingerprintOptions(projectRoot, androidLayout) : {};
280
322
  if (ios.extraSources) ios.extraSources = [...(await loadConfigAsync(projectRoot, true))?.extraSources ?? [], ...ios.extraSources];
281
- const result = await createFingerprint(projectRoot, {
323
+ const bundleOutput = platform === "android" ? [] : [...ignoredHere(Object.keys(BUNDLE_OUTPUT_IGNORES), true)].map((path) => BUNDLE_OUTPUT_IGNORES[path]);
324
+ return {
282
325
  ...platforms,
283
- ...debug ? { debug } : {},
284
326
  ...ios.extraSources ? { extraSources: ios.extraSources } : {},
285
- ignorePaths: [...DEFAULT_FINGERPRINT_IGNORES, ...ios.ignorePaths ?? []],
327
+ ignorePaths: [
328
+ ...DEFAULT_FINGERPRINT_IGNORES,
329
+ ...bundleOutput,
330
+ ...ios.ignorePaths ?? []
331
+ ],
286
332
  silent: true
287
- });
333
+ };
334
+ }
335
+ async function fingerprintProject(projectRoot, { createFingerprint = expoFingerprint.createFingerprintAsync, debug = false, ...target } = {}) {
336
+ const options = await fingerprintOptions(projectRoot, target);
337
+ const result = await createFingerprint(projectRoot, debug ? {
338
+ ...options,
339
+ debug
340
+ } : options);
288
341
  const hash = result?.hash ?? null;
289
342
  if (!hash) return null;
290
343
  return {
@@ -292,6 +345,84 @@ async function fingerprintProject(projectRoot, { platform, iosProjectPath = "ios
292
345
  sources: Array.isArray(result?.sources) ? result.sources : []
293
346
  };
294
347
  }
348
+ /** The env files @expo/env loads for the config, in the mode @expo/fingerprint's config loader sets. */
349
+ function expoEnvFiles(env = {}) {
350
+ if (/^(1|true)$/i.test(env.EXPO_NO_DOTENV ?? "")) return [];
351
+ const mode = env.NODE_ENV || "development";
352
+ return [
353
+ `.env.${mode}.local`,
354
+ ...mode === "test" ? [] : [".env.local"],
355
+ `.env.${mode}`,
356
+ ".env"
357
+ ];
358
+ }
359
+ const inNodeModules = (path) => path.split("/").includes("node_modules");
360
+ /**
361
+ * Absolute paths of the files git ignores that a fingerprint with `sources` hashed or the Expo config loader read:
362
+ * the inputs a checkout of the tracked and untracked files lacks. Files under node_modules are left out, because a
363
+ * dependency install recreates them.
364
+ */
365
+ async function gitignoredFingerprintInputs(projectRoot, sources, target, { env, signal } = {}) {
366
+ const found = /* @__PURE__ */ new Set();
367
+ if (sources.some((source) => source.type === "contents" && source.id === "expoConfig")) {
368
+ for (const name of expoEnvFiles(env)) if (lstatSync$1(join$1(projectRoot, name), { throwIfNoEntry: false })?.isFile()) found.add(name);
369
+ }
370
+ const top = realpathSync$1(await gitAsync(projectRoot, ["rev-parse", "--show-toplevel"], { signal }));
371
+ const base = realpathSync$1(projectRoot);
372
+ const pathspecs = sources.flatMap((source) => {
373
+ if (source.type === "contents" || inNodeModules(source.filePath)) return [];
374
+ const inRepo = relative$1(top, resolve$1(base, source.filePath));
375
+ return isAbsolute$1(inRepo) || inRepo === ".." || inRepo.startsWith(`..${sep$1}`) ? [] : [posix$1.normalize(source.filePath)];
376
+ });
377
+ if (pathspecs.length) {
378
+ const { ignorePathMatchObjects, ignoreDirMatchObjects } = await normalizeOptionsAsync(projectRoot, await fingerprintOptions(projectRoot, target));
379
+ const addFile = (path) => {
380
+ if (!isIgnoredPathWithMatchObjects(path, ignorePathMatchObjects)) found.add(path);
381
+ };
382
+ const walk = async (dir) => {
383
+ if (isIgnoredPathWithMatchObjects(dir, ignoreDirMatchObjects)) return;
384
+ for (const entry of await readdir(join$1(projectRoot, dir), { withFileTypes: true })) {
385
+ signal?.throwIfAborted();
386
+ const path = posix$1.join(dir, entry.name);
387
+ if (entry.isDirectory()) {
388
+ if (entry.name !== "node_modules") await walk(path);
389
+ } else if (entry.isFile()) addFile(path);
390
+ }
391
+ };
392
+ const inSource = (path) => pathspecs.some((spec) => spec === "." || path === spec || path.startsWith(`${spec}/`));
393
+ const listed = await gitAsync(projectRoot, [
394
+ "--literal-pathspecs",
395
+ "ls-files",
396
+ "-z",
397
+ "--others",
398
+ "--ignored",
399
+ "--exclude-standard",
400
+ "--directory",
401
+ "--",
402
+ ...pathspecs
403
+ ], {
404
+ untrimmed: true,
405
+ timeoutMs: 12e4,
406
+ signal
407
+ });
408
+ for (const listedPath of listed.split("\0")) {
409
+ if (!listedPath || inNodeModules(listedPath)) continue;
410
+ const directory = listedPath.endsWith("/");
411
+ const path = directory ? listedPath.slice(0, -1) : listedPath;
412
+ if (inSource(path)) {
413
+ if (directory) await walk(path);
414
+ else addFile(path);
415
+ continue;
416
+ }
417
+ for (const spec of pathspecs.filter((each) => each.startsWith(`${path}/`))) {
418
+ const stat = lstatSync$1(join$1(projectRoot, spec), { throwIfNoEntry: false });
419
+ if (stat?.isDirectory()) await walk(spec);
420
+ else if (stat?.isFile()) addFile(spec);
421
+ }
422
+ }
423
+ }
424
+ return [...found].toSorted().map((path) => join$1(projectRoot, path));
425
+ }
295
426
  function registerOnce(root, registeredBy) {
296
427
  try {
297
428
  register({
@@ -332,6 +463,12 @@ async function storeBuild(platform, key, buildPath, rootOrOptions = {}) {
332
463
  if (options.assetManifest) try {
333
464
  await writeFile(join$1(staging, ASSET_MANIFEST_FILE), JSON.stringify(options.assetManifest));
334
465
  } catch {}
466
+ if (options.readAppId) try {
467
+ const appId = await options.readAppId(buildPath);
468
+ if (appId) await writeFile(join$1(staging, APP_ID_FILE), JSON.stringify({ appId }));
469
+ } catch {
470
+ throwIfCancelled(signal, "build cache copy");
471
+ }
335
472
  }
336
473
  }));
337
474
  } catch (error) {
@@ -365,12 +502,13 @@ function prepareProviderDownloadDir(dir, registeredBy) {
365
502
  });
366
503
  } catch {}
367
504
  }
368
- function filesystemBuildCapability({ root, context, sources, assetManifest, resolve = resolveBuild, store = storeBuild } = {}) {
505
+ function filesystemBuildCapability({ root, context, sources, assetManifest, readAppId, resolve = resolveBuild, store = storeBuild } = {}) {
369
506
  const stored = {
370
507
  ...context === void 0 ? {} : { context },
371
508
  ...root === void 0 ? {} : { root },
372
509
  ...sources === void 0 ? {} : { sources },
373
- ...assetManifest === void 0 ? {} : { assetManifest }
510
+ ...assetManifest === void 0 ? {} : { assetManifest },
511
+ ...readAppId === void 0 ? {} : { readAppId }
374
512
  };
375
513
  return {
376
514
  resolve: ({ platform, key }) => root === void 0 ? resolve(platform, key) : resolve(platform, key, root),
@@ -398,6 +536,7 @@ function providerUploadOutcome(result, name, env) {
398
536
  };
399
537
  }
400
538
  const SOURCES_FILE = "fingerprint-sources.json";
539
+ const APP_ID_FILE = "app-id.json";
401
540
  function withoutContents(source) {
402
541
  return source.type === "contents" ? {
403
542
  ...source,
@@ -412,6 +551,16 @@ function storedSources(platform, key, root = sharedBuildCache()) {
412
551
  return null;
413
552
  }
414
553
  }
554
+ /** The bundle id or Android package read from the entry's artifact when it was stored, or null for older entries. */
555
+ function storedAppId(platform, key, root = sharedBuildCache()) {
556
+ try {
557
+ const parsed = JSON.parse(readFileSync$1(join$1(entryDir(platform, key, root), APP_ID_FILE), "utf-8"));
558
+ if (parsed && typeof parsed === "object" && "appId" in parsed && typeof parsed.appId === "string" && parsed.appId) return parsed.appId;
559
+ return null;
560
+ } catch {
561
+ return null;
562
+ }
563
+ }
415
564
  function storedAssetManifest(platform, key, root = sharedBuildCache()) {
416
565
  try {
417
566
  return parseAssetManifest(readFileSync$1(join$1(entryDir(platform, key, root), ASSET_MANIFEST_FILE), "utf-8"));
@@ -498,13 +647,15 @@ function diffFingerprintSources({ previous, previousHash = null, current, differ
498
647
  } catch {}
499
648
  return compareSourceLists(previous, current.sources);
500
649
  }
501
- async function refingerprintAfterMutation({ projectRoot, platform, previousHash, iosProjectPath, androidLayout, fingerprint = fingerprintProject }) {
650
+ async function refingerprintAfterMutation({ projectRoot, platform, previousHash, iosProjectPath, androidLayout, ignoredPaths, trackedPaths, fingerprint = fingerprintProject }) {
502
651
  let computed = null;
503
652
  try {
504
653
  computed = await fingerprint(projectRoot, {
505
654
  platform,
506
655
  ...iosProjectPath ? { iosProjectPath } : {},
507
- ...androidLayout ? { androidLayout } : {}
656
+ ...androidLayout ? { androidLayout } : {},
657
+ ...ignoredPaths ? { ignoredPaths } : {},
658
+ ...trackedPaths ? { trackedPaths } : {}
508
659
  });
509
660
  } catch {
510
661
  return null;
@@ -599,4 +750,4 @@ function fingerprintDiffRecord({ changed, previousHash, hash }) {
599
750
  };
600
751
  }
601
752
  //#endregion
602
- export { compareAssetManifests as C, captureAssetManifest as S, storedAssetManifest as _, diffFingerprintSources as a, untrackedNativeFiles as b, fingerprintDiffRecord as c, prepareProviderDownloadDir as d, providerDownloadPath as f, storeBuild as g, resolveBuild as h, configInputsChanged as i, fingerprintProject as l, refingerprintAfterMutation as m, buildCacheKey as n, entryDir as o, providerUploadOutcome as p, changedDuringBuildLine as r, filesystemBuildCapability as s, artifactIn as t, inputsChangedDuringBuild as u, storedSources as v, readAssetManifest as w, assetDiffReason as x, untrackedMissLine as y };
753
+ export { readAssetManifest as A, storedSources as C, assetDiffReason as D, untrackedNativeFiles as E, captureAssetManifest as O, storedAssetManifest as S, untrackedMissLine as T, providerUploadOutcome as _, configInputsChanged as a, storeBuild as b, expoConfigContents as c, fingerprintProject as d, gitignoredFingerprintInputs as f, providerDownloadPath as g, prepareProviderDownloadDir as h, compareSourceLists as i, compareAssetManifests as k, filesystemBuildCapability as l, inputsChangedDuringBuild as m, buildCacheKey as n, diffFingerprintSources as o, ignoredFingerprintPaths as p, changedDuringBuildLine as r, entryDir as s, artifactIn as t, fingerprintDiffRecord as u, refingerprintAfterMutation as v, trackedFingerprintPaths as w, storedAppId as x, resolveBuild as y };
@@ -1,9 +1,9 @@
1
- import { y as trackReportResource } from "./exec-DEoAhcze.mjs";
2
- import { i as formatDuration, l as phaseLine, m as shortHash, u as plural } from "./command-output-YKGWivpG.mjs";
3
- import { Ht as makeTemporaryDirectory, Wt as removeTemporaryEntryAsync } from "./settings-C7O8A6ZI.mjs";
4
- import { G as readStats, L as estimateBuild, Vn as easAuthNote } from "./budget-3ivAK99e.mjs";
5
- import { o as entryDir, t as artifactIn } from "./build-cache-Dv7RN200.mjs";
6
- import { a as staleNativeDirRefusal, c as predictBuildMiss } from "./prebuild-BligW0QS.mjs";
1
+ import { T as trackReportResource } from "./exec-VFRpu1iA.mjs";
2
+ import { i as formatDuration, l as phaseLine, m as shortHash, u as plural } from "./command-output-BBvS1H6v.mjs";
3
+ import { Gt as removeTemporaryEntryAsync, Ut as makeTemporaryDirectory } from "./settings-B5tCoq9N.mjs";
4
+ import { L as estimateBuild, Wn as easAuthNote, q as readStats } from "./budget-HyShrIpL.mjs";
5
+ import { s as entryDir, t as artifactIn } from "./build-cache-CKCzxzxA.mjs";
6
+ import { l as predictBuildMiss, o as staleNativeDirRefusal } from "./prebuild-JUaqOLpc.mjs";
7
7
  import chalk from "chalk";
8
8
  import { PROVIDER_LOAD_TIMEOUT_ENV, PROVIDER_LOAD_TIMEOUT_MS, buildResolveTimeoutMs, resolveTieredBuild, timeoutFromEnv } from "@stim-cli/cache";
9
9
  //#region src/commands/build-plan.ts
@@ -106,9 +106,10 @@ async function finishProviderDownload(pending, destinationDir, cleanupFailure) {
106
106
  }
107
107
  async function expoRemoteHit(lookup, deps) {
108
108
  if (!lookup.expoRemote) return null;
109
- const { root, platform, isExpo, fingerprint } = lookup;
109
+ const { root, platform, isExpo, fingerprint, sources } = lookup;
110
110
  const loaded = await deps.loadProjectProvider(root, {
111
111
  isExpo,
112
+ sources,
112
113
  context: deps.operation
113
114
  });
114
115
  if (loaded?.unavailable) {
@@ -1,4 +1,4 @@
1
- import { d as getConfigDir } from "./config-DlrsduwG.mjs";
1
+ import { d as getConfigDir } from "./config-BZhXY15H.mjs";
2
2
  import { cacheDirRefusal, readCacheManifest, updateCacheManifest } from "@stim-cli/core";
3
3
  import { join, resolve } from "path";
4
4
  import { existsSync } from "fs";
@@ -1,2 +1,2 @@
1
- import { a as unregister, i as registeredCaches, n as readManifest, r as register, t as manifestPath } from "./cache-manifest-DSeQjt-Q.mjs";
1
+ import { a as unregister, i as registeredCaches, n as readManifest, r as register, t as manifestPath } from "./cache-manifest-BPXRONJz.mjs";
2
2
  export { manifestPath, readManifest, register, registeredCaches, unregister };
@@ -1,10 +1,10 @@
1
- import { t as getExecutor } from "./exec-DEoAhcze.mjs";
1
+ import { t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
2
  import { a as sharedCcache, m as workspaceLogsDir } from "./paths-DQtTgsBf.mjs";
3
- import { _ as loadConfig } from "./config-DlrsduwG.mjs";
4
- import { l as phaseLine } from "./command-output-YKGWivpG.mjs";
5
- import { m as defaultAndroidLayout } from "./settings-C7O8A6ZI.mjs";
6
- import { r as register } from "./cache-manifest-DSeQjt-Q.mjs";
7
- import { o as machineNumber } from "./budget-3ivAK99e.mjs";
3
+ import { _ as loadConfig } from "./config-BZhXY15H.mjs";
4
+ import { l as phaseLine } from "./command-output-BBvS1H6v.mjs";
5
+ import { m as defaultAndroidLayout } from "./settings-B5tCoq9N.mjs";
6
+ import { r as register } from "./cache-manifest-BPXRONJz.mjs";
7
+ import { o as machineNumber } from "./budget-HyShrIpL.mjs";
8
8
  import { readFileSync, realpathSync } from "node:fs";
9
9
  import { isAbsolute, join, relative } from "node:path";
10
10
  import chalk from "chalk";
@@ -1,4 +1,4 @@
1
- import { d as cancelledError, f as throwIfCancelled } from "./operation-exec-BW0em61G.mjs";
1
+ import { c as throwIfCancelled, s as cancelledError } from "./exec-VFRpu1iA.mjs";
2
2
  import { WebSocket } from "ws";
3
3
  //#region src/web/cdp.ts
4
4
  const COMMAND_TIMEOUT_MS = 15e3;
@@ -1,4 +1,4 @@
1
- import { t as getExecutor } from "./exec-DEoAhcze.mjs";
1
+ import { t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
2
  import { existsSync } from "node:fs";
3
3
  import { homedir } from "node:os";
4
4
  import { join } from "node:path";
@@ -1,27 +1,27 @@
1
- import { b as debugLog } from "./exec-DEoAhcze.mjs";
2
- import { y as refuseRelativeStimPaths } from "./config-DlrsduwG.mjs";
1
+ import { E as debugLog } from "./exec-VFRpu1iA.mjs";
2
+ import { y as refuseRelativeStimPaths } from "./config-BZhXY15H.mjs";
3
3
  import { readFileSync } from "node:fs";
4
4
  import { runId } from "@stim-cli/core/state";
5
5
  import { Command } from "commander";
6
6
  //#region bin/cli.ts
7
7
  const commands = /* @__PURE__ */ new Map([
8
- ["doctor", () => import("./doctor-DRu-8ld6.mjs")],
9
- ["worktree", () => import("./worktree-BEwxVwKF.mjs")],
10
- ["start", () => import("./start-BL_BsiWt.mjs")],
11
- ["ports", () => import("./ports-DpXjKkSV.mjs")],
12
- ["stop", () => import("./stop-iuFHjUST.mjs")],
13
- ["ios", () => import("./ios-DTOYZGMJ.mjs")],
14
- ["android", () => import("./android-CLi6DSiS.mjs")],
15
- ["web", () => import("./web-kDE9Myoy.mjs")],
16
- ["macos", () => import("./macos-CPMahOC2.mjs")],
17
- ["reload", () => import("./reload-QcwnYLYV.mjs")],
18
- ["device", () => import("./device-B7ljwccX.mjs")],
19
- ["logs", () => import("./logs-By5aw3g9.mjs")],
20
- ["settings", () => import("./settings-PfJx8uK1.mjs")],
21
- ["status", () => import("./status-CrJutl6-.mjs")],
22
- ["stats", () => import("./stats-CO6sK0Nh.mjs")],
23
- ["gc", () => import("./gc-dDE4QPVu.mjs")],
24
- ["guide", () => import("./guide-DYYEO3Wz.mjs")]
8
+ ["doctor", () => import("./doctor-A_Nr_fDe.mjs")],
9
+ ["worktree", () => import("./worktree-Ct9Gk3KL.mjs")],
10
+ ["start", () => import("./start-C1JLjkNw.mjs")],
11
+ ["ports", () => import("./ports-DtS1Amb0.mjs")],
12
+ ["stop", () => import("./stop-Br7LKxBE.mjs")],
13
+ ["ios", () => import("./ios-Dvt97HgQ.mjs")],
14
+ ["android", () => import("./android-CNZgRC-4.mjs")],
15
+ ["web", () => import("./web-DS4UDWvf.mjs")],
16
+ ["macos", () => import("./macos-CcUlJPMu.mjs")],
17
+ ["reload", () => import("./reload-Beftw2X3.mjs")],
18
+ ["device", () => import("./device-F5-4z9ef.mjs")],
19
+ ["logs", () => import("./logs-Crs9y34Z.mjs")],
20
+ ["settings", () => import("./settings-DzH9mGQZ.mjs")],
21
+ ["status", () => import("./status-cNw6i0_t.mjs")],
22
+ ["stats", () => import("./stats-CP7STzZw.mjs")],
23
+ ["gc", () => import("./gc-eaz403W6.mjs")],
24
+ ["guide", () => import("./guide-DR0K0xW9.mjs")]
25
25
  ]);
26
26
  const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf-8"));
27
27
  const program = new Command();
@@ -52,7 +52,7 @@ try {
52
52
  }));
53
53
  }
54
54
  try {
55
- const { triggerMaintenance } = await import("./trigger-yb_nFzPF.mjs");
55
+ const { triggerMaintenance } = await import("./trigger-BLsHgAGR.mjs");
56
56
  triggerMaintenance(action.name());
57
57
  } catch {}
58
58
  });
package/dist/cli.mjs CHANGED
@@ -4,6 +4,6 @@ const encode = (version) => version.split(".", 3).reduce((sum, part) => sum * 1e
4
4
  if (encode(process.versions.node) < encode("22.12.0")) {
5
5
  process.stderr.write(`STIM_NODE_UNSUPPORTED: Stim needs Node 22.12.0 or later; this is Node ${process.versions.node} at ${process.execPath}. To run Stim where a project pins an older Node, see https://stim.appandflow.com/docs/requirements#older-node-pins\n`);
6
6
  process.exitCode = 1;
7
- } else import("./cli-BkK6Wr5i.mjs");
7
+ } else import("./cli-C4w607Pz.mjs");
8
8
  //#endregion
9
9
  export {};