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,44 +1,44 @@
1
- import { t as getExecutor } from "./exec-DEoAhcze.mjs";
1
+ import { o as cancellableSleep, t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
2
  import { m as workspaceLogsDir } from "./paths-DQtTgsBf.mjs";
3
- import { B as deviceSlotFileKey, E as upsertProject, V as deviceSlotKey, p as getProject, u as getConcurrencyLimits, v as recordIosSchemeApprovals } from "./config-DlrsduwG.mjs";
4
- import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-YKGWivpG.mjs";
5
- import { u as cancellableSleep } from "./operation-exec-BW0em61G.mjs";
6
- import { d as writeWorkspaceState, r as readWorkspaceState } from "./workspace-state-U08dEzhG.mjs";
7
- import { $ as settingOriginScope, G as resolveCacheProviderConfig, Ht as makeTemporaryDirectory, Nt as repoRootAsync, Ut as removeTemporaryEntry, Y as resolveSettings, ct as detectProviders, nt as settingsLayers, vt as gitCommonDirAsync } from "./settings-C7O8A6ZI.mjs";
8
- import { L as workspaceDevServerMode, f as projectRegistry, i as findProjectRoot, v as detectIsExpo, z as writeWorkspaceLaunch } from "./project-DhCtQWWU.mjs";
3
+ import { B as deviceSlotFileKey, E as upsertProject, O as withConfigLockAsync, V as deviceSlotKey, p as getProject, u as getConcurrencyLimits, v as recordIosSchemeApprovals } from "./config-BZhXY15H.mjs";
4
+ import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-BBvS1H6v.mjs";
5
+ import { f as writeWorkspaceStateAsync, r as readWorkspaceState } from "./workspace-state-CPSp3mav.mjs";
6
+ import { K as resolveCacheProviderConfig, Pt as repoRootAsync, Ut as makeTemporaryDirectory, Wt as removeTemporaryEntry, X as resolveSettings, et as settingOriginScope, lt as detectProviders, rt as settingsLayers, yt as gitCommonDirAsync } from "./settings-B5tCoq9N.mjs";
7
+ import { L as workspaceDevServerMode, f as projectRegistry, i as findProjectRoot, v as detectIsExpo, z as writeWorkspaceLaunchAsync } from "./project-BiC68mIp.mjs";
8
+ import { o as workspaceLinks } from "./stim-desktop-DS0mzR8U.mjs";
9
+ import { c as pidExists, d as resolveProjectMetro, f as signalProcessTree } from "./metro-1pJgCX4U.mjs";
9
10
  import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
10
- import { c as pidExists, d as resolveProjectMetro, f as signalProcessTree } from "./metro-DiXtA3Ty.mjs";
11
- import { $t as readCollectorRecords, Bn as checkEasAuth, Bt as ensureMetroReachable, En as restartedAppNote, Gt as resolveRemoteContext, J as recordRunStats, Jn as resolveRemote, Jt as LAUNCH_FATAL, K as recordCapacityRefusal, Mn as readRemoteSimulatorArch, Nn as gateMetroOrigin, Qt as isBundleProof, Rt as bundleEntryPoint, Sn as iosAppProcess, Tn as launchIosApp, Un as loadProjectProvider, Vt as ensureRemoteBootOwned, W as readRunEstimates, Wt as remoteIosDeps, Xt as RELEASE_VERIFY_WAIT_MS, Yn as uploadRemote, Yt as LAUNCH_UNVERIFIED, an as verifyReleaseLaunch, en as readMetroRecords, hn as devClientUrl, in as verifyLaunch, mn as clearOtherUserApps, nn as unverifiedLaunchLines, qn as resolveEasCliBin, qt as LAUNCH_BUNDLING, t as budgetGate, tn as unattributedLaunchLines, un as IOS_DEV_MENU_OFF_DEFAULTS_PLIST, xn as installIosApp } from "./budget-3ivAK99e.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 { b as untrackedNativeFiles, g as storeBuild, h as resolveBuild, l as fingerprintProject } from "./build-cache-Dv7RN200.mjs";
15
- import { d as listAllIosSims, h as listIosRuntimesAsync, r as clearIosAppData } from "./ios-hcBpnEGk.mjs";
16
- import { o as workspaceLinks } from "./stim-desktop-D5OGpYZM.mjs";
17
- import { f as readBundleExecutable, m as resolveScheme, p as readBundleId } from "./xcode-Rq744mBF.mjs";
18
- import { h as readPodState, m as podsAreStale, v as runPodInstall } from "./toolchain-B9hCFCQw.mjs";
19
- import { n as readHostedIos, o as writeHostedIos } from "./ios-state-Dtw5K2aI.mjs";
20
- import { n as prepareHostedIos, t as placeHostedIos } from "./hosted-ios-y19jCYFF.mjs";
21
- import { n as verifyCollectorOwnership } from "./ownership-C5fo5Edb.mjs";
22
- import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-B7AuoWJv.mjs";
23
- import { c as startDevServer, g as detectBundleId } from "./start-CU8mCPC7.mjs";
11
+ import { $t as RELEASE_VERIFY_WAIT_MS, Bt as bundleEntryPoint, Fn as readRemoteSimulatorArch, Ht as ensureMetroReachable, In as gateMetroOrigin, J as recordCapacityRefusal, K as readRunEstimates, Kn as loadProjectProvider, Kt as remoteIosDeps, On as launchIosApp, Qn as uploadRemote, Tn as iosAppProcess, Un as checkEasAuth, Ut as ensureRemoteBootOwned, X as recordRunStats, Xn as resolveEasCliBin, Xt as LAUNCH_FATAL, Yt as LAUNCH_BUNDLING, Zn as resolveRemote, Zt as LAUNCH_UNVERIFIED, _n as clearOtherUserApps, an as unverifiedLaunchLines, cn as verifyReleaseLaunch, in as unattributedLaunchLines, kn as restartedAppNote, nn as readCollectorRecords, pn as IOS_DEV_MENU_OFF_DEFAULTS_PLIST, qt as resolveRemoteContext, rn as readMetroRecords, sn as verifyLaunch, t as budgetGate, tn as isBundleProof, vn as devClientUrl, wn as installIosApp } from "./budget-HyShrIpL.mjs";
12
+ import { L as acquireBuildSlot, z as releaseBuildSlot } from "./workspaces-C9w4aeXF.mjs";
13
+ import { F as waitForBuild, M as acquireBuildLock, P as releaseBuildLock } from "./activity-BpjwrQXU.mjs";
14
+ import { E as untrackedNativeFiles, b as storeBuild, d as fingerprintProject, y as resolveBuild } from "./build-cache-CKCzxzxA.mjs";
15
+ import { d as listAllIosSims, h as listIosRuntimesAsync, r as clearIosAppData } from "./ios-BQzvJlzw.mjs";
16
+ import { f as readBundleExecutable, m as resolveScheme, p as readBundleId } from "./xcode-CiIIDnuD.mjs";
17
+ import { h as readPodState, m as podsAreStale, v as runPodInstall } from "./toolchain-VzLJzZ7O.mjs";
18
+ import { n as readHostedIos, o as writeHostedIosAsync } from "./ios-state-CT9nV5SP.mjs";
19
+ import { n as hostedMetroPortProbe } from "./hosted-native-BxTizGU2.mjs";
20
+ import { n as prepareHostedIos, t as placeHostedIos } from "./hosted-ios-RtVcJH3u.mjs";
21
+ import { n as verifyCollectorOwnership } from "./ownership-jxxz-19m.mjs";
22
+ import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-QeuJMlnJ.mjs";
23
+ import { c as startDevServer, g as detectBundleId } from "./start-YMpNwLhh.mjs";
24
24
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
25
- import { a as discoverXcodeProject, r as buildIos } from "./react-native-build-CelbTO_y.mjs";
26
- import { a as acquireRunLease, c as lostRefusal, d as runLease, s as lostLine, t as DEBUG_VERIFY_STEP_MS, u as releaseLeaseOnAbort } from "./device-lease-run-DXPSwdbb.mjs";
27
- import { r as checkDeviceCapacity } from "./device-capacity-DH0QsZYZ.mjs";
28
- import { n as clearIosAdoptionPending } from "./device-ios-CbVDtDIy.mjs";
29
- import { i as deviceLabel, o as deviceShortName, t as appNameFromPath } from "./support-TWuQlHQo.mjs";
30
- import { a as sealAppForDevice, r as gateProfileForDevice } from "./ios-signing-BtAffm0A.mjs";
31
- import { a as resolveEasDevelopmentBuild } from "./eas-build-DMWSSvxq.mjs";
32
- import { a as printNativeCrashReport, n as IOS_CRASH_REPORT_RETRY, o as simulatorConsolePaths, r as captureNativeCrashes, t as errorDiagnostics } from "./error-diagnostics-DYsjJIHz.mjs";
33
- import { i as launchOutcomeRecord, n as ensureWorkspaceStorageSafely } from "./native-runtime-DBRfY_PN.mjs";
34
- import { i as runPrebuild, n as planPrebuildAsync } from "./prebuild-BligW0QS.mjs";
35
- import { n as devClientTakesDevMenuParams, t as devClientScheme } from "./dev-client-BFxiDpkf.mjs";
36
- import { n as automaticDevicePlacement, t as checkEasFallback } from "./eas-fallback-vKlrqxgE.mjs";
37
- import { n as ensureBooted, o as warmMetro, r as ensureOwnedDevice } from "./device-CiNYxqp6.mjs";
38
- import { t as selectFromPool } from "./device-pool-B4iOXIrD.mjs";
39
- import { o as reportIosResult } from "./ios-project-CSZYI1iu.mjs";
40
- import { c as isWirelessIosDevice, i as iosDeviceProcess, l as listIosDevices, n as installIosDeviceApp, p as verifyIosDeviceReleaseLaunch, r as iosDeviceBounds, t as awaitIosDeviceLaunch, u as localNetworkPending } from "./ios-device-DFGuwF4U.mjs";
41
- import { i as swapJsBundle } from "./js-swap-BSBHldmm.mjs";
25
+ import { a as discoverXcodeProject, r as buildIos } from "./react-native-build-CwZB-agu.mjs";
26
+ import { a as acquireRunLease, c as lostRefusal, d as runLease, s as lostLine, t as DEBUG_VERIFY_STEP_MS, u as releaseLeaseOnAbort } from "./device-lease-run-ogEeJ62K.mjs";
27
+ import { r as checkDeviceCapacity } from "./device-capacity-ZYaRALv5.mjs";
28
+ import { n as clearIosAdoptionPending } from "./device-ios-DkHBrmvH.mjs";
29
+ import { i as deviceLabel, o as deviceShortName, t as appNameFromPath } from "./support-qKcbgmI5.mjs";
30
+ import { a as sealAppForDevice, r as gateProfileForDevice } from "./ios-signing-4c_qXvQm.mjs";
31
+ import { a as resolveEasDevelopmentBuild } from "./eas-build-CyDKNTBP.mjs";
32
+ import { a as printNativeCrashReport, n as IOS_CRASH_REPORT_RETRY, o as simulatorConsolePaths, r as captureNativeCrashes, t as errorDiagnostics } from "./error-diagnostics-B1Mj_-7h.mjs";
33
+ import { i as launchOutcomeRecord, n as ensureWorkspaceStorageSafely } from "./native-runtime-B9w_Qyz3.mjs";
34
+ import { a as runPrebuild, n as planPrebuildAsync } from "./prebuild-JUaqOLpc.mjs";
35
+ import { n as devClientTakesDevMenuParams, r as hasDevClient, t as devClientScheme } from "./dev-client-CHoXXZeg.mjs";
36
+ import { n as automaticDevicePlacement, t as checkEasFallback } from "./eas-fallback-gaZi-dJL.mjs";
37
+ import { n as ensureBooted, o as warmMetro, r as ensureOwnedDevice } from "./device-B9FqTBYW.mjs";
38
+ import { t as selectFromPool } from "./device-pool-BIg8MU8l.mjs";
39
+ import { o as reportIosResult } from "./ios-project-DCUDo06I.mjs";
40
+ import { c as isWirelessIosDevice, i as iosDeviceProcess, l as listIosDevices, n as installIosDeviceApp, p as verifyIosDeviceReleaseLaunch, r as iosDeviceBounds, t as awaitIosDeviceLaunch, u as localNetworkPending } from "./ios-device-CKSvk0bu.mjs";
41
+ import { i as swapJsBundle } from "./js-swap-Z9HbC4cj.mjs";
42
42
  import { mkdirSync, openSync, writeFileSync } from "node:fs";
43
43
  import { networkInterfaces } from "node:os";
44
44
  import { basename, join } from "node:path";
@@ -257,8 +257,9 @@ const DEFAULT_DEPS = {
257
257
  checkEasFallback,
258
258
  prepareHostedIos,
259
259
  placeHostedIos,
260
+ hostedMetroPortProbe,
260
261
  readHostedIos,
261
- writeHostedIos,
262
+ writeHostedIos: writeHostedIosAsync,
262
263
  resolveEasDevelopmentBuild,
263
264
  findProjectRoot,
264
265
  resolveSettings,
@@ -269,9 +270,10 @@ const DEFAULT_DEPS = {
269
270
  detectBundleId,
270
271
  detectIsExpo,
271
272
  devClientScheme,
273
+ hasDevClient,
272
274
  devClientTakesDevMenuParams,
273
275
  getProject,
274
- upsertProject,
276
+ upsertProject: (...args) => withConfigLockAsync(() => upsertProject(...args)),
275
277
  recordIosSchemeApprovals,
276
278
  checkDeviceCapacity,
277
279
  budgetGate,
@@ -342,8 +344,8 @@ const DEFAULT_DEPS = {
342
344
  ensureWorkspaceStorage: ensureWorkspaceStorageSafely,
343
345
  replaceCollector,
344
346
  stopPreviousCollector,
345
- writeWorkspaceLaunch,
346
- writeWorkspaceState,
347
+ writeWorkspaceLaunch: writeWorkspaceLaunchAsync,
348
+ writeWorkspaceState: writeWorkspaceStateAsync,
347
349
  createWriter: createNdjsonWriter,
348
350
  recordStats: recordRunStats,
349
351
  recordCapacityRefusal,
@@ -495,10 +497,10 @@ async function verifyIosMetroRun({ operation, root, slot, appPath, d, launched,
495
497
  return { state: LAUNCH_FATAL };
496
498
  }
497
499
  if (verification?.verified) {
498
- phase("verify", `bundle loaded` + (verification.processAlive === true ? ", process alive" : "") + (verification.readiness ? "" : ", stable for 3s -- the first screen may still be rendering") + ` (${formatDuration(verification.waitedMs ?? 0)} total)`);
500
+ phase("verify", `bundle loaded` + (verification.processAlive === true ? ", process alive" : "") + (verification.readiness ? "" : verification.jsRunning ? ", app JavaScript running -- the first screen may still be rendering" : ", stable for 3s -- the first screen may still be rendering") + ` (${formatDuration(verification.waitedMs ?? 0)} total)`);
499
501
  const hasAppErrors = reportLaunchErrors(verification.errors ?? [], note, root);
500
502
  if (hasAppErrors && verification.processAlive === true && metroPort !== null) {
501
- const reloadRemedy = physical || remoteDevice ? `run \`agent-device metro reload --metro-port ${metroPort}\`.` : "run `stim reload ios`.";
503
+ const reloadRemedy = remoteDevice ? `run \`agent-device metro reload --metro-port ${metroPort}\`.` : "run `stim reload ios`.";
502
504
  note(chalk.yellow(phaseLine("remedy", `The native app is still running. Fix the JavaScript or TypeScript error; Fast Refresh should apply the edit. If the error screen remains, ${reloadRemedy} Do not run \`${runCommand}\` unless native inputs changed or the app process exits.`)));
503
505
  }
504
506
  return {
@@ -619,10 +621,10 @@ async function readRunExecutable(d, appPath, note) {
619
621
  if (appPath && !executable) note(chalk.dim(`Could not read CFBundleExecutable from ${appPath}; the device log predicate falls back to the .app basename.`));
620
622
  return executable;
621
623
  }
622
- function recordIosReloadTarget({ d, root, physical, remoteDevice, bundleId, udid, metroPort, release, runtimeKind, launchedAt, note }) {
624
+ async function recordIosReloadTarget({ d, root, physical, remoteDevice, bundleId, udid, metroPort, release, runtimeKind, launchedAt, note }) {
623
625
  if (physical || remoteDevice) return;
624
626
  try {
625
- d.writeWorkspaceLaunch(root, "ios", {
627
+ await d.writeWorkspaceLaunch(root, "ios", {
626
628
  appId: bundleId,
627
629
  deviceId: udid,
628
630
  metroPort,
@@ -680,7 +682,7 @@ async function finishIosRun({ operation, output, projectBundleId, runtime, runti
680
682
  appPath
681
683
  }
682
684
  });
683
- if (bundleId) d.upsertProject(root, { bundleId });
685
+ if (bundleId) await d.upsertProject(root, { bundleId });
684
686
  enterPhase("device");
685
687
  if (bootPending()) enterActivity("booting");
686
688
  const booted = await bootPromise;
@@ -867,12 +869,12 @@ async function finishIosRun({ operation, output, projectBundleId, runtime, runti
867
869
  bundleId
868
870
  }
869
871
  });
870
- if (adopting) d.clearIosAdoptionPending(root, slot);
872
+ if (adopting) await d.clearIosAdoptionPending(root, slot);
871
873
  installSkipped = Boolean(installed?.skipped);
872
874
  const artifactDuration = installed?.artifactDurationMs === void 0 ? installTimer() : `(${formatDuration(installed.artifactDurationMs)})`;
873
875
  phase("install", installSkipped ? `unchanged (${deviceShortName(device, udid)} already has this build) ${artifactDuration}` : `${basename(appPath)} -> ${deviceLabel(device, udid)} ${artifactDuration}`);
874
876
  if (!remoteDevice && installed?.devClientPreparationDurationMs !== void 0) phase("install", `dev client prepared (${formatDuration(installed.devClientPreparationDurationMs)})`);
875
- if (installed.schemeApprovals) d.recordIosSchemeApprovals(root, udid, installed.schemeApprovals, slot);
877
+ if (installed.schemeApprovals) await d.recordIosSchemeApprovals(root, udid, installed.schemeApprovals, slot);
876
878
  dropSwapDir();
877
879
  if (!remoteDevice) await d.replaceCollector({
878
880
  root,
@@ -940,7 +942,7 @@ async function finishIosRun({ operation, output, projectBundleId, runtime, runti
940
942
  }
941
943
  phase("launch", `${bundleId}${restartedAppNote(launched.restartedPid)} ${launchTimer()}`);
942
944
  }
943
- recordIosReloadTarget({
945
+ await recordIosReloadTarget({
944
946
  d,
945
947
  root,
946
948
  slot,
@@ -1,13 +1,13 @@
1
- import { g as process_identity_exports } from "./exec-DEoAhcze.mjs";
1
+ import { S as process_identity_exports } from "./exec-VFRpu1iA.mjs";
2
2
  import { m as workspaceLogsDir$1 } from "./paths-DQtTgsBf.mjs";
3
- import { G as projectDeviceSlots, _ as loadConfig$1 } from "./config-DlrsduwG.mjs";
4
- import { n as pullHostedNativeLogs, t as pullHostedMacosLogs } from "./hosted-logs-DzJKzKlj.mjs";
5
- import { l as phaseLine } from "./command-output-YKGWivpG.mjs";
6
- import { f as readAgentDeviceRecordsAsync, n as agentDeviceLiveness, o as envDir } from "./activity-BpWUPgUm.mjs";
7
- import { l as connectHost } from "./hosted-client-Bt-tndxV.mjs";
8
- import { n as readHostedIos, t as readHostedAndroid } from "./ios-state-Dtw5K2aI.mjs";
9
- import "./hosted-macos-BJusKvqL.mjs";
10
- import { i as captureWorkspaceCrashes } from "./error-diagnostics-DYsjJIHz.mjs";
3
+ import { G as projectDeviceSlots, _ as loadConfig$1 } from "./config-BZhXY15H.mjs";
4
+ import { n as pullHostedNativeLogs, t as pullHostedMacosLogs } from "./hosted-logs-CWKGYWNX.mjs";
5
+ import { l as phaseLine } from "./command-output-BBvS1H6v.mjs";
6
+ import { f as readAgentDeviceRecordsAsync, n as agentDeviceLiveness, o as envDir } from "./activity-BpjwrQXU.mjs";
7
+ import { l as connectHost } from "./hosted-client-rsRqysJc.mjs";
8
+ import { n as readHostedIos, t as readHostedAndroid } from "./ios-state-CT9nV5SP.mjs";
9
+ import "./hosted-macos-d0pv9Tth.mjs";
10
+ import { i as captureWorkspaceCrashes } from "./error-diagnostics-B1Mj_-7h.mjs";
11
11
  import { readdirSync, statSync, watch } from "node:fs";
12
12
  import { homedir } from "node:os";
13
13
  import { dirname, join, relative, resolve, sep } from "node:path";
@@ -222,6 +222,7 @@ function followAgentActions(context, read, onRecord) {
222
222
  }
223
223
  //#endregion
224
224
  //#region src/device-host/hosted-logs-sync.ts
225
+ const WATCH_RECHECK_MS = 100;
225
226
  function warn(context, machine, error) {
226
227
  const text = `${warning(machine, error)}\n`;
227
228
  if (context) context.output("stderr", text);
@@ -337,10 +338,12 @@ function followHostedLogs(root, failing, context) {
337
338
  const stateFile = workspaceStateFile(root);
338
339
  const home = resolve(configDir());
339
340
  let watcher = null;
341
+ let recheck;
340
342
  const observe = () => {
341
343
  if (closed) return;
342
344
  watcher?.close();
343
345
  watcher = null;
346
+ clearTimeout(recheck);
344
347
  let directory = dirname(stateFile);
345
348
  for (;;) try {
346
349
  const entry = relative(directory, stateFile).split(sep)[0];
@@ -355,6 +358,8 @@ function followHostedLogs(root, failing, context) {
355
358
  });
356
359
  next.unref();
357
360
  watcher = next;
361
+ recheck = setTimeout(refresh, WATCH_RECHECK_MS);
362
+ recheck.unref();
358
363
  return;
359
364
  } catch (error) {
360
365
  if (directory === home || !(error instanceof Error && "code" in error && error.code === "ENOENT")) return;
@@ -370,6 +375,7 @@ function followHostedLogs(root, failing, context) {
370
375
  return () => {
371
376
  closed = true;
372
377
  watcher?.close();
378
+ clearTimeout(recheck);
373
379
  clearInterval(timer);
374
380
  for (const stop of stops.values()) stop();
375
381
  };
@@ -456,6 +462,7 @@ async function followWorkspaceLogs(context, options, onRecord, onBackfill) {
456
462
  const stopLog = followLogs({
457
463
  dir: workspaceLogsDir$1(context.projectRoot),
458
464
  offsets: view.sizes,
465
+ identities: view.identities,
459
466
  criteria,
460
467
  onRecord,
461
468
  errorContext: options.errorsOnly ? "field" : void 0
@@ -1,11 +1,11 @@
1
1
  import { m as workspaceLogsDir$1 } from "./paths-DQtTgsBf.mjs";
2
- import { W as parseDeviceSlotOption, _ as loadConfig$1, g as isPathPrefix } from "./config-DlrsduwG.mjs";
3
- import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-YKGWivpG.mjs";
4
- import { r as readWorkspaceState$1 } from "./workspace-state-U08dEzhG.mjs";
5
- import { n as findCommandWorkspace } from "./project-DhCtQWWU.mjs";
2
+ import { W as parseDeviceSlotOption, _ as loadConfig$1, g as isPathPrefix } from "./config-BZhXY15H.mjs";
3
+ import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-BBvS1H6v.mjs";
4
+ import { r as readWorkspaceState$1 } from "./workspace-state-CPSp3mav.mjs";
5
+ import { n as findCommandWorkspace } from "./project-BiC68mIp.mjs";
6
6
  import { n as SOURCES$1, t as LEVELS$1 } from "./ndjson-CgE_o3Dl.mjs";
7
- import { a as followAgentActions, i as followHostedLogs, n as openWorkspaceLogs } from "./logs-pNvA2hHK.mjs";
8
- import { t as errorDiagnostics } from "./error-diagnostics-DYsjJIHz.mjs";
7
+ import { a as followAgentActions, i as followHostedLogs, n as openWorkspaceLogs } from "./logs-BsIRre8x.mjs";
8
+ import { t as errorDiagnostics } from "./error-diagnostics-B1Mj_-7h.mjs";
9
9
  import { t as watchStdoutReader } from "./stdout-reader-C8yjre1x.mjs";
10
10
  import { realpathSync } from "node:fs";
11
11
  import { relative, sep } from "node:path";
@@ -166,6 +166,7 @@ function logsCommand(program) {
166
166
  };
167
167
  const { view, readAgent, hostedReachable } = await openWorkspaceLogs(context, query, Boolean(opts.follow));
168
168
  const offsets = opts.follow ? view.sizes : null;
169
+ const identities = opts.follow ? view.identities : null;
169
170
  let timeline = [];
170
171
  let rawRecords;
171
172
  try {
@@ -220,6 +221,7 @@ function logsCommand(program) {
220
221
  const stop = followLogs({
221
222
  dir,
222
223
  offsets,
224
+ identities,
223
225
  criteria,
224
226
  onRecord: emit,
225
227
  errorContext: opts.errors ? opts.json ? "field" : "msg" : void 0
@@ -1,2 +1,2 @@
1
- import { n as runMacos, r as waitForLaunchServices, t as macosCommand } from "./macos-C67FZ2ft.mjs";
1
+ import { n as runMacos, r as waitForLaunchServices, t as macosCommand } from "./macos-D477nfzH.mjs";
2
2
  export { macosCommand as default, runMacos, waitForLaunchServices };
@@ -1,37 +1,39 @@
1
- import { d as spawnDeclared, h as withDrainingCancellation, i as withWorkspaceProcessLock, t as getExecutor } from "./exec-DEoAhcze.mjs";
2
- import { d as workspaceDir, l as workspaceAgentDeviceDir, m as workspaceLogsDir$1, n as ensureWorkspaceStorage } from "./paths-DQtTgsBf.mjs";
3
- import { E as upsertProject, u as getConcurrencyLimits } from "./config-DlrsduwG.mjs";
4
- import { l as phaseLine } from "./command-output-YKGWivpG.mjs";
5
- import { f as throwIfCancelled } from "./operation-exec-BW0em61G.mjs";
6
- import { d as writeWorkspaceState, i as recordWorkspaceUse } from "./workspace-state-U08dEzhG.mjs";
7
- import { J as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, et as settingShapeErrors } from "./settings-C7O8A6ZI.mjs";
8
- import { f as projectRegistry, i as findProjectRoot$1, s as ownedDeviceLabel } from "./project-DhCtQWWU.mjs";
9
- import { i as macosProcess, n as macosDir, o as requiredMacosRecord, r as macosLogFile } from "./state-08I3hw3_.mjs";
1
+ import { _ as spawnDeclared, c as throwIfCancelled, t as getExecutor, u as withWorkspaceProcessLock, x as withDrainingCancellation } from "./exec-VFRpu1iA.mjs";
2
+ import { d as workspaceDir, l as workspaceAgentDeviceDir, m as workspaceLogsDir$1, r as ensureWorkspaceStorageAsync } from "./paths-DQtTgsBf.mjs";
3
+ import { E as upsertProject, O as withConfigLockAsync$1, u as getConcurrencyLimits } from "./config-BZhXY15H.mjs";
4
+ import { l as phaseLine } from "./command-output-BBvS1H6v.mjs";
5
+ import { a as recordWorkspaceUseAsync, f as writeWorkspaceStateAsync } from "./workspace-state-CPSp3mav.mjs";
6
+ import { Y as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, tt as settingShapeErrors } from "./settings-B5tCoq9N.mjs";
7
+ import { f as projectRegistry, i as findProjectRoot$1, s as ownedDeviceLabel } from "./project-BiC68mIp.mjs";
8
+ import { i as macosProcess, n as macosDir, o as requiredMacosRecord, r as macosLogFile } from "./state-DPaM3u5K.mjs";
10
9
  import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
11
- import { B as recordFinishedBuild, Fn as processContext, H as tapBuildLog, In as runProcessOperation, M as NO_BUILD_PROGRESS, V as startBuildProgress, z as recordBuildPhase } from "./budget-3ivAK99e.mjs";
12
- import { d as runCancellationSignal, f as withNativeBuildRun } from "./native-run-Dv88i0aU.mjs";
13
- import { I as acquireBuildSlot, R as releaseBuildSlot } from "./workspaces-e41xsjKr.mjs";
14
- import { D as sanitizeDeviceLabel } from "./ios-hcBpnEGk.mjs";
15
- import { c as offloadPlacement, h as setRemoteLogSink, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText } from "./client-B4MMzfo_.mjs";
16
- import { a as requireLocalBuild, i as parseBuildMachineOption, r as namedBuildMachine, s as resolveBuildPlacement, t as OffloadRefusal } from "./selection-DSMbWEX2.mjs";
17
- import { l as connectHost } from "./hosted-client-Bt-tndxV.mjs";
18
- import { t as placeHostedMacos } from "./hosted-macos-BJusKvqL.mjs";
19
- import { r as stopMacosAppHeld, t as stopBundleInstances } from "./stop-CR5689oB.mjs";
10
+ import { B as recordFinishedBuild, H as startBuildProgress, M as NO_BUILD_PROGRESS, Rn as processContext, U as tapBuildLog, z as recordBuildPhase, zn as runProcessOperation } from "./budget-HyShrIpL.mjs";
11
+ import { d as runCancellationSignal, f as withNativeBuildRun } from "./native-run-D5OJsGwA.mjs";
12
+ import { L as acquireBuildSlot, z as releaseBuildSlot } from "./workspaces-C9w4aeXF.mjs";
13
+ import { D as sanitizeDeviceLabel } from "./ios-BQzvJlzw.mjs";
14
+ import { S as setRemoteLogSink, c as offloadPlacement, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText } from "./client-BQsmyp_-.mjs";
15
+ import { a as parseBuildMachineOption, c as resolveBuildPlacement, i as namedBuildMachine, o as requireLocalBuild, t as OffloadRefusal } from "./selection-D5cxEl3t.mjs";
16
+ import { l as connectHost } from "./hosted-client-rsRqysJc.mjs";
17
+ import { t as placeHostedMacos } from "./hosted-macos-d0pv9Tth.mjs";
18
+ import { r as stopMacosAppHeld, t as stopBundleInstances } from "./stop-COP6PQqw.mjs";
20
19
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
21
- import { t as buildPlacementRecord } from "./placement-log-BnGgJRRZ.mjs";
22
- import { t as reidentifyBundle } from "./stage-C4u17aES.mjs";
23
- import { t as validateMacosArtifactPlatform } from "./artifact-platform-CXcmX_j3.mjs";
24
- import { t as waitForMacosRegistration } from "./registration-BcRgF6Ox.mjs";
20
+ import { t as buildPlacementRecord } from "./placement-log-DjOXJRIH.mjs";
21
+ import { t as reidentifyBundle } from "./stage-D8xlRU2D.mjs";
22
+ import { t as validateMacosArtifactPlatform } from "./artifact-platform-CMRc0M_r.mjs";
23
+ import { t as waitForMacosRegistration } from "./registration-CN6nlhcD.mjs";
25
24
  import { createHash, randomUUID } from "node:crypto";
26
25
  import { closeSync, existsSync, openSync, promises, realpathSync, renameSync } from "node:fs";
27
26
  import { join } from "node:path";
28
27
  import { LOG_ROTATE_BYTES, ambientEnv } from "@stim-cli/core";
29
28
  import { machineCapacity, validHostedAppArguments } from "@stim-cli/core/state";
30
29
  //#region src/macos/build.ts
31
- async function buildMacosBundle({ context, root, recipe, bundle, bundleId, displayName, scratch, writer, note, record, buildMachine, progress = NO_BUILD_PROGRESS }) {
30
+ async function buildMacosBundle({ context, root, recipe, bundle, bundleId, displayName, scratch, writer, note, record, buildMachine, hostServerKey, progress = NO_BUILD_PROGRESS }) {
32
31
  const signal = runCancellationSignal(context) ?? context.signal;
33
32
  return withDrainingCancellation(context, signal, async () => {
34
33
  throwIfCancelled(signal, "macOS build");
34
+ const { mode, machines, localEnabled } = buildPlacementCandidates(buildMachine);
35
+ const builder = namedBuildMachine(buildMachine) ? machines[0] : void 0;
36
+ const runsOnWorker = hostServerKey !== void 0 && builder?.serverKey === hostServerKey;
35
37
  if (record) record.buildMachine = buildMachine;
36
38
  setRemoteLogSink(context, (entry) => writer.write({
37
39
  ...entry,
@@ -116,7 +118,7 @@ async function buildMacosBundle({ context, root, recipe, bundle, bundleId, displ
116
118
  };
117
119
  try {
118
120
  if (record) record.cacheHit = false;
119
- if (recipe.cache) try {
121
+ if (recipe.cache && !runsOnWorker) try {
120
122
  identity = await recipe.cache.identity();
121
123
  if (record) {
122
124
  record.fingerprint = identity.hash;
@@ -150,7 +152,6 @@ async function buildMacosBundle({ context, root, recipe, bundle, bundleId, displ
150
152
  }
151
153
  let cacheOnly = false;
152
154
  try {
153
- const { mode, machines, localEnabled } = buildPlacementCandidates(buildMachine);
154
155
  const peer = recipe.cache?.peer?.() ?? null;
155
156
  const request = {
156
157
  ...recipe.offload.request(bundleId),
@@ -172,7 +173,7 @@ async function buildMacosBundle({ context, root, recipe, bundle, bundleId, displ
172
173
  if (placement.offload || cacheOnly) {
173
174
  const chosen = await chooseBuildMachine({
174
175
  projectRoot: root,
175
- target: await recipe.offload.target(),
176
+ target: await recipe.offload.target(runsOnWorker),
176
177
  mode,
177
178
  here,
178
179
  machines,
@@ -224,7 +225,7 @@ async function buildMacosBundle({ context, root, recipe, bundle, bundleId, displ
224
225
  progress.step("install");
225
226
  if (outcome.cacheHit) {
226
227
  await reidentifyBundle(context, outcome.artifactPath, bundleId, displayName);
227
- await validateMacosArtifactPlatform(context, outcome.artifactPath, recipe.product, signal);
228
+ await validateMacosArtifactPlatform(context, outcome.artifactPath, recipe.product, signal, runsOnWorker ? chosen.offer.toolchain.arch : void 0);
228
229
  }
229
230
  await recipe.validateFetched(outcome.artifactPath, bundleId, displayName);
230
231
  throwIfCancelled(signal, "macOS build");
@@ -345,7 +346,7 @@ async function planMacos(context, root, buildMachineFlag) {
345
346
  if (selected.failure) throw Object.assign(new Error(selected.failure.message), selected.failure);
346
347
  const macos = settings.macos;
347
348
  if (!macos?.product || !macos.infoPlist) throw Object.assign(/* @__PURE__ */ new Error("Set macos.product and macos.infoPlist explicitly in .stim.json. See stim guide macos."), { code: "STIM_BAD_ARG" });
348
- const { swiftpmMacosProject } = await import("./swiftpm-macos-DbwGCpZg.mjs");
349
+ const { swiftpmMacosProject } = await import("./swiftpm-macos-Bp_sn9P4.mjs");
349
350
  const recipe = await swiftpmMacosProject(root).prepare(context, settings);
350
351
  let identity = null;
351
352
  let cacheHit = false;
@@ -398,7 +399,7 @@ async function runMacos(context, root, note = console.error, remote, buildMachin
398
399
  if (selected.failure) throw Object.assign(new Error(selected.failure.message), selected.failure);
399
400
  const buildMachine = selected.selected;
400
401
  const macos = await (await operation.load()).prepare(context, settings);
401
- ensureWorkspaceStorage(root);
402
+ await ensureWorkspaceStorageAsync(root, context.signal);
402
403
  return withNativeBuildRun(context, root, {
403
404
  command: "macos",
404
405
  platform: "macos"
@@ -414,10 +415,15 @@ async function runMacos(context, root, note = console.error, remote, buildMachin
414
415
  const previous = requiredMacosRecord(root);
415
416
  if (previous?.host && previous.host.machine !== remote) throw new Error(`This workspace's macOS app runs on ${previous.host.machine}. Run stim stop first, then stim macos${remote ? ` --remote ${remote}` : ""}.`);
416
417
  if (remote && !validHostedAppArguments(macos.arguments)) throw new Error("macos.arguments is too large for a hosted app: at most 32 arguments of 1024 characters (8192 in total), without NUL or line breaks.");
417
- if (remote) (await connectHost(remote)).connection.close();
418
+ let hostServerKey;
419
+ if (remote) {
420
+ const probe = await connectHost(remote);
421
+ hostServerKey = probe.credential.serverKey;
422
+ probe.connection.close();
423
+ }
418
424
  if (!previous?.host) await stopMacosAppHeld(root);
419
- upsertProject(root, {});
420
- recordWorkspaceUse(root, /* @__PURE__ */ new Date(), context.env, context.cwd);
425
+ await withConfigLockAsync$1(() => upsertProject(root, {}));
426
+ await recordWorkspaceUseAsync(root, /* @__PURE__ */ new Date(), context.env, context.cwd, context.signal);
421
427
  const bundle = join(macosDir(root), `${macos.product}.app`);
422
428
  const record = {
423
429
  product: macos.product,
@@ -437,7 +443,7 @@ async function runMacos(context, root, note = console.error, remote, buildMachin
437
443
  hostLaunched: previous.hostLaunched ?? false
438
444
  } : {}
439
445
  };
440
- const handoff = await buildBundle(context, root, macos, record, remote !== void 0, note, progress);
446
+ const handoff = await buildBundle(context, root, macos, record, remote !== void 0, hostServerKey, note, progress);
441
447
  progress.step("launch");
442
448
  const launched = () => {
443
449
  try {
@@ -452,7 +458,7 @@ async function runMacos(context, root, note = console.error, remote, buildMachin
452
458
  return here;
453
459
  }
454
460
  const connection = await connectHost(remote);
455
- const write = (patch) => writeWorkspaceState(root, { macos: {
461
+ const write = (patch) => writeWorkspaceStateAsync(root, { macos: {
456
462
  ...record,
457
463
  ...patch
458
464
  } });
@@ -467,7 +473,7 @@ async function runMacos(context, root, note = console.error, remote, buildMachin
467
473
  recorded: previous?.host,
468
474
  reserved: (reserved) => {
469
475
  placement = reserved;
470
- write({
476
+ return write({
471
477
  host: reserved,
472
478
  hostLaunched: false
473
479
  });
@@ -481,11 +487,11 @@ async function runMacos(context, root, note = console.error, remote, buildMachin
481
487
  host: run.placement,
482
488
  hostLaunched: run.launched
483
489
  };
484
- writeWorkspaceState(root, { macos: placed });
490
+ await writeWorkspaceStateAsync(root, { macos: placed });
485
491
  launched();
486
492
  return placed;
487
493
  } catch (error) {
488
- write({
494
+ await write({
489
495
  supervisor: void 0,
490
496
  ...placement ? {
491
497
  host: placement,
@@ -503,10 +509,10 @@ async function runMacos(context, root, note = console.error, remote, buildMachin
503
509
  }).finally(() => progress.clear());
504
510
  }, { write: note });
505
511
  }
506
- async function buildBundle(context, root, recipe, record, hosted, note, progress = NO_BUILD_PROGRESS) {
512
+ async function buildBundle(context, root, recipe, record, hosted, hostServerKey, note, progress = NO_BUILD_PROGRESS) {
507
513
  const started = Date.parse(record.build.startedAt);
508
514
  const scratch = join(macosDir(root), "build");
509
- writeWorkspaceState(root, { macos: record });
515
+ await writeWorkspaceStateAsync(root, { macos: record });
510
516
  const writer = tapBuildLog(createNdjsonWriter(macosLogFile(root), { maxBytes: LOG_ROTATE_BYTES }), progress);
511
517
  try {
512
518
  const base = recipe.bundleId;
@@ -524,7 +530,8 @@ async function buildBundle(context, root, recipe, record, hosted, note, progress
524
530
  note,
525
531
  progress,
526
532
  record: record.build,
527
- buildMachine: record.build.buildMachine
533
+ buildMachine: record.build.buildMachine,
534
+ hostServerKey
528
535
  });
529
536
  record.bundleId = built.bundleId;
530
537
  record.displayName = displayName;
@@ -536,7 +543,7 @@ async function buildBundle(context, root, recipe, record, hosted, note, progress
536
543
  finishedAt: (/* @__PURE__ */ new Date()).toISOString(),
537
544
  durationMs: Date.now() - started
538
545
  };
539
- writeWorkspaceState(root, { macos: record });
546
+ await writeWorkspaceStateAsync(root, { macos: record });
540
547
  recordMacosBuild(root, record.build, progress.steps());
541
548
  return built.handoff;
542
549
  } catch (error) {
@@ -555,7 +562,7 @@ async function buildBundle(context, root, recipe, record, hosted, note, progress
555
562
  error: message,
556
563
  ..."code" in Object(error) && typeof error.code === "string" ? { errorCode: error.code } : {}
557
564
  };
558
- writeWorkspaceState(root, { macos: {
565
+ await writeWorkspaceStateAsync(root, { macos: {
559
566
  ...record,
560
567
  supervisor: void 0,
561
568
  build
@@ -1,2 +1,2 @@
1
- import { n as runMacosSupervisor, t as logLines } from "./run-DidHghD1.mjs";
1
+ import { n as runMacosSupervisor, t as logLines } from "./run-BtzE09Dl.mjs";
2
2
  export { logLines, runMacosSupervisor };
@@ -1,11 +1,11 @@
1
- import { P as formatBytes } from "./config-DlrsduwG.mjs";
2
- import { Tt as deviceSweepIsScoped, u as resolveBudget } from "./budget-3ivAK99e.mjs";
3
- import { I as memoryCulpritAdvice, N as memoryCulpritsUnder } from "./ios-hcBpnEGk.mjs";
4
- import { v as maintenanceLogger } from "./client-B4MMzfo_.mjs";
1
+ import { P as formatBytes } from "./config-BZhXY15H.mjs";
2
+ import { Dt as deviceSweepIsScoped, u as resolveBudget } from "./budget-HyShrIpL.mjs";
3
+ import { P as memoryCulpritsUnder, z as memoryCulpritAdvice } from "./ios-BQzvJlzw.mjs";
4
+ import { T as maintenanceLogger } from "./client-BQsmyp_-.mjs";
5
5
  import { t as resolveMaintenanceSettings } from "./settings-Djl-mpjX.mjs";
6
- import { t as relaunchWithLogFile } from "./detached-entry-BwNEtIrP.mjs";
7
- import { A as levelFloors, C as measureDisk, D as measureSizes, M as lowestFree, O as sizeScanDeferred, T as measurePressure, j as levelStillShort, k as diskPressureLevel } from "./worktree-B4Nj3EGS.mjs";
8
- import { i as plannedMaintenance, m as measureOwnedDevices, n as diskRecovered, o as triggeringRoot, r as executeAction } from "./act-vxiMwdf5.mjs";
6
+ import { t as relaunchWithLogFile } from "./detached-entry-KmieOKgN.mjs";
7
+ import { D as measureDisk, F as levelStillShort, I as lowestFree, M as sizeScanDeferred, N as diskPressureLevel, P as levelFloors, j as measureSizes, k as measurePressure } from "./worktree-CclFIe1Z.mjs";
8
+ import { i as plannedMaintenance, m as measureOwnedDevices, n as diskRecovered, o as triggeringRoot, r as executeAction } from "./act-BbHS3oV8.mjs";
9
9
  import { r as due, t as capChildLog } from "./attempt-DW-mQqM7.mjs";
10
10
  import { releaseClaim, tryAcquireClaim } from "@stim-cli/core/ownership-claim";
11
11
  import { randomBytes } from "node:crypto";
@@ -1,7 +1,7 @@
1
- import { g as process_identity_exports, r as WorkspaceProcessCleanupError, t as getExecutor } from "./exec-DEoAhcze.mjs";
2
- import { F as isOnMountedVolume, I as listMountedVolumes, O as withConfigLockAsync, _ as loadConfig, n as allMetroPorts, r as claimMetroPort, x as releaseMetroPort } from "./config-DlrsduwG.mjs";
3
- import { t as runOperationFile } from "./operation-exec-BW0em61G.mjs";
4
- import { r as readWorkspaceState } from "./workspace-state-U08dEzhG.mjs";
1
+ import { S as process_identity_exports, l as WorkspaceProcessCleanupError, t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
+ import { F as isOnMountedVolume, I as listMountedVolumes, O as withConfigLockAsync, _ as loadConfig, n as allMetroPorts, r as claimMetroPort, x as releaseMetroPort } from "./config-BZhXY15H.mjs";
3
+ import { t as runOperationFile } from "./operation-exec-CUZifp6Z.mjs";
4
+ import { r as readWorkspaceState } from "./workspace-state-CPSp3mav.mjs";
5
5
  import { sep } from "path";
6
6
  import { existsSync, readlinkSync, realpathSync } from "fs";
7
7
  import { readFile } from "node:fs/promises";
@@ -1,8 +1,7 @@
1
- import { g as process_identity_exports } from "./exec-DEoAhcze.mjs";
1
+ import { S as process_identity_exports, c as throwIfCancelled, s as cancelledError } from "./exec-VFRpu1iA.mjs";
2
2
  import { g as workspaceStateFile$1 } from "./paths-DQtTgsBf.mjs";
3
- import { ot as tailscaleStatusAsync } from "./config-DlrsduwG.mjs";
4
- import { d as cancelledError, f as throwIfCancelled } from "./operation-exec-BW0em61G.mjs";
5
- import { l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-U08dEzhG.mjs";
3
+ import { ot as tailscaleStatusAsync } from "./config-BZhXY15H.mjs";
4
+ import { l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-CPSp3mav.mjs";
6
5
  import { randomBytes, randomUUID } from "node:crypto";
7
6
  import { statSync, watch } from "node:fs";
8
7
  import { HOSTED_METRO_REQUESTS_KEY, findPeer, hostedMetroGateways, hostedMetroRequests, isJsonObject, parseMachine } from "@stim-cli/core/state";
@@ -1,6 +1,6 @@
1
- import { g as process_identity_exports, i as withWorkspaceProcessLock, t as getExecutor } from "./exec-DEoAhcze.mjs";
2
- import { C as saveConfig, O as withConfigLockAsync, _ as loadConfig, c as ensureConfig, d as getConfigDir, p as getProject } from "./config-DlrsduwG.mjs";
3
- import { f as signalProcessTree, m as createPortProbe, s as parseNetstatPids } from "./metro-DiXtA3Ty.mjs";
1
+ import { S as process_identity_exports, t as getExecutor, u as withWorkspaceProcessLock } from "./exec-VFRpu1iA.mjs";
2
+ import { C as saveConfig, O as withConfigLockAsync, _ as loadConfig, c as ensureConfig, d as getConfigDir, p as getProject } from "./config-BZhXY15H.mjs";
3
+ import { f as signalProcessTree, m as createPortProbe, s as parseNetstatPids } from "./metro-1pJgCX4U.mjs";
4
4
  import { realpathSync } from "node:fs";
5
5
  //#region src/named-ports.ts
6
6
  const FIRST_PORT = 8900;
@@ -1,21 +1,21 @@
1
- import { t as getExecutor } from "./exec-DEoAhcze.mjs";
1
+ import { t as getExecutor } from "./exec-VFRpu1iA.mjs";
2
2
  import { d as workspaceDir, i as sharedBuildCache } from "./paths-DQtTgsBf.mjs";
3
- import { H as deviceSlotPlatforms, p as getProject, q as validateDeviceSlot } from "./config-DlrsduwG.mjs";
4
- import { tt as settingValueAt } from "./settings-C7O8A6ZI.mjs";
5
- import { r as register } from "./cache-manifest-DSeQjt-Q.mjs";
6
- import { Y as statsProjectKey } from "./budget-3ivAK99e.mjs";
7
- import { d as runCancellationSignal } from "./native-run-Dv88i0aU.mjs";
8
- import { h as resolveBuild, o as entryDir, t as artifactIn } from "./build-cache-Dv7RN200.mjs";
9
- import { B as ownedAvdDeviceProfile, E as findBuildTool, I as listInstalledSystemImages, K as ownedAvdSystemImage, V as ownedAvdDirectory, X as pickDefaultSystemImage, l as androidSystemImageAbi, o as androidHome } from "./android-C7sVmyI9.mjs";
10
- import { o as resolveCcache } from "./ccache-CH2EWGPB.mjs";
11
- import { r as androidToolchainAsync } from "./toolchain-B9hCFCQw.mjs";
12
- import { a as nativeGradleTransfer, t as gradleOffloadInputs } from "./native-gradle-inputs-Dnh84Zbd.mjs";
13
- import { d as buildGradle, l as androidSdkRefusal } from "./react-native-build-CelbTO_y.mjs";
14
- import { l as skippedMissReason, o as explainBuildMiss } from "./prebuild-BligW0QS.mjs";
15
- import { c as resolveAndroidRunPlan } from "./result-utnBea7x.mjs";
16
- import { n as androidProcessRuntime } from "./launch-D-zq8SHG.mjs";
17
- import { n as planFlagRefusal, r as planPayload } from "./build-plan-BmbdHQbr.mjs";
18
- import { a as nativeGradleWorkerArtifactIdentity, n as gradleArtifactInputs, r as nativeGradleArtifactSnapshot, t as NATIVE_GRADLE_CACHE_LIMIT } from "./native-gradle-artifact-inputs-DHFnmrVf.mjs";
3
+ import { H as deviceSlotPlatforms, p as getProject, q as validateDeviceSlot } from "./config-BZhXY15H.mjs";
4
+ import { nt as settingValueAt } from "./settings-B5tCoq9N.mjs";
5
+ import { B as ownedAvdDeviceProfile, E as findBuildTool, I as listInstalledSystemImages, K as ownedAvdSystemImage, V as ownedAvdDirectory, X as pickDefaultSystemImage, l as androidSystemImageAbi, o as androidHome } from "./android-Cjcj8MCw.mjs";
6
+ import { r as register } from "./cache-manifest-BPXRONJz.mjs";
7
+ import { Z as statsProjectKey } from "./budget-HyShrIpL.mjs";
8
+ import { d as runCancellationSignal } from "./native-run-D5OJsGwA.mjs";
9
+ import { s as entryDir, t as artifactIn, y as resolveBuild } from "./build-cache-CKCzxzxA.mjs";
10
+ import { o as resolveCcache } from "./ccache-h1FKhZeg.mjs";
11
+ import { h as gradleOffloadInputs, y as nativeGradleTransfer } from "./client-BQsmyp_-.mjs";
12
+ import { r as androidToolchainAsync } from "./toolchain-VzLJzZ7O.mjs";
13
+ import { d as buildGradle, l as androidSdkRefusal } from "./react-native-build-CwZB-agu.mjs";
14
+ import { s as explainBuildMiss, u as skippedMissReason } from "./prebuild-JUaqOLpc.mjs";
15
+ import { u as resolveAndroidRunPlan } from "./result-CR2vk2cj.mjs";
16
+ import { n as androidProcessRuntime } from "./launch-D0lPvFFu.mjs";
17
+ import { n as planFlagRefusal, r as planPayload } from "./build-plan-zCuHGlA8.mjs";
18
+ import { a as nativeGradleWorkerArtifactIdentity, n as gradleArtifactInputs, r as nativeGradleArtifactSnapshot, t as NATIVE_GRADLE_CACHE_LIMIT } from "./native-gradle-artifact-inputs-BJscK4vN.mjs";
19
19
  import { createHash } from "node:crypto";
20
20
  import { createReadStream, createWriteStream, existsSync, readFileSync, statSync } from "node:fs";
21
21
  import { tmpdir } from "node:os";