stim 1.20.1 → 1.20.2

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 (157) hide show
  1. package/README.md +6 -3
  2. package/dist/{activity-BaMpUQ4-.mjs → activity-BSV745Kz.mjs} +4 -4
  3. package/dist/{agent-device-usage-output-VPaOgGaF.mjs → agent-device-usage-output-Dzgv6lgR.mjs} +5 -6
  4. package/dist/{android-CLbBJ2ve.mjs → android-DCKZrNvV.mjs} +37 -38
  5. package/dist/{android-eXfIjKJr.mjs → android-Dlzxshgp.mjs} +5 -5
  6. package/dist/{android-CZh6ElG5.mjs → android-HqP1_vB_.mjs} +3 -3
  7. package/dist/{android-DE8-JfGW.mjs → android-Mz_Inn3w.mjs} +10 -10
  8. package/dist/{android-cas-BFpS84v2.mjs → android-cas-Bl-cLJBk.mjs} +4 -4
  9. package/dist/android-cas-compiler.mjs +1 -1
  10. package/dist/{api-zuX3ynYN.mjs → api-qvOzWyfO.mjs} +1 -1
  11. package/dist/api-run.mjs +19 -21
  12. package/dist/api.mjs +1 -1
  13. package/dist/{app-install-Cg9YJy3x.mjs → app-install-BIKtMfPq.mjs} +71 -48
  14. package/dist/{artifact-DXk_Fle_.mjs → artifact-D3czlUvT.mjs} +13 -13
  15. package/dist/{artifact-Ctb2jpw6.mjs → artifact-HSwkIWEQ.mjs} +12 -12
  16. package/dist/{browser-web-xQWC2RWl.mjs → browser-web-CA-F1GQo.mjs} +18 -18
  17. package/dist/{budget-RFbwFpG5.mjs → budget-f7516Zk0.mjs} +23 -26
  18. package/dist/{build-COBA1tBc.mjs → build-DYDbfkk5.mjs} +28 -33
  19. package/dist/{build-plan-CRjAA6Qi.mjs → build-plan-B7SZsc2N.mjs} +17 -17
  20. package/dist/{cache-manifest-qA3dT2x2.mjs → cache-manifest-XH-fvDUj.mjs} +10 -5
  21. package/dist/cache-manifest.mjs +1 -1
  22. package/dist/cancellation-C_22VQTH.mjs +24 -0
  23. package/dist/{ccache-CtbqWxIC.mjs → ccache-zdKiYQ3E.mjs} +7 -7
  24. package/dist/{chrome-Dp2lMLBe.mjs → chrome-BnzZMqsR.mjs} +1 -1
  25. package/dist/{cli-sGqlPu1n.mjs → cli-CLP3diBm.mjs} +20 -20
  26. package/dist/cli.mjs +1 -1
  27. package/dist/{client-zqjFd79D.mjs → client-qQAaXSUs.mjs} +21 -29
  28. package/dist/collector-run.d.mts +7 -6
  29. package/dist/collector-run.mjs +6 -7
  30. package/dist/{command-output-CPDq_90S.mjs → command-output-BTy8hZ0F.mjs} +1 -1
  31. package/dist/{config-D0LhTY3S.mjs → config-BYDxlMY3.mjs} +43 -5
  32. package/dist/{created-devices-CXBMtoj5.mjs → created-devices-Dzd5C2LF.mjs} +2 -2
  33. package/dist/{dependency-state-B2m8eqsS.mjs → dependency-state-DG0p31-y.mjs} +2 -2
  34. package/dist/{detached-entry-BXq4fIl-.mjs → detached-entry-B9C_zeQC.mjs} +1 -1
  35. package/dist/{dev-client-BqYjMIaC.mjs → dev-client-DAWVIGBu.mjs} +2 -2
  36. package/dist/{device-D4DqjSZZ.mjs → device-BECOiufl.mjs} +13 -14
  37. package/dist/{device-BgNj-qVj.mjs → device-DuiPJQSn.mjs} +8 -8
  38. package/dist/{device-capacity-DrwHwR97.mjs → device-capacity-CBUAcRyQ.mjs} +10 -11
  39. package/dist/device-host-worker.mjs +16 -17
  40. package/dist/{device-ios-DE8KJd3b.mjs → device-ios-COSi6oS1.mjs} +12 -15
  41. package/dist/{device-lease-C309csaB.mjs → device-lease-BX1sJQ2E.mjs} +12 -16
  42. package/dist/{device-lease-run-Baelt3nc.mjs → device-lease-run-Cw2M4z51.mjs} +4 -4
  43. package/dist/{device-pool-DtK9S6AD.mjs → device-pool-Bf-pOhSw.mjs} +3 -3
  44. package/dist/{device-remote-DjsNw8DD.mjs → device-remote-xRT0Vmo9.mjs} +14 -14
  45. package/dist/{doctor-DiP9HsIP.mjs → doctor-CB8oZKCk.mjs} +13 -13
  46. package/dist/{doctor-Dunu3Nv1.mjs → doctor-kfMBnUw6.mjs} +78 -69
  47. package/dist/{doctor-watchman-XJzT8tK-.mjs → doctor-watchman-BRyV2adA.mjs} +7 -9
  48. package/dist/{eas-build-0gadvrca.mjs → eas-build-JyfqyHfC.mjs} +5 -5
  49. package/dist/{eas-session-ledger-DJDeL4Uq.mjs → eas-session-ledger-Cm0Gwq2F.mjs} +6 -4
  50. package/dist/{error-diagnostics-BhQtoLrZ.mjs → error-diagnostics-BR677IDM.mjs} +10 -10
  51. package/dist/{exec-B81Qodjn.mjs → exec-DqKo9GKJ.mjs} +22 -8
  52. package/dist/{gc-D5cz5G0k.mjs → gc-qWOMdnER.mjs} +74 -23
  53. package/dist/git-DDfFzkMm.mjs +45 -0
  54. package/dist/{gradle-CZZo1TSA.mjs → gradle-DSrXb6lG.mjs} +6 -6
  55. package/dist/{guide-DakjcoUt.mjs → guide-G9cAbVAc.mjs} +56 -18
  56. package/dist/{hosted-android-C-D8Dj0_.mjs → hosted-android-C3MHGld1.mjs} +3 -3
  57. package/dist/{hosted-client--hNFgixu.mjs → hosted-client-ZEKpS9vw.mjs} +19 -11
  58. package/dist/{hosted-ios-Chx9XQyI.mjs → hosted-ios-l-o3iM9J.mjs} +1 -1
  59. package/dist/{hosted-logs-Bkz0Hxzh.mjs → hosted-logs-EzQM7-3Z.mjs} +7 -7
  60. package/dist/{hosted-macos-ckTjN-0V.mjs → hosted-macos-BACVAVqE.mjs} +10 -8
  61. package/dist/{hosted-native-3KXZ5-qn.mjs → hosted-native-A4s1QPXe.mjs} +13 -11
  62. package/dist/{idle-shutdown-DhAUyf5s.mjs → idle-shutdown-DtxhPTKe.mjs} +7 -7
  63. package/dist/{ios-BDBN-xpf.mjs → ios-BwVCF7oA.mjs} +8 -8
  64. package/dist/{ios-CQ8bHQXB.mjs → ios-Ce7bc7br.mjs} +29 -29
  65. package/dist/{ios-o896T9PE.mjs → ios-RkW4pnQf.mjs} +6 -6
  66. package/dist/{ios-device-B1B14xND.mjs → ios-device-B5veSDDQ.mjs} +1 -1
  67. package/dist/{ios-device-BWHKGaJq.mjs → ios-device-D7pi2Sca.mjs} +14 -14
  68. package/dist/{ios-VGvNdsv2.mjs → ios-nOLJGVdy.mjs} +1 -1
  69. package/dist/{ios-project-BeOXKPt2.mjs → ios-project-K9hY_Jab.mjs} +8 -8
  70. package/dist/{ios-state-BsXMwo5y.mjs → ios-state-CBLe1xYw.mjs} +1 -1
  71. package/dist/{js-swap-Z_mSuRrx.mjs → js-swap-Bb3nsS07.mjs} +13 -13
  72. package/dist/{launch-BootbMk4.mjs → launch-C3qJ6Agb.mjs} +46 -45
  73. package/dist/{launch-V1zqiOYn.mjs → launch-F4sOqAhB.mjs} +21 -21
  74. package/dist/{launch-verify-Dl78EVgR.mjs → launch-verify-B6Q8hZP-.mjs} +11 -11
  75. package/dist/{logs-Bh4eqCCc.mjs → logs-BGrEUaEs.mjs} +10 -11
  76. package/dist/{macos-D7irBW3A.mjs → macos-Ch5VJmcS.mjs} +40 -24
  77. package/dist/macos-D7uDvO-z.mjs +2 -0
  78. package/dist/macos-run.mjs +1 -1
  79. package/dist/maintenance-run.mjs +7 -7
  80. package/dist/{metro-_ZIE3Axg.mjs → metro-DnCEjCxs.mjs} +8 -9
  81. package/dist/{metro-gateway-BzlQZQmU.mjs → metro-gateway-CX9Xlkq2.mjs} +3 -3
  82. package/dist/{miss-reason-SuTptY-I.mjs → miss-reason-mKzZ4VvN.mjs} +3 -3
  83. package/dist/{named-ports-O1TIl7tx.mjs → named-ports-4WopRPg-.mjs} +4 -5
  84. package/dist/{native-android-D94RlJ-X.mjs → native-android-D5qc3-_v.mjs} +10 -10
  85. package/dist/{native-gradle-inputs-BQnIdAlL.mjs → native-gradle-inputs-BsLRrl7u.mjs} +3 -10
  86. package/dist/{native-runtime-D024BAvm.mjs → native-runtime-k8dTIrbK.mjs} +7 -8
  87. package/dist/{native-xcode-inputs-UElfGs59.mjs → native-xcode-inputs-CykopJdM.mjs} +7 -8
  88. package/dist/{native-xcode-ios-CjS-nDVY.mjs → native-xcode-ios-Bbf30Gm0.mjs} +15 -15
  89. package/dist/offload-worker.mjs +34 -38
  90. package/dist/{ownership-BrjepDiv.mjs → ownership-DCtw_2IA.mjs} +3 -3
  91. package/dist/{page-Bv9s2KwY.mjs → page-DRHy329N.mjs} +1 -1
  92. package/dist/{placement-log-BItXET1x.mjs → placement-log-MOfPVgaM.mjs} +1 -1
  93. package/dist/{plan-Jwu_vr-F.mjs → plan-C4TjdPsR.mjs} +10 -10
  94. package/dist/{plan-placement-B466UYMU.mjs → plan-placement-V0TdzYXp.mjs} +3 -3
  95. package/dist/{ports-BFRL6JTj.mjs → ports-DdSUicVo.mjs} +3 -3
  96. package/dist/{prebuild-DB_zLOLc.mjs → prebuild-DYbucPXy.mjs} +7 -8
  97. package/dist/{preview-BRLFRhTz.mjs → preview-78a9kR_-.mjs} +31 -24
  98. package/dist/{project-DX8fXyw_.mjs → project-_phNIJfs.mjs} +15 -16
  99. package/dist/{pull-request-vOhLNmIb.mjs → pull-request-CQ8sPbZa.mjs} +5 -18
  100. package/dist/pull-requests.mjs +1 -1
  101. package/dist/{react-native-android-CuXM3QS8.mjs → react-native-android-CM1XRDwv.mjs} +34 -30
  102. package/dist/{react-native-build-JUF31S8U.mjs → react-native-build-CtCccJtb.mjs} +6 -6
  103. package/dist/{react-native-doctor-BQHqiXaQ.mjs → react-native-doctor-CfRnFfjs.mjs} +5 -5
  104. package/dist/{react-native-ios-DtVO4qf2.mjs → react-native-ios-Dhq_eiYQ.mjs} +14 -14
  105. package/dist/{recordings-Bk-VivUV.mjs → recordings-D0d5aQt0.mjs} +1 -1
  106. package/dist/{reload-D9V7D8gP.mjs → reload-C8JhxjSh.mjs} +17 -17
  107. package/dist/{remote-CZiTijxG.mjs → remote-BiR6aYjy.mjs} +7 -7
  108. package/dist/{remote-cache-fxcl5C-L.mjs → remote-cache-OyOyVIS3.mjs} +4 -4
  109. package/dist/{result-BrfgXtdO.mjs → result-CaJg5Iat.mjs} +8 -8
  110. package/dist/{run-ClC8UVB5.mjs → run-BtPgpKks.mjs} +3 -3
  111. package/dist/{server-bare-dWjAarki.mjs → server-bare-R2m_gsH8.mjs} +3 -3
  112. package/dist/{server-command-DnJYLnr4.mjs → server-command-CTtCkmcQ.mjs} +5 -5
  113. package/dist/server-expo-Bigriskl.mjs +2 -0
  114. package/dist/{server-expo-CUuzP9Mp.mjs → server-expo-DsguMGUF.mjs} +5 -10
  115. package/dist/{settings-Bbztm4oV.mjs → settings-B717odTD.mjs} +74 -115
  116. package/dist/{settings-BuKMOANA.mjs → settings-BORNaaCO.mjs} +5 -5
  117. package/dist/{simslim-ChMfe8rg.mjs → simslim-CCr3rE-A.mjs} +2 -3
  118. package/dist/{slot-launch-CeCRr6MK.mjs → slot-launch-DPt0m9Nd.mjs} +6 -6
  119. package/dist/{spawn-claims-Kqiifsk2.mjs → spawn-claims-DVS5RkMS.mjs} +1 -1
  120. package/dist/{stage-BNKKdDNc.mjs → stage-KNTQopqv.mjs} +9 -9
  121. package/dist/{start-CRkG-mZ7.mjs → start-BWqzODpb.mjs} +19 -20
  122. package/dist/{start-mh6bS27z.mjs → start-TXeMmmO2.mjs} +1 -1
  123. package/dist/{state-BUpAmt2r.mjs → state-CG_OFoaA.mjs} +2 -2
  124. package/dist/{state-lqxdOH_g.mjs → state-D1Icyjlu.mjs} +5 -5
  125. package/dist/{stats-CaB1MxMi.mjs → stats-BoY5sEPU.mjs} +5 -5
  126. package/dist/{status-BDGHwkCs.mjs → status-BTA7kKiQ.mjs} +1 -1
  127. package/dist/{status-C7vzkInu.mjs → status-WgFbkRzj.mjs} +30 -47
  128. package/dist/{status-watch-ZaVqRdtW.mjs → status-watch-C23ILtf9.mjs} +4 -4
  129. package/dist/{stim-desktop-8GQX2OV8.mjs → stim-desktop-BzBN2Em2.mjs} +1 -1
  130. package/dist/{stop-BO80KJoT.mjs → stop-BNmBMi1F.mjs} +18 -19
  131. package/dist/{stop-Cftw_sXJ.mjs → stop-DPEhunlw.mjs} +6 -6
  132. package/dist/{stop-BU7JaFCg.mjs → stop-DR6VoDIk.mjs} +2 -2
  133. package/dist/supervisor-run.mjs +16 -17
  134. package/dist/{support-Co0wk8Cv.mjs → support-CwjbFs9H.mjs} +9 -9
  135. package/dist/{support-Ca6PZbpr.mjs → support-DMTqj3Hm.mjs} +6 -6
  136. package/dist/{swiftpm-macos-siFSkmCO.mjs → swiftpm-macos-DRNVJWlb.mjs} +9 -9
  137. package/dist/{tailnet-D7-tE_ug.mjs → tailnet-Dh-qiYzG.mjs} +5 -5
  138. package/dist/toolchain-BFkAcstd.mjs +2 -0
  139. package/dist/{toolchain-SqehyPLw.mjs → toolchain-DxSsNssu.mjs} +10 -10
  140. package/dist/trigger-9_USgmxz.mjs +2 -0
  141. package/dist/{trigger-C0MWBi8O.mjs → trigger-CigAYjeL.mjs} +2 -2
  142. package/dist/{warm-progress-5FAXkXIg.mjs → warm-progress-BuY-Fvfn.mjs} +43 -61
  143. package/dist/{watchman-CqmaGcIb.mjs → watchman-CPQFZLXY.mjs} +6 -6
  144. package/dist/{web-BTjzE8mc.mjs → web-BDBMxDpx.mjs} +9 -9
  145. package/dist/web-Dq-i3wzJ.mjs +2 -0
  146. package/dist/web-run.mjs +14 -14
  147. package/dist/{workspace-state-CvgTFe-h.mjs → workspace-state-DJt_MMvf.mjs} +13 -3
  148. package/dist/{workspaces-C4kqIOlx.mjs → workspaces-C36s2jb9.mjs} +15 -16
  149. package/dist/{worktree-DtRsh6go.mjs → worktree-CgvJYJ-Q.mjs} +94 -87
  150. package/dist/{worktree-Cgnm6vZt.mjs → worktree-DpLdCHga.mjs} +1 -1
  151. package/package.json +5 -5
  152. package/dist/macos-kivF8qKz.mjs +0 -2
  153. package/dist/process-identity-Biv3arCO.mjs +0 -40
  154. package/dist/server-expo-Dvkd7JcF.mjs +0 -2
  155. package/dist/toolchain-B12psPA2.mjs +0 -2
  156. package/dist/trigger-SHLOWJ4O.mjs +0 -2
  157. package/dist/web-CHN5gh34.mjs +0 -2
@@ -1,25 +1,24 @@
1
- import { t as process_identity_exports } from "./process-identity-Biv3arCO.mjs";
2
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
1
+ import { E as upsertProject, k as process_identity_exports, u as getConcurrencyLimits } from "./config-BYDxlMY3.mjs";
2
+ import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
3
3
  import { t as spawnEntry } from "./spawn-entry-Dcb7sDUz.mjs";
4
- import { E as upsertProject, u as getConcurrencyLimits } from "./config-D0LhTY3S.mjs";
5
- import { K as resolveProjectSettings, Q as settingShapeErrors, a as SETTING_SHAPE_REMEDY } from "./settings-Bbztm4oV.mjs";
6
- import { c as writeWorkspaceState, i as recordWorkspaceUse, p as ensureWorkspaceStorage, w as workspaceLogsDir$1, x as workspaceDir, y as workspaceAgentDeviceDir } from "./workspace-state-CvgTFe-h.mjs";
7
- import { l as phaseLine } from "./command-output-CPDq_90S.mjs";
8
- import { d as projectRegistry, o as ownedDeviceLabel, r as findProjectRoot } from "./project-DX8fXyw_.mjs";
9
- import { a as spawnDeclared } from "./spawn-claims-Kqiifsk2.mjs";
10
- import { F as acquireBuildSlot, L as releaseBuildSlot } from "./workspaces-C4kqIOlx.mjs";
11
- import { Dt as recordFinishedBuild, Et as recordBuildPhase, Ot as startBuildProgress, kt as tapBuildLog, yt as NO_BUILD_PROGRESS } from "./budget-RFbwFpG5.mjs";
12
- import { a as withWorkspaceProcessLock } from "./named-ports-O1TIl7tx.mjs";
13
- import { S as withNativeBuildRun } from "./tailnet-D7-tE_ug.mjs";
4
+ import { K as resolveProjectSettings, Q as settingShapeErrors, a as SETTING_SHAPE_REMEDY } from "./settings-B717odTD.mjs";
5
+ import { c as writeWorkspaceState, i as recordWorkspaceUse, p as ensureWorkspaceStorage, w as workspaceLogsDir$1, x as workspaceDir, y as workspaceAgentDeviceDir } from "./workspace-state-DJt_MMvf.mjs";
6
+ import { l as phaseLine } from "./command-output-BTy8hZ0F.mjs";
7
+ import { d as projectRegistry, o as ownedDeviceLabel, r as findProjectRoot } from "./project-_phNIJfs.mjs";
8
+ import { a as spawnDeclared } from "./spawn-claims-DVS5RkMS.mjs";
9
+ import { F as acquireBuildSlot, L as releaseBuildSlot } from "./workspaces-C36s2jb9.mjs";
10
+ import { Dt as recordFinishedBuild, Et as recordBuildPhase, Ot as startBuildProgress, kt as tapBuildLog, yt as NO_BUILD_PROGRESS } from "./budget-f7516Zk0.mjs";
11
+ import { a as withWorkspaceProcessLock } from "./named-ports-4WopRPg-.mjs";
12
+ import { S as withNativeBuildRun } from "./tailnet-Dh-qiYzG.mjs";
14
13
  import { r as createNdjsonWriter } from "./ndjson-GOnbyvso.mjs";
15
- import { _ as requireLocalBuild, c as offloadPlacement, f as setRemoteLogSink, g as parseBuildMachineOption, h as namedBuildMachine, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, p as OffloadRefusal, r as chooseBuildMachine, u as remotePhaseText, y as resolveBuildPlacement } from "./client-zqjFd79D.mjs";
16
- import { D as sanitizeDeviceLabel } from "./ios-o896T9PE.mjs";
17
- import { i as macosProcess, n as macosDir, o as requiredMacosRecord, r as macosLogFile } from "./state-BUpAmt2r.mjs";
18
- import { t as buildPlacementRecord } from "./placement-log-BItXET1x.mjs";
19
- import { s as connectHost } from "./hosted-client--hNFgixu.mjs";
20
- import { t as placeHostedMacos } from "./hosted-macos-ckTjN-0V.mjs";
21
- import { i as validateInfoPlist, t as resolveBundleExtras } from "./stage-BNKKdDNc.mjs";
22
- import { r as stopMacosAppHeld, t as stopBundleInstances } from "./stop-Cftw_sXJ.mjs";
14
+ import { _ as requireLocalBuild, c as offloadPlacement, f as setRemoteLogSink, g as parseBuildMachineOption, h as namedBuildMachine, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, p as OffloadRefusal, r as chooseBuildMachine, u as remotePhaseText, y as resolveBuildPlacement } from "./client-qQAaXSUs.mjs";
15
+ import { D as sanitizeDeviceLabel } from "./ios-RkW4pnQf.mjs";
16
+ import { i as macosProcess, n as macosDir, o as requiredMacosRecord, r as macosLogFile } from "./state-CG_OFoaA.mjs";
17
+ import { t as buildPlacementRecord } from "./placement-log-MOfPVgaM.mjs";
18
+ import { c as connectHost } from "./hosted-client-ZEKpS9vw.mjs";
19
+ import { t as placeHostedMacos } from "./hosted-macos-BACVAVqE.mjs";
20
+ import { i as validateInfoPlist, t as resolveBundleExtras } from "./stage-KNTQopqv.mjs";
21
+ import { r as stopMacosAppHeld, t as stopBundleInstances } from "./stop-DPEhunlw.mjs";
23
22
  import { closeSync, existsSync, mkdirSync, mkdtempSync, openSync, realpathSync, renameSync, rmSync } from "node:fs";
24
23
  import { join } from "node:path";
25
24
  import { machineCapacity, readMacosRecord, validHostedAppArguments } from "@stim-cli/core/state";
@@ -336,7 +335,7 @@ async function runMacos(root, note = console.error, remote, buildMachineFlag) {
336
335
  }
337
336
  };
338
337
  if (!remote) {
339
- const here = await launchHere(root, record);
338
+ const here = await launchHere(root, record, note);
340
339
  launched();
341
340
  return here;
342
341
  }
@@ -473,7 +472,21 @@ function recordMacosBuild(root, build, compileSteps) {
473
472
  ...compileSteps === null ? {} : { compileSteps }
474
473
  });
475
474
  }
476
- async function launchHere(root, record) {
475
+ const LAUNCH_SERVICES_CALL_MS = 2e3;
476
+ async function waitForLaunchServices(record, deadline) {
477
+ if (record.host || !record.app) return "skipped";
478
+ const args = [
479
+ "find",
480
+ `bundleid=${record.bundleId}`,
481
+ `pid=${record.app.pid}`
482
+ ];
483
+ while (Date.now() < deadline) {
484
+ if ((await getExecutor().runFileAsync("lsappinfo", args, { timeoutMs: LAUNCH_SERVICES_CALL_MS }).catch(() => "")).includes("ASN:")) return "listed";
485
+ await new Promise((done) => setTimeout(done, 100));
486
+ }
487
+ return "timeout";
488
+ }
489
+ async function launchHere(root, record, note) {
477
490
  await stopBundleInstances(root);
478
491
  const fd = openSync(join(workspaceLogsDir$1(root), "macos-supervisor.log"), "a");
479
492
  let child;
@@ -502,7 +515,10 @@ async function launchHere(root, record) {
502
515
  const deadline = Date.now() + 2e4;
503
516
  while (Date.now() < deadline) {
504
517
  const current = readMacosRecord(root);
505
- if (current?.launchId === record.launchId && current.app && current.supervisor && (0, process_identity_exports.inspectProcessIdentity)(current.app) === "same" && (0, process_identity_exports.inspectProcessIdentity)(current.supervisor) === "same") return current;
518
+ if (current?.launchId === record.launchId && current.app && current.supervisor && (0, process_identity_exports.inspectProcessIdentity)(current.app) === "same" && (0, process_identity_exports.inspectProcessIdentity)(current.supervisor) === "same") {
519
+ if (await waitForLaunchServices(current, deadline) === "timeout") note("macOS LaunchServices does not list the app yet. agent-device open may start a second copy; wait and check lsappinfo.");
520
+ return current;
521
+ }
506
522
  if (child.exitCode !== null || child.signalCode !== null) break;
507
523
  await new Promise((done) => setTimeout(done, 100));
508
524
  }
@@ -565,4 +581,4 @@ function macosCommand(program) {
565
581
  });
566
582
  }
567
583
  //#endregion
568
- export { runMacos as n, buildMacosBundle as r, macosCommand as t };
584
+ export { buildMacosBundle as i, runMacos as n, waitForLaunchServices as r, macosCommand as t };
@@ -0,0 +1,2 @@
1
+ import { n as runMacos, r as waitForLaunchServices, t as macosCommand } from "./macos-Ch5VJmcS.mjs";
2
+ export { macosCommand as default, runMacos, waitForLaunchServices };
@@ -1,2 +1,2 @@
1
- import { n as runMacosSupervisor, t as logLines } from "./run-ClC8UVB5.mjs";
1
+ import { n as runMacosSupervisor, t as logLines } from "./run-BtPgpKks.mjs";
2
2
  export { logLines, runMacosSupervisor };
@@ -1,13 +1,13 @@
1
- import { M as isOnMountedVolume, N as listMountedVolumes, _ as loadConfig$1, j as formatBytes } from "./config-D0LhTY3S.mjs";
2
- import { a as unregister, n as readManifest } from "./cache-manifest-qA3dT2x2.mjs";
3
- import { T as canonicalPath, a as collectWorkspaceOutputs, i as collectOrphanedWorkspaces, o as deleteOrphanedWorkspaces, r as clearWorkspaceOutputs, w as takeGcResults } from "./workspaces-C4kqIOlx.mjs";
4
- import { N as emptyCaches, at as discoverCaches, l as resolveBudget, ot as pruneCache, r as cacheLabel, z as planCacheEmptying } from "./budget-RFbwFpG5.mjs";
1
+ import { F as listMountedVolumes, N as formatBytes, P as isOnMountedVolume, _ as loadConfig$1 } from "./config-BYDxlMY3.mjs";
2
+ import { a as unregister, n as readManifest } from "./cache-manifest-XH-fvDUj.mjs";
3
+ import { T as canonicalPath, a as collectWorkspaceOutputs, i as collectOrphanedWorkspaces, o as deleteOrphanedWorkspaces, r as clearWorkspaceOutputs, w as takeGcResults } from "./workspaces-C36s2jb9.mjs";
4
+ import { N as emptyCaches, at as discoverCaches, l as resolveBudget, ot as pruneCache, r as cacheLabel, z as planCacheEmptying } from "./budget-f7516Zk0.mjs";
5
5
  import { r as createNdjsonWriter } from "./ndjson-GOnbyvso.mjs";
6
- import { t as relaunchWithLogFile } from "./detached-entry-BXq4fIl-.mjs";
7
- import { F as memoryCulpritAdvice, N as memoryCulpritsUnder } from "./ios-o896T9PE.mjs";
6
+ import { t as relaunchWithLogFile } from "./detached-entry-B9C_zeQC.mjs";
7
+ import { F as memoryCulpritAdvice, N as memoryCulpritsUnder } from "./ios-RkW4pnQf.mjs";
8
8
  import { t as resolveMaintenanceSettings } from "./settings-Djl-mpjX.mjs";
9
9
  import { r as due, t as capChildLog } from "./attempt-DW-mQqM7.mjs";
10
- import { a as maintenancePinned, c as removeWorktrees, d as cacheBlocked, f as measureDisk, h as sizeScanDeferred, i as cacheEntryProtection, m as measureSizes, o as recentUse, p as measurePressure, r as triggeringRoot, t as plannedMaintenance } from "./preview-BRLFRhTz.mjs";
10
+ import { a as maintenancePinned, c as removeWorktrees, d as cacheBlocked, f as measureDisk, h as sizeScanDeferred, i as cacheEntryProtection, m as measureSizes, o as recentUse, p as measurePressure, r as triggeringRoot, t as plannedMaintenance } from "./preview-78a9kR_-.mjs";
11
11
  import { appendFileSync, existsSync, mkdirSync, renameSync, statSync, unlinkSync, writeFileSync } from "node:fs";
12
12
  import { basename, join, resolve, sep } from "node:path";
13
13
  import { MAINTENANCE_LOG_NAME, maintenanceChildLogFile, maintenanceDir, maintenanceNdjsonFile, maintenanceRunClaims, maintenanceStateFile, readMaintenanceState, sharedCompilationCache, workspaceLogsDir } from "@stim-cli/core/state";
@@ -1,7 +1,6 @@
1
- import { t as process_identity_exports } from "./process-identity-Biv3arCO.mjs";
2
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
3
- import { M as isOnMountedVolume, N as listMountedVolumes, _ as loadConfig, n as allMetroPorts, r as claimMetroPort, x as releaseMetroPort } from "./config-D0LhTY3S.mjs";
4
- import { r as readWorkspaceState } from "./workspace-state-CvgTFe-h.mjs";
1
+ import { F as listMountedVolumes, P as isOnMountedVolume, _ as loadConfig, k as process_identity_exports, n as allMetroPorts, r as claimMetroPort, x as releaseMetroPort } from "./config-BYDxlMY3.mjs";
2
+ import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
3
+ import { r as readWorkspaceState } from "./workspace-state-DJt_MMvf.mjs";
5
4
  import { sep } from "path";
6
5
  import { existsSync, readlinkSync, realpathSync } from "fs";
7
6
  import { readFile } from "node:fs/promises";
@@ -302,9 +301,9 @@ function listeningPids(port, platform = process.platform) {
302
301
  `-iTCP:${port}`,
303
302
  "-sTCP:LISTEN",
304
303
  "-t"
305
- ]));
304
+ ], { timeoutMs: 1e4 }));
306
305
  if (pids.length > 0 || platform !== "win32") return pids;
307
- return parseNetstatPids(getExecutor().runQuiet("netstat -ano"), port);
306
+ return parseNetstatPids(getExecutor().runQuiet("netstat -ano", { timeoutMs: 1e4 }), port);
308
307
  }
309
308
  function parseLsofCwd(out) {
310
309
  if (!out) return null;
@@ -315,7 +314,7 @@ function parseLsofCwd(out) {
315
314
  return nLine ? nLine.slice(1) : null;
316
315
  }
317
316
  function lsofOutput(args) {
318
- return getExecutor().runFileAsync("lsof", args).catch((error) => typeof error?.stdout === "string" ? error.stdout : null);
317
+ return getExecutor().runFileAsync("lsof", args, { timeoutMs: 1e4 }).catch((error) => typeof error?.stdout === "string" ? error.stdout : null);
319
318
  }
320
319
  /**
321
320
  * `listeningPids` for several ports with one lsof call. A port lsof could not be asked about is
@@ -383,7 +382,7 @@ function processCwd(pid) {
383
382
  "-d",
384
383
  "cwd",
385
384
  "-Fn"
386
- ]));
385
+ ], { timeoutMs: 1e4 }));
387
386
  }
388
387
  function canonicalPath(path) {
389
388
  try {
@@ -458,7 +457,7 @@ function signalProcessTree(pid, signal = "SIGTERM", { group = false, platform =
458
457
  String(pid),
459
458
  "/T",
460
459
  "/F"
461
- ]) !== null;
460
+ ], { timeoutMs: 3e4 }) !== null;
462
461
  }
463
462
  function killMetroTree(leader, processToken) {
464
463
  if (!leader || leader === process.pid || (0, process_identity_exports.inspectProcessIdentity)({
@@ -1,6 +1,6 @@
1
- import { t as process_identity_exports } from "./process-identity-Biv3arCO.mjs";
2
- import { a as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-CvgTFe-h.mjs";
3
- import { l as realIo } from "./tailnet-D7-tE_ug.mjs";
1
+ import { k as process_identity_exports } from "./config-BYDxlMY3.mjs";
2
+ import { a as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-DJt_MMvf.mjs";
3
+ import { l as realIo } from "./tailnet-Dh-qiYzG.mjs";
4
4
  import { HOSTED_METRO_REQUESTS_KEY, findPeer, hostedMetroGateways, hostedMetroRequests, isJsonObject, parseMachine } from "@stim-cli/core/state";
5
5
  import { randomBytes, randomUUID } from "node:crypto";
6
6
  import { isIP } from "node:net";
@@ -1,6 +1,6 @@
1
- import { ht as gitCommonDirOnDisk } from "./settings-Bbztm4oV.mjs";
2
- import { C as diffFingerprintSources, I as storedSources } from "./device-lease-C309csaB.mjs";
3
- import { m as sharedBuildCache } from "./workspace-state-CvgTFe-h.mjs";
1
+ import { gt as gitCommonDirOnDisk } from "./settings-B717odTD.mjs";
2
+ import { C as diffFingerprintSources, I as storedSources } from "./device-lease-BX1sJQ2E.mjs";
3
+ import { m as sharedBuildCache } from "./workspace-state-DJt_MMvf.mjs";
4
4
  import { existsSync, realpathSync } from "node:fs";
5
5
  import { dirname, join, relative } from "node:path";
6
6
  import { LAST_BUILD_KEYS, loadConfig, readWorkspaceState } from "@stim-cli/core/state";
@@ -1,8 +1,7 @@
1
- import { n as ownership_claim_exports, t as process_identity_exports } from "./process-identity-Biv3arCO.mjs";
2
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
3
- import { C as saveConfig, D as withConfigLock, _ as loadConfig, c as ensureConfig, d as getConfigDir, p as getProject } from "./config-D0LhTY3S.mjs";
4
- import { d as signalProcessTree, f as createPortProbe, o as parseNetstatPids } from "./metro-_ZIE3Axg.mjs";
5
- import { n as declareSpawnsOn, o as stopDeclaringSpawnsOn } from "./spawn-claims-Kqiifsk2.mjs";
1
+ import { C as saveConfig, D as withConfigLock, _ as loadConfig, c as ensureConfig, d as getConfigDir, j as ownership_claim_exports, k as process_identity_exports, p as getProject } from "./config-BYDxlMY3.mjs";
2
+ import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
3
+ import { d as signalProcessTree, f as createPortProbe, o as parseNetstatPids } from "./metro-DnCEjCxs.mjs";
4
+ import { n as declareSpawnsOn, o as stopDeclaringSpawnsOn } from "./spawn-claims-DVS5RkMS.mjs";
6
5
  import { realpathSync } from "node:fs";
7
6
  import { join } from "node:path";
8
7
  import { setTimeout } from "node:timers/promises";
@@ -1,13 +1,13 @@
1
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
2
- import { $ as settingValueAt } from "./settings-Bbztm4oV.mjs";
3
- import { x as workspaceDir } from "./workspace-state-CvgTFe-h.mjs";
4
- import { T as findBuildTool, o as androidHome } from "./android-DE8-JfGW.mjs";
5
- import { i as skippedMissReason } from "./miss-reason-SuTptY-I.mjs";
6
- import { o as resolveCcache } from "./ccache-CtbqWxIC.mjs";
7
- import { a as buildGradle, r as androidSdkRefusal } from "./gradle-CZZo1TSA.mjs";
8
- import { n as androidToolchain } from "./toolchain-SqehyPLw.mjs";
9
- import { i as nativeGradleTransfer, t as gradleOffloadInputs } from "./native-gradle-inputs-BQnIdAlL.mjs";
10
- import { n as androidProcessRuntime } from "./launch-V1zqiOYn.mjs";
1
+ import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
2
+ import { $ as settingValueAt } from "./settings-B717odTD.mjs";
3
+ import { x as workspaceDir } from "./workspace-state-DJt_MMvf.mjs";
4
+ import { T as findBuildTool, o as androidHome } from "./android-Mz_Inn3w.mjs";
5
+ import { i as skippedMissReason } from "./miss-reason-mKzZ4VvN.mjs";
6
+ import { o as resolveCcache } from "./ccache-zdKiYQ3E.mjs";
7
+ import { a as buildGradle, r as androidSdkRefusal } from "./gradle-DSrXb6lG.mjs";
8
+ import { n as androidToolchain } from "./toolchain-DxSsNssu.mjs";
9
+ import { i as nativeGradleTransfer, t as gradleOffloadInputs } from "./native-gradle-inputs-BsLRrl7u.mjs";
10
+ import { n as androidProcessRuntime } from "./launch-F4sOqAhB.mjs";
11
11
  import { existsSync, readFileSync, statSync } from "node:fs";
12
12
  import { isAbsolute, join } from "node:path";
13
13
  import { fileURLToPath } from "node:url";
@@ -1,4 +1,4 @@
1
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
1
+ import { t as git } from "./git-DDfFzkMm.mjs";
2
2
  import { existsSync, lstatSync, readFileSync, readdirSync, readlinkSync, realpathSync } from "node:fs";
3
3
  import { basename, dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
4
4
  import { createHash } from "node:crypto";
@@ -172,9 +172,7 @@ function sourceManifest(repoRoot, strict = false) {
172
172
  return files;
173
173
  }
174
174
  function gitVisiblePaths(repoRoot) {
175
- const listed = getExecutor().runFile("git", [
176
- "-C",
177
- repoRoot,
175
+ const listed = git(repoRoot, [
178
176
  "ls-files",
179
177
  "-z",
180
178
  "-co",
@@ -222,12 +220,7 @@ function requireRealParents(repository, path) {
222
220
  }
223
221
  function nativeGradleTransfer(root, value) {
224
222
  const declaration = gradleOffloadInputs(value);
225
- const repository = realpathSync(getExecutor().runFile("git", [
226
- "-C",
227
- root,
228
- "rev-parse",
229
- "--show-toplevel"
230
- ]));
223
+ const repository = realpathSync(git(root, ["rev-parse", "--show-toplevel"]));
231
224
  const project = relative(repository, realpathSync(root)).split(sep).join("/");
232
225
  if (project && !containedPath(project)) throw new Error("The native Gradle project leaves its repository.");
233
226
  if (lstatSync(join(repository, project, "buildSrc"), { throwIfNoEntry: false })?.isDirectory()) throw new Error("Native Gradle offload does not support buildSrc: AGP does not report its build directories, so the worker cannot keep them.");
@@ -1,13 +1,12 @@
1
- import { j as metroPortSetting } from "./settings-Bbztm4oV.mjs";
2
- import { p as ensureWorkspaceStorage, r as readWorkspaceState$1 } from "./workspace-state-CvgTFe-h.mjs";
3
- import { l as phaseLine } from "./command-output-CPDq_90S.mjs";
4
- import { u as resolveProjectMetro } from "./metro-_ZIE3Axg.mjs";
5
- import { c as startDevServer } from "./start-CRkG-mZ7.mjs";
6
- import { r as LAUNCH_UNVERIFIED, t as LAUNCH_BUNDLING } from "./launch-verify-Dl78EVgR.mjs";
1
+ import { j as metroPortSetting } from "./settings-B717odTD.mjs";
2
+ import { p as ensureWorkspaceStorage, r as readWorkspaceState$1 } from "./workspace-state-DJt_MMvf.mjs";
3
+ import { l as phaseLine } from "./command-output-BTy8hZ0F.mjs";
4
+ import { u as resolveProjectMetro } from "./metro-DnCEjCxs.mjs";
5
+ import { c as startDevServer } from "./start-BWqzODpb.mjs";
6
+ import { r as LAUNCH_UNVERIFIED, t as LAUNCH_BUNDLING } from "./launch-verify-B6Q8hZP-.mjs";
7
7
  import { readIdleStop } from "@stim-cli/core/state";
8
8
  import chalk from "chalk";
9
9
  //#region src/commands/native-runtime.ts
10
- const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
11
10
  async function ensureDevServer({ root, port, settings, settingsContext, remote, note, resolve = resolveProjectMetro, start = startDevServer, readState = readWorkspaceState$1 }) {
12
11
  const pin = metroPortSetting(settings);
13
12
  const canReuse = !pin.error && (pin.port === null || pin.port === port);
@@ -77,4 +76,4 @@ function isPhysicalDeviceRequest(flag) {
77
76
  return flag !== null && flag !== void 0 && flag !== false;
78
77
  }
79
78
  //#endregion
80
- export { sleep as a, launchOutcomeRecord as i, ensureWorkspaceStorageSafely as n, isPhysicalDeviceRequest as r, ensureDevServer as t };
79
+ export { launchOutcomeRecord as i, ensureWorkspaceStorageSafely as n, isPhysicalDeviceRequest as r, ensureDevServer as t };
@@ -1,7 +1,7 @@
1
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
2
- import { b as workspaceDerivedData, x as workspaceDir } from "./workspace-state-CvgTFe-h.mjs";
3
- import { m as pbxString, p as pbxReferences } from "./project-DX8fXyw_.mjs";
4
- import { f as NativeInputError, p as fingerprintNativeInputs } from "./native-gradle-inputs-BQnIdAlL.mjs";
1
+ import { r as gitQuiet } from "./git-DDfFzkMm.mjs";
2
+ import { b as workspaceDerivedData, x as workspaceDir } from "./workspace-state-DJt_MMvf.mjs";
3
+ import { m as pbxString, p as pbxReferences } from "./project-_phNIJfs.mjs";
4
+ import { f as NativeInputError, p as fingerprintNativeInputs } from "./native-gradle-inputs-BsLRrl7u.mjs";
5
5
  import { existsSync, readFileSync, realpathSync } from "node:fs";
6
6
  import { dirname, isAbsolute, join, relative, resolve, sep } from "node:path";
7
7
  import { createHash } from "node:crypto";
@@ -68,9 +68,7 @@ function fold(path) {
68
68
  }
69
69
  function gitVisibility(sourceRoot) {
70
70
  if (!existsSync(join(sourceRoot, ".git"))) return null;
71
- const listing = getExecutor().runFileQuiet("git", [
72
- "-C",
73
- sourceRoot,
71
+ const listing = gitQuiet(sourceRoot, [
74
72
  "ls-files",
75
73
  "-z",
76
74
  "--cached",
@@ -83,7 +81,8 @@ function gitVisibility(sourceRoot) {
83
81
  "GIT_WORK_TREE",
84
82
  "GIT_INDEX_FILE",
85
83
  "GIT_COMMON_DIR"
86
- ]
84
+ ],
85
+ timeoutMs: 12e4
87
86
  });
88
87
  if (listing === null) return null;
89
88
  const listed = /* @__PURE__ */ new Set();
@@ -1,19 +1,19 @@
1
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
2
- import { r as register } from "./cache-manifest-qA3dT2x2.mjs";
3
- import { Et as repoRoot, H as remoteIosSetting, Q as settingShapeErrors, W as resolveCacheProviderConfig, mt as gitCommonDir, q as resolveSettings } from "./settings-Bbztm4oV.mjs";
4
- import { T as filesystemBuildCapability, b as buildCacheKey } from "./device-lease-C309csaB.mjs";
5
- import { g as sharedCompilationCache } from "./workspace-state-CvgTFe-h.mjs";
6
- import { f as NativeXcodeError, h as selectNativeXcodeProject, m as pbxString } from "./project-DX8fXyw_.mjs";
7
- import { It as statsProjectKey } from "./budget-RFbwFpG5.mjs";
1
+ import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
2
+ import { r as register } from "./cache-manifest-XH-fvDUj.mjs";
3
+ import { Dt as repoRoot, H as remoteIosSetting, Q as settingShapeErrors, W as resolveCacheProviderConfig, ht as gitCommonDir, q as resolveSettings } from "./settings-B717odTD.mjs";
4
+ import { T as filesystemBuildCapability, b as buildCacheKey } from "./device-lease-BX1sJQ2E.mjs";
5
+ import { g as sharedCompilationCache } from "./workspace-state-DJt_MMvf.mjs";
6
+ import { f as NativeXcodeError, h as selectNativeXcodeProject, m as pbxString } from "./project-_phNIJfs.mjs";
7
+ import { It as statsProjectKey } from "./budget-f7516Zk0.mjs";
8
8
  import { l as artifactCachePolicy, p as resolveOptimizations } from "./errors-DzkMYh8Q.mjs";
9
- import { a as nativeTransferRefusal } from "./client-zqjFd79D.mjs";
10
- import { i as skippedMissReason, t as explainBuildMiss } from "./miss-reason-SuTptY-I.mjs";
11
- import { C as compilationCacheSettings, D as parseXcodeMajor, E as parseSwiftVersion, f as podsAreStale, g as runPodInstall, h as runCaptured, p as readPodState, r as iosToolchain, x as buildXcode, y as HEARTBEAT_INTERVAL_MS } from "./toolchain-SqehyPLw.mjs";
12
- import { n as planFlagRefusal, t as planCachedBuild } from "./build-plan-CRjAA6Qi.mjs";
13
- import { a as deviceModelRefusal, h as resolveDeviceType, m as resolveConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-Co0wk8Cv.mjs";
14
- import { t as IosRecipeRefusal } from "./ios-project-BeOXKPt2.mjs";
15
- import { d as gateProfileForDevice, i as DEFAULT_DEPS, r as iosProcessRuntime } from "./launch-BootbMk4.mjs";
16
- import { a as nativeXcodeSources, i as nativeXcodePackages, n as nativeXcodeInputSnapshot, t as nativeXcodeHasPackages } from "./native-xcode-inputs-UElfGs59.mjs";
9
+ import { a as nativeTransferRefusal } from "./client-qQAaXSUs.mjs";
10
+ import { i as skippedMissReason, t as explainBuildMiss } from "./miss-reason-mKzZ4VvN.mjs";
11
+ import { C as compilationCacheSettings, D as parseXcodeMajor, E as parseSwiftVersion, f as podsAreStale, g as runPodInstall, h as runCaptured, p as readPodState, r as iosToolchain, x as buildXcode, y as HEARTBEAT_INTERVAL_MS } from "./toolchain-DxSsNssu.mjs";
12
+ import { n as planFlagRefusal, t as planCachedBuild } from "./build-plan-B7SZsc2N.mjs";
13
+ import { a as deviceModelRefusal, h as resolveDeviceType, m as resolveConfiguration, v as resolveRuntime, x as simulatorBuildArch, y as resolveSchemeSelection } from "./support-CwjbFs9H.mjs";
14
+ import { t as IosRecipeRefusal } from "./ios-project-K9hY_Jab.mjs";
15
+ import { d as gateProfileForDevice, i as DEFAULT_DEPS, r as iosProcessRuntime } from "./launch-C3qJ6Agb.mjs";
16
+ import { a as nativeXcodeSources, i as nativeXcodePackages, n as nativeXcodeInputSnapshot, t as nativeXcodeHasPackages } from "./native-xcode-inputs-CykopJdM.mjs";
17
17
  import { existsSync } from "node:fs";
18
18
  import { join } from "node:path";
19
19
  //#region src/integrations/native-xcode-ios.ts
@@ -1,22 +1,23 @@
1
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
2
- import { O as writeConfigSetting } from "./config-D0LhTY3S.mjs";
3
- import { d as androidLayoutSetting, y as iosProjectDirSetting } from "./settings-Bbztm4oV.mjs";
4
- import { D as fingerprintProject, M as refingerprintAfterMutation } from "./device-lease-C309csaB.mjs";
5
- import { w as workspaceLogsDir, x as workspaceDir } from "./workspace-state-CvgTFe-h.mjs";
1
+ import { O as writeConfigSetting } from "./config-BYDxlMY3.mjs";
2
+ import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
3
+ import { t as git } from "./git-DDfFzkMm.mjs";
4
+ import { d as androidLayoutSetting, y as iosProjectDirSetting } from "./settings-B717odTD.mjs";
5
+ import { D as fingerprintProject, M as refingerprintAfterMutation } from "./device-lease-BX1sJQ2E.mjs";
6
+ import { w as workspaceLogsDir, x as workspaceDir } from "./workspace-state-DJt_MMvf.mjs";
6
7
  import { n as stripAnsi } from "./process-output-Fpl8PYi8.mjs";
7
- import { d as projectRegistry, h as selectNativeXcodeProject } from "./project-DX8fXyw_.mjs";
8
+ import { d as projectRegistry, h as selectNativeXcodeProject } from "./project-_phNIJfs.mjs";
8
9
  import { o as parseNdjsonText } from "./ndjson-GOnbyvso.mjs";
9
- import { n as CCACHE_UNAVAILABLE, o as resolveCcache } from "./ccache-CtbqWxIC.mjs";
10
- import { i as assembleTaskFor } from "./gradle-CZZo1TSA.mjs";
11
- import { f as podsAreStale, g as runPodInstall, p as readPodState, u as workerToolchain } from "./toolchain-SqehyPLw.mjs";
12
- import { a as validateGradleManifest, d as verifyNativeTransfer, m as manifestDigest, n as gradleStateDirectories, o as verifyGradleTransfer, r as nativeGradleOutputs, t as gradleOffloadInputs } from "./native-gradle-inputs-BQnIdAlL.mjs";
13
- import { n as buildAndroid, o as gradlewPath, r as buildIos } from "./react-native-build-JUF31S8U.mjs";
14
- import { n as buildAndroidOperation, t as buildIosOperation } from "./build-COBA1tBc.mjs";
15
- import { n as recordPrebuild, r as runPrebuild, t as planPrebuild } from "./prebuild-DB_zLOLc.mjs";
16
- import { f as podAction } from "./support-Co0wk8Cv.mjs";
17
- import { r as stageBundle, t as resolveBundleExtras } from "./stage-BNKKdDNc.mjs";
18
- import { t as logLines } from "./run-ClC8UVB5.mjs";
19
- import { r as nativeXcodeMetadataDirectories } from "./native-xcode-inputs-UElfGs59.mjs";
10
+ import { n as CCACHE_UNAVAILABLE, o as resolveCcache } from "./ccache-zdKiYQ3E.mjs";
11
+ import { i as assembleTaskFor } from "./gradle-DSrXb6lG.mjs";
12
+ import { f as podsAreStale, g as runPodInstall, p as readPodState, u as workerToolchain } from "./toolchain-DxSsNssu.mjs";
13
+ import { a as validateGradleManifest, d as verifyNativeTransfer, m as manifestDigest, n as gradleStateDirectories, o as verifyGradleTransfer, r as nativeGradleOutputs, t as gradleOffloadInputs } from "./native-gradle-inputs-BsLRrl7u.mjs";
14
+ import { n as buildAndroid, o as gradlewPath, r as buildIos } from "./react-native-build-CtCccJtb.mjs";
15
+ import { n as buildAndroidOperation, t as buildIosOperation } from "./build-DYDbfkk5.mjs";
16
+ import { n as recordPrebuild, r as runPrebuild, t as planPrebuild } from "./prebuild-DYbucPXy.mjs";
17
+ import { f as podAction } from "./support-CwjbFs9H.mjs";
18
+ import { r as stageBundle, t as resolveBundleExtras } from "./stage-KNTQopqv.mjs";
19
+ import { t as logLines } from "./run-BtPgpKks.mjs";
20
+ import { r as nativeXcodeMetadataDirectories } from "./native-xcode-inputs-CykopJdM.mjs";
20
21
  import { chmodSync, constants, copyFileSync, cpSync, createReadStream, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, readlinkSync, realpathSync, renameSync, rmSync, statSync, symlinkSync, writeFileSync } from "node:fs";
21
22
  import { basename, dirname, join } from "node:path";
22
23
  import { createHash } from "node:crypto";
@@ -97,25 +98,23 @@ function materialize(job, src) {
97
98
  } catch {}
98
99
  mkdirSync(src, { recursive: true });
99
100
  if (!existsSync(join(src, ".git"))) {
100
- getExecutor().runFile("git", [
101
- "init",
102
- "--quiet",
103
- src
104
- ], { timeoutMs: 3e4 });
105
- getExecutor().runFile("git", [
106
- "-C",
107
- src,
101
+ git(src, ["init", "--quiet"], {
102
+ write: true,
103
+ timeoutMs: 3e4
104
+ });
105
+ git(src, [
108
106
  "config",
109
107
  "core.excludesFile",
110
108
  "/dev/null"
111
- ], { timeoutMs: 3e4 });
109
+ ], {
110
+ write: true,
111
+ timeoutMs: 3e4
112
+ });
112
113
  }
113
- getExecutor().runFile("git", [
114
- "-C",
115
- src,
116
- "read-tree",
117
- "--empty"
118
- ], { timeoutMs: 3e4 });
114
+ git(src, ["read-tree", "--empty"], {
115
+ write: true,
116
+ timeoutMs: 3e4
117
+ });
119
118
  let retained = [];
120
119
  if (job.native) {
121
120
  if (job.native.provider === "gradle") {
@@ -199,22 +198,19 @@ function materialize(job, src) {
199
198
  }
200
199
  if (job.native) {
201
200
  const indexed = job.manifest.filter((entry) => entry.kind !== "directory").map((entry) => `${entry.path}\0`);
202
- if (indexed.length) getExecutor().runFile("git", [
203
- "-C",
204
- src,
201
+ if (indexed.length) git(src, [
205
202
  "update-index",
206
203
  "--add",
207
204
  "--info-only",
208
205
  "-z",
209
206
  "--stdin"
210
207
  ], {
208
+ write: true,
211
209
  input: indexed.join(""),
212
210
  timeoutMs: 12e4
213
211
  });
214
212
  }
215
- const untracked = job.native ? [] : getExecutor().runFile("git", [
216
- "-C",
217
- src,
213
+ const untracked = job.native ? [] : git(src, [
218
214
  "ls-files",
219
215
  "-z",
220
216
  "-o",
@@ -1,6 +1,6 @@
1
- import { t as process_identity_exports } from "./process-identity-Biv3arCO.mjs";
2
- import { c as writeWorkspaceState, o as withWorkspaceStateLock, r as readWorkspaceState } from "./workspace-state-CvgTFe-h.mjs";
3
- import { s as pidExists } from "./metro-_ZIE3Axg.mjs";
1
+ import { k as process_identity_exports } from "./config-BYDxlMY3.mjs";
2
+ import { c as writeWorkspaceState, o as withWorkspaceStateLock, r as readWorkspaceState } from "./workspace-state-DJt_MMvf.mjs";
3
+ import { s as pidExists } from "./metro-DnCEjCxs.mjs";
4
4
  import { realpathSync } from "node:fs";
5
5
  //#region src/collector/state.ts
6
6
  function collectorRoot(root) {
@@ -1,4 +1,4 @@
1
- import { t as process_identity_exports } from "./process-identity-Biv3arCO.mjs";
1
+ import { k as process_identity_exports } from "./config-BYDxlMY3.mjs";
2
2
  import { t as connectOwnedBrowser } from "./cdp-Dq_ypAlJ.mjs";
3
3
  //#region src/web/page.ts
4
4
  /** The record of a verified live browser: its supervisor and Chrome are the processes the record names. */
@@ -1,4 +1,4 @@
1
- import { m as buildPlacementSettings } from "./client-zqjFd79D.mjs";
1
+ import { m as buildPlacementSettings } from "./client-qQAaXSUs.mjs";
2
2
  //#region src/placement-log.ts
3
3
  /** `machine` is `local` when the run stays on this Mac. */
4
4
  function placementRecord(input) {
@@ -1,14 +1,14 @@
1
- import { p as getProject, z as deviceSlotPlatforms } from "./config-D0LhTY3S.mjs";
2
- import { B as remoteAndroidSetting, F as parseIosRemote, Q as settingShapeErrors, U as resolveAndroidLayout, W as resolveCacheProviderConfig, Y as settingFile, Z as settingOriginScope, a as SETTING_SHAPE_REMEDY, d as androidLayoutSetting, et as settingsLayers, f as androidLayoutSettingError, nt as unknownSettingKeys, p as cacheProviderSettingError, s as androidAvdConfigSettingError, u as androidDataPartitionSizeGbSettingError } from "./settings-Bbztm4oV.mjs";
3
- import { _ as detectIsExpo } from "./project-DX8fXyw_.mjs";
4
- import { B as ownedAvdSystemImage, F as ownedAvdDeviceProfile, K as profileNeedsFoldFeature, Q as systemImageSupportsFold, W as pickDefaultSystemImage, dt as parkedMaxSetting, j as listInstalledSystemImages, k as listAvdDeviceProfiles, t as DEFAULT_AVD_DEVICE_PROFILE } from "./android-DE8-JfGW.mjs";
1
+ import { V as deviceSlotPlatforms, p as getProject } from "./config-BYDxlMY3.mjs";
2
+ import { B as remoteAndroidSetting, F as parseIosRemote, Q as settingShapeErrors, U as resolveAndroidLayout, W as resolveCacheProviderConfig, Y as settingFile, Z as settingOriginScope, a as SETTING_SHAPE_REMEDY, d as androidLayoutSetting, et as settingsLayers, f as androidLayoutSettingError, nt as unknownSettingKeys, p as cacheProviderSettingError, s as androidAvdConfigSettingError, u as androidDataPartitionSizeGbSettingError } from "./settings-B717odTD.mjs";
3
+ import { _ as detectIsExpo } from "./project-_phNIJfs.mjs";
4
+ import { B as ownedAvdSystemImage, F as ownedAvdDeviceProfile, K as profileNeedsFoldFeature, Q as systemImageSupportsFold, W as pickDefaultSystemImage, dt as parkedMaxSetting, j as listInstalledSystemImages, k as listAvdDeviceProfiles, t as DEFAULT_AVD_DEVICE_PROFILE } from "./android-Mz_Inn3w.mjs";
5
5
  import { d as optimizationBuildProfile, l as artifactCachePolicy, p as resolveOptimizations, u as compilerCacheFallbackMessage } from "./errors-DzkMYh8Q.mjs";
6
- import { r as isPhysicalDeviceRequest } from "./native-runtime-D024BAvm.mjs";
7
- import { t as DEFAULT_DEVICE_SLOT_WAIT_MS } from "./device-capacity-DrwHwR97.mjs";
8
- import { C as remoteAvdFlagRefusal, D as systemImageRefusal, E as resolveVariant, T as resolveSystemImage, m as deviceProfileRefusal, v as foldableImageRefusal, w as resolveDeviceProfile, y as isReleaseVariant } from "./support-Ca6PZbpr.mjs";
9
- import { c as readProductFlavors, s as productFlavorRefusal } from "./react-native-build-JUF31S8U.mjs";
10
- import { n as resolveAndroidCas, r as resolveAndroidCompilerCache } from "./android-cas-BFpS84v2.mjs";
11
- import { l as parseDeviceWait } from "./device-lease-run-Baelt3nc.mjs";
6
+ import { r as isPhysicalDeviceRequest } from "./native-runtime-k8dTIrbK.mjs";
7
+ import { t as DEFAULT_DEVICE_SLOT_WAIT_MS } from "./device-capacity-CBUAcRyQ.mjs";
8
+ import { C as remoteAvdFlagRefusal, D as systemImageRefusal, E as resolveVariant, T as resolveSystemImage, m as deviceProfileRefusal, v as foldableImageRefusal, w as resolveDeviceProfile, y as isReleaseVariant } from "./support-DMTqj3Hm.mjs";
9
+ import { c as readProductFlavors, s as productFlavorRefusal } from "./react-native-build-CtCccJtb.mjs";
10
+ import { n as resolveAndroidCas, r as resolveAndroidCompilerCache } from "./android-cas-Bl-cLJBk.mjs";
11
+ import { l as parseDeviceWait } from "./device-lease-run-Cw2M4z51.mjs";
12
12
  //#region src/integrations/android-project.ts
13
13
  var AndroidRecipeRefusal = class extends Error {
14
14
  failure;
@@ -1,6 +1,6 @@
1
- import { S as hostingMachines } from "./client-zqjFd79D.mjs";
2
- import { r as readHostedNative } from "./ios-state-BsXMwo5y.mjs";
3
- import { l as probeHost, s as automaticDevicePlacement } from "./build-plan-CRjAA6Qi.mjs";
1
+ import { S as hostingMachines } from "./client-qQAaXSUs.mjs";
2
+ import { r as readHostedNative } from "./ios-state-CBLe1xYw.mjs";
3
+ import { l as probeHost, s as automaticDevicePlacement } from "./build-plan-B7SZsc2N.mjs";
4
4
  import { automaticMachineEnabled } from "@stim-cli/core/state";
5
5
  //#region src/device-host/plan-placement.ts
6
6
  /**
@@ -1,6 +1,6 @@
1
- import { p as getProject } from "./config-D0LhTY3S.mjs";
2
- import { n as findCommandWorkspace } from "./project-DX8fXyw_.mjs";
3
- import { n as getNamedPort, t as clearNamedPorts } from "./named-ports-O1TIl7tx.mjs";
1
+ import { p as getProject } from "./config-BYDxlMY3.mjs";
2
+ import { n as findCommandWorkspace } from "./project-_phNIJfs.mjs";
3
+ import { n as getNamedPort, t as clearNamedPorts } from "./named-ports-4WopRPg-.mjs";
4
4
  //#region src/commands/ports.ts
5
5
  async function inProject(action) {
6
6
  try {
@@ -1,9 +1,10 @@
1
- import { t as getExecutor } from "./exec-B81Qodjn.mjs";
2
- import { a as updateWorkspaceState, r as readWorkspaceState } from "./workspace-state-CvgTFe-h.mjs";
1
+ import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
2
+ import { t as git } from "./git-DDfFzkMm.mjs";
3
+ import { a as updateWorkspaceState, r as readWorkspaceState } from "./workspace-state-DJt_MMvf.mjs";
3
4
  import { n as stripAnsi, r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
4
- import { _ as detectIsExpo } from "./project-DX8fXyw_.mjs";
5
- import { a as spawnDeclared } from "./spawn-claims-Kqiifsk2.mjs";
6
- import { i as expoBinRefusal, r as expoBinPath } from "./server-expo-CUuzP9Mp.mjs";
5
+ import { _ as detectIsExpo } from "./project-_phNIJfs.mjs";
6
+ import { a as spawnDeclared } from "./spawn-claims-DVS5RkMS.mjs";
7
+ import { i as expoBinRefusal, r as expoBinPath } from "./server-expo-DsguMGUF.mjs";
7
8
  import { existsSync } from "node:fs";
8
9
  import { join } from "node:path";
9
10
  //#region src/engine/prebuild.ts
@@ -35,9 +36,7 @@ function prebuildRecord(state) {
35
36
  }
36
37
  function gitTracksNativeDir(root, platform) {
37
38
  try {
38
- return getExecutor().runFile("git", [
39
- "-C",
40
- root,
39
+ return git(root, [
41
40
  "ls-files",
42
41
  "--",
43
42
  nativeDirName(platform)