stim 1.20.2 → 1.21.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 (217) hide show
  1. package/README.md +88 -8
  2. package/dist/acquire-artifact-CD4lbiWE.mjs +153 -0
  3. package/dist/act-DHAw2A2S.mjs +2667 -0
  4. package/dist/activity-BzVfHSrY.mjs +1376 -0
  5. package/dist/{agent-device-usage-output-Dzgv6lgR.mjs → agent-device-usage-output-zh1vhbLp.mjs} +21 -65
  6. package/dist/{android-HqP1_vB_.mjs → android-BEJ8Jpl7.mjs} +2 -2
  7. package/dist/{android-DCKZrNvV.mjs → android-BLgbNqox.mjs} +128 -78
  8. package/dist/{android-Dlzxshgp.mjs → android-CV_GCELZ.mjs} +5 -5
  9. package/dist/{android-Mz_Inn3w.mjs → android-DUYkNF4u.mjs} +184 -102
  10. package/dist/{android-cas-Bl-cLJBk.mjs → android-cas-Ct5b1xCK.mjs} +7 -6
  11. package/dist/android-cas-compiler.mjs +2 -2
  12. package/dist/android-project-BCAAmMwz.mjs +12 -0
  13. package/dist/api.d.mts +740 -8
  14. package/dist/api.mjs +585 -1
  15. package/dist/{artifact-HSwkIWEQ.mjs → artifact-B8T3S5gi.mjs} +223 -201
  16. package/dist/{artifact-D3czlUvT.mjs → artifact-DAuZ-FNU.mjs} +158 -148
  17. package/dist/{browser-web-CA-F1GQo.mjs → browser-web-QQzVjz3O.mjs} +26 -24
  18. package/dist/budget-Bs6SxxzO.mjs +9154 -0
  19. package/dist/{build-DYDbfkk5.mjs → build-CoPzQRNw.mjs} +144 -96
  20. package/dist/build-cache-DmyR9Zzc.mjs +602 -0
  21. package/dist/build-plan-CaFskB7_.mjs +188 -0
  22. package/dist/{cache-manifest-XH-fvDUj.mjs → cache-manifest-DkkqguoK.mjs} +2 -2
  23. package/dist/cache-manifest.mjs +1 -1
  24. package/dist/{ccache-zdKiYQ3E.mjs → ccache-BJRZ9pG3.mjs} +10 -9
  25. package/dist/{cdp-Dq_ypAlJ.mjs → cdp-CWmIUMbw.mjs} +18 -5
  26. package/dist/{chrome-BnzZMqsR.mjs → chrome-B6tfCta1.mjs} +7 -4
  27. package/dist/{cli-CLP3diBm.mjs → cli-0DYf8QhQ.mjs} +20 -20
  28. package/dist/cli.mjs +1 -1
  29. package/dist/client-B7QVOlCr.d.mts +253 -0
  30. package/dist/client-UXD70ZbM.mjs +1406 -0
  31. package/dist/collector-run.d.mts +4 -40
  32. package/dist/collector-run.mjs +9 -8
  33. package/dist/{command-output-BTy8hZ0F.mjs → command-output-B1UrjZHL.mjs} +1 -1
  34. package/dist/config-CYcBF478.mjs +949 -0
  35. package/dist/{created-devices-Dzd5C2LF.mjs → created-devices-CqeBlrEn.mjs} +3 -3
  36. package/dist/{dependency-state-DG0p31-y.mjs → dependency-state-BbKQW83h.mjs} +20 -5
  37. package/dist/{detached-entry-B9C_zeQC.mjs → detached-entry-DFRyG1_o.mjs} +1 -1
  38. package/dist/{dev-client-DAWVIGBu.mjs → dev-client-UOeESKm6.mjs} +2 -2
  39. package/dist/device-DCxH7_By.mjs +1068 -0
  40. package/dist/{device-BECOiufl.mjs → device-ExJq8Ei7.mjs} +35 -35
  41. package/dist/{device-capacity-CBUAcRyQ.mjs → device-capacity-CMlqEcvw.mjs} +43 -13
  42. package/dist/device-host-worker.mjs +65 -61
  43. package/dist/{device-ios-COSi6oS1.mjs → device-ios-DRUeKaFV.mjs} +48 -45
  44. package/dist/{device-lease-run-Cw2M4z51.mjs → device-lease-run-C8raGFoP.mjs} +14 -26
  45. package/dist/{device-pool-Bf-pOhSw.mjs → device-pool-DMRpVX9a.mjs} +5 -5
  46. package/dist/doctor-BLHCYxzi.mjs +2 -0
  47. package/dist/{doctor-kfMBnUw6.mjs → doctor-DTvaDOda.mjs} +281 -317
  48. package/dist/{doctor-CB8oZKCk.mjs → doctor-Dhqebm0q.mjs} +183 -91
  49. package/dist/doctor-fingerprint.mjs +19 -0
  50. package/dist/{doctor-watchman-BRyV2adA.mjs → doctor-watchman-Cv1F10Kj.mjs} +40 -21
  51. package/dist/{eas-build-JyfqyHfC.mjs → eas-build-BomfRnFT.mjs} +53 -20
  52. package/dist/{build-plan-B7SZsc2N.mjs → eas-fallback-DJwZpy0c.mjs} +26 -208
  53. package/dist/{watchman-CPQFZLXY.mjs → eas-session-ledger-op6A54yi.mjs} +229 -11
  54. package/dist/{error-diagnostics-BR677IDM.mjs → error-diagnostics-Bf0rZvG9.mjs} +172 -82
  55. package/dist/exec-H20xSg2T.d.mts +65 -0
  56. package/dist/exec-_UbtCQcG.mjs +750 -0
  57. package/dist/gc-C-WwL0yi.mjs +3 -0
  58. package/dist/{gc-qWOMdnER.mjs → gc-_-dCXdyL.mjs} +584 -796
  59. package/dist/git-C3iTsJaZ.mjs +73 -0
  60. package/dist/{guide-G9cAbVAc.mjs → guide-Yqwt2bd6.mjs} +941 -269
  61. package/dist/{hosted-android-C3MHGld1.mjs → hosted-android-Bw-honsd.mjs} +8 -6
  62. package/dist/{hosted-client-ZEKpS9vw.mjs → hosted-client-DB_gBPfY.mjs} +34 -19
  63. package/dist/{hosted-ios-l-o3iM9J.mjs → hosted-ios-CUvOf4Vr.mjs} +1 -1
  64. package/dist/{hosted-logs-EzQM7-3Z.mjs → hosted-logs-DL_P5AdN.mjs} +77 -43
  65. package/dist/{hosted-macos-BACVAVqE.mjs → hosted-macos-QI141yKk.mjs} +21 -17
  66. package/dist/{hosted-native-A4s1QPXe.mjs → hosted-native-Ksyjgzq-.mjs} +30 -21
  67. package/dist/idle-BVeRGroT.d.mts +24 -0
  68. package/dist/{idle-shutdown-DtxhPTKe.mjs → idle-shutdown-DaKmZi0z.mjs} +11 -10
  69. package/dist/{ios-BwVCF7oA.mjs → ios-CQ68hG9s.mjs} +8 -8
  70. package/dist/{ios-RkW4pnQf.mjs → ios-CpByZy12.mjs} +140 -80
  71. package/dist/{ios-device-B5veSDDQ.mjs → ios-device-CXGP1bsD.mjs} +1 -1
  72. package/dist/{ios-device-D7pi2Sca.mjs → ios-device-CwFMehUS.mjs} +51 -26
  73. package/dist/{ios-project-K9hY_Jab.mjs → ios-project-WuwwBdvW.mjs} +13 -13
  74. package/dist/{ios-nOLJGVdy.mjs → ios-qNJt4dFm.mjs} +1 -1
  75. package/dist/ios-signing-DTTIChGs.mjs +489 -0
  76. package/dist/{ios-state-CBLe1xYw.mjs → ios-state-DvFX-K_l.mjs} +1 -1
  77. package/dist/{ios-Ce7bc7br.mjs → ios-ubFsBzwq.mjs} +129 -86
  78. package/dist/{js-swap-Bb3nsS07.mjs → js-swap-Cc1dttps.mjs} +53 -26
  79. package/dist/{launch-F4sOqAhB.mjs → launch-CD1yVc7U.mjs} +91 -90
  80. package/dist/{launch-C3qJ6Agb.mjs → launch-Zq2mOSDy.mjs} +82 -541
  81. package/dist/logs-BS00Anxf.mjs +352 -0
  82. package/dist/logs-CMm05HxN.mjs +255 -0
  83. package/dist/{macos-D7uDvO-z.mjs → macos-B65--pPd.mjs} +1 -1
  84. package/dist/{macos-Ch5VJmcS.mjs → macos-C-0qJ6zq.mjs} +225 -212
  85. package/dist/macos-run.mjs +1 -1
  86. package/dist/maintenance-run.mjs +122 -247
  87. package/dist/{metro-DnCEjCxs.mjs → metro-DEXpIhHC.mjs} +67 -12
  88. package/dist/{metro-gateway-CX9Xlkq2.mjs → metro-gateway-BMJNlj3E.mjs} +20 -12
  89. package/dist/{named-ports-4WopRPg-.mjs → named-ports-BWTzt6mu.mjs} +8 -63
  90. package/dist/native-android-JACyjTZs.mjs +844 -0
  91. package/dist/{native-gradle-inputs-BsLRrl7u.mjs → native-gradle-inputs-Bep9JcSF.mjs} +128 -140
  92. package/dist/native-inputs-TRTTTRxt.mjs +91 -0
  93. package/dist/native-run-DY_RLx3C.mjs +277 -0
  94. package/dist/{native-runtime-k8dTIrbK.mjs → native-runtime-Dg1Q7tfF.mjs} +9 -8
  95. package/dist/{native-xcode-inputs-CykopJdM.mjs → native-xcode-inputs-CB2iQeWq.mjs} +27 -18
  96. package/dist/{native-xcode-ios-Bbf30Gm0.mjs → native-xcode-ios-CXX39F7o.mjs} +96 -47
  97. package/dist/{ndjson-GOnbyvso.mjs → ndjson-CgE_o3Dl.mjs} +3 -3
  98. package/dist/offload-worker.d.mts +1 -46
  99. package/dist/offload-worker.mjs +197 -66
  100. package/dist/{ownership-DCtw_2IA.mjs → ownership-DEmM5vhh.mjs} +3 -3
  101. package/dist/{page-DRHy329N.mjs → page-CPaHeYqj.mjs} +7 -4
  102. package/dist/paths-BsJMoPP2.mjs +12 -0
  103. package/dist/paths-DQtTgsBf.mjs +42 -0
  104. package/dist/{placement-log-MOfPVgaM.mjs → placement-log-BqGbTa61.mjs} +5 -5
  105. package/dist/{plan-placement-V0TdzYXp.mjs → plan-placement-Bwj-IjY1.mjs} +6 -6
  106. package/dist/{ports-DdSUicVo.mjs → ports-D-MmCTdv.mjs} +3 -3
  107. package/dist/prebuild-uD_ipCxF.mjs +449 -0
  108. package/dist/{project-_phNIJfs.mjs → project-BZNjmW_8.mjs} +65 -37
  109. package/dist/{pull-request-CQ8sPbZa.mjs → pull-request-Lfetn8Kr.mjs} +2 -2
  110. package/dist/pull-request-zjCSAryH.d.mts +120 -0
  111. package/dist/pull-requests.d.mts +1 -119
  112. package/dist/pull-requests.mjs +1 -1
  113. package/dist/{react-native-android-CM1XRDwv.mjs → react-native-android-DuzH0cn3.mjs} +74 -48
  114. package/dist/{gradle-DSrXb6lG.mjs → react-native-build-rhk4smwQ.mjs} +292 -15
  115. package/dist/react-native-doctor-CQpuIMso.mjs +234 -0
  116. package/dist/{react-native-ios-Dhq_eiYQ.mjs → react-native-ios-Bhq1rJeV.mjs} +46 -28
  117. package/dist/{recordings-D0d5aQt0.mjs → recordings-DYteQSu4.mjs} +12 -9
  118. package/dist/{reload-C8JhxjSh.mjs → reload-CmTRFJaX.mjs} +93 -47
  119. package/dist/reload-DzjSl5P_.mjs +2 -0
  120. package/dist/{remote-BiR6aYjy.mjs → remote-ByYkXdGD.mjs} +15 -10
  121. package/dist/result-DNiS-tTP.mjs +434 -0
  122. package/dist/{run-BtPgpKks.mjs → run-D23HmJMs.mjs} +4 -5
  123. package/dist/selection-CSl9i5qU.mjs +619 -0
  124. package/dist/{server-bare-R2m_gsH8.mjs → server-bare-CxTrvDg8.mjs} +3 -4
  125. package/dist/{server-command-CTtCkmcQ.mjs → server-command-CtzloH3v.mjs} +14 -7
  126. package/dist/server-expo-C-90EhcG.mjs +2 -0
  127. package/dist/{server-expo-DsguMGUF.mjs → server-expo-DT_F_uVI.mjs} +50 -9
  128. package/dist/{settings-B717odTD.mjs → settings-CsJDEXgK.mjs} +234 -24
  129. package/dist/{settings-vk3mJGSm.d.mts → settings-DkdmlelE.d.mts} +6 -4
  130. package/dist/settings-T1gtc3bf.mjs +114 -0
  131. package/dist/settings-write-HyVZ8eQ8.mjs +359 -0
  132. package/dist/settings.schema.json +163 -16
  133. package/dist/{simslim-CCr3rE-A.mjs → simslim-Cgk17SXV.mjs} +14 -12
  134. package/dist/{slot-launch-DPt0m9Nd.mjs → slot-launch-DF8VfT64.mjs} +15 -20
  135. package/dist/{spawn-entry-Dcb7sDUz.mjs → spawn-entry-jw19m8Nl.mjs} +0 -1
  136. package/dist/stage-BIS0ydsV.mjs +183 -0
  137. package/dist/{start-BWqzODpb.mjs → start-7lpH7hmN.mjs} +63 -44
  138. package/dist/{start-TXeMmmO2.mjs → start-RChynRDp.mjs} +1 -1
  139. package/dist/{state-D1Icyjlu.mjs → state-C4ZtUisW.mjs} +40 -13
  140. package/dist/{state-CG_OFoaA.mjs → state-XMziexv2.mjs} +3 -2
  141. package/dist/{stats-BoY5sEPU.mjs → stats-53T7OTb9.mjs} +7 -13
  142. package/dist/stats-report-BFfMpWWF.mjs +16 -0
  143. package/dist/{status-WgFbkRzj.mjs → status-BL7jVyAB.mjs} +535 -447
  144. package/dist/status-CSi6tlRq.mjs +2 -0
  145. package/dist/{status-BTA7kKiQ.mjs → status-DqEUSSxs.mjs} +6 -4
  146. package/dist/{status-watch-C23ILtf9.mjs → status-watch-GDCfqpTE.mjs} +187 -22
  147. package/dist/status-worker.d.mts +1 -0
  148. package/dist/status-worker.mjs +19 -0
  149. package/dist/stim-desktop-C12we7lz.mjs +112 -0
  150. package/dist/{stop-DR6VoDIk.mjs → stop-Bk_1qiV6.mjs} +2 -2
  151. package/dist/{stop-BNmBMi1F.mjs → stop-CPzlM1L-.mjs} +138 -98
  152. package/dist/{stop-DPEhunlw.mjs → stop-D7h6jAXQ.mjs} +11 -10
  153. package/dist/supervisor-run.d.mts +8 -17
  154. package/dist/supervisor-run.mjs +63 -27
  155. package/dist/{support-DMTqj3Hm.mjs → support-67vraa1Q.mjs} +18 -11
  156. package/dist/{support-CwjbFs9H.mjs → support-Dlu37g6H.mjs} +12 -12
  157. package/dist/{swiftpm-macos-DRNVJWlb.mjs → swiftpm-macos-p8WZbxKU.mjs} +35 -24
  158. package/dist/toolchain-DhKwp9iI.mjs +2 -0
  159. package/dist/toolchain-Hp9sCpK4.mjs +873 -0
  160. package/dist/{trigger-CigAYjeL.mjs → trigger-BAahxUPq.mjs} +20 -5
  161. package/dist/trigger-Bf3uDcpv.mjs +2 -0
  162. package/dist/{warm-progress-BuY-Fvfn.mjs → warm-progress-BHX5r0Ei.mjs} +250 -156
  163. package/dist/{web-BDBMxDpx.mjs → web-CJmIj6AI.mjs} +18 -13
  164. package/dist/web-DknQETPs.mjs +2 -0
  165. package/dist/web-run.mjs +11 -12
  166. package/dist/windows-report.d.mts +1 -0
  167. package/dist/windows-report.mjs +18 -0
  168. package/dist/windows-report.ps1 +43 -0
  169. package/dist/workspace-process-lock-1_1OoVW5.mjs +57 -0
  170. package/dist/{workspace-state-DJt_MMvf.mjs → workspace-state-Cjuigeeu.mjs} +62 -58
  171. package/dist/{workspaces-C36s2jb9.mjs → workspaces-BccMFmGQ.mjs} +1188 -1079
  172. package/dist/worktree-CK2MpJW5.mjs +2 -0
  173. package/dist/{worktree-CgvJYJ-Q.mjs → worktree-DQ6Zi2Mv.mjs} +304 -53
  174. package/dist/xcode-Zlx3qjEs.mjs +896 -0
  175. package/package.json +7 -5
  176. package/shim/android-optimizations.gradle +7 -5
  177. package/dist/activity-BSV745Kz.mjs +0 -629
  178. package/dist/api-qvOzWyfO.mjs +0 -154
  179. package/dist/api-run.mjs +0 -294
  180. package/dist/app-install-BIKtMfPq.mjs +0 -896
  181. package/dist/artifact-lifecycle-DzPpBYvK.mjs +0 -30
  182. package/dist/budget-f7516Zk0.mjs +0 -4106
  183. package/dist/build-facts-DcLv2HSd.d.mts +0 -111
  184. package/dist/cancellation-C_22VQTH.mjs +0 -24
  185. package/dist/client-qQAaXSUs.mjs +0 -1771
  186. package/dist/config-BYDxlMY3.mjs +0 -562
  187. package/dist/device-DuiPJQSn.mjs +0 -290
  188. package/dist/device-lease-BX1sJQ2E.mjs +0 -1224
  189. package/dist/device-remote-xRT0Vmo9.mjs +0 -1272
  190. package/dist/eas-session-ledger-Cm0Gwq2F.mjs +0 -207
  191. package/dist/exec-DqKo9GKJ.mjs +0 -268
  192. package/dist/git-DDfFzkMm.mjs +0 -45
  193. package/dist/launch-verify-B6Q8hZP-.mjs +0 -428
  194. package/dist/logs-BGrEUaEs.mjs +0 -383
  195. package/dist/miss-reason-mKzZ4VvN.mjs +0 -238
  196. package/dist/native-android-D5qc3-_v.mjs +0 -226
  197. package/dist/ndjson-Du3j0AQ9.d.mts +0 -17
  198. package/dist/plan-C4TjdPsR.mjs +0 -260
  199. package/dist/prebuild-DYbucPXy.mjs +0 -212
  200. package/dist/preview-78a9kR_-.mjs +0 -1011
  201. package/dist/react-native-build-CtCccJtb.mjs +0 -239
  202. package/dist/react-native-doctor-CfRnFfjs.mjs +0 -78
  203. package/dist/remote-cache-OyOyVIS3.mjs +0 -526
  204. package/dist/result-CaJg5Iat.mjs +0 -186
  205. package/dist/server-expo-Bigriskl.mjs +0 -2
  206. package/dist/settings-BORNaaCO.mjs +0 -402
  207. package/dist/spawn-claims-DVS5RkMS.mjs +0 -72
  208. package/dist/stage-KNTQopqv.mjs +0 -157
  209. package/dist/stim-desktop-BzBN2Em2.mjs +0 -63
  210. package/dist/tailnet-Dh-qiYzG.mjs +0 -265
  211. package/dist/toolchain-BFkAcstd.mjs +0 -2
  212. package/dist/toolchain-DxSsNssu.mjs +0 -1657
  213. package/dist/trigger-9_USgmxz.mjs +0 -2
  214. package/dist/web-Dq-i3wzJ.mjs +0 -2
  215. package/dist/worktree-DpLdCHga.mjs +0 -2
  216. package/dist/{api-run.d.mts → doctor-fingerprint.d.mts} +0 -0
  217. package/dist/{errors-DzkMYh8Q.mjs → errors-ccaPc4ox.mjs} +2 -2
@@ -1,217 +1,226 @@
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
- import { t as spawnEntry } from "./spawn-entry-Dcb7sDUz.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";
13
- import { r as createNdjsonWriter } from "./ndjson-GOnbyvso.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";
22
- import { closeSync, existsSync, mkdirSync, mkdtempSync, openSync, realpathSync, renameSync, rmSync } from "node:fs";
1
+ import { d as withDrainingCancellation, p as process_identity_exports, s as spawnDeclared, t as getExecutor } from "./exec-_UbtCQcG.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-CYcBF478.mjs";
4
+ import { l as phaseLine } from "./command-output-B1UrjZHL.mjs";
5
+ import { d as writeWorkspaceState, i as recordWorkspaceUse } from "./workspace-state-Cjuigeeu.mjs";
6
+ import { J as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, en as throwIfCancelled, et as settingShapeErrors } from "./settings-CsJDEXgK.mjs";
7
+ import { f as projectRegistry, i as findProjectRoot$1, s as ownedDeviceLabel } from "./project-BZNjmW_8.mjs";
8
+ import { i as macosProcess, n as macosDir, o as requiredMacosRecord, r as macosLogFile } from "./state-XMziexv2.mjs";
9
+ import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
10
+ 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-Bs6SxxzO.mjs";
11
+ import { d as runCancellationSignal, f as withNativeBuildRun } from "./native-run-DY_RLx3C.mjs";
12
+ import { F as acquireBuildSlot, L as releaseBuildSlot } from "./workspaces-BccMFmGQ.mjs";
13
+ import { D as sanitizeDeviceLabel } from "./ios-CpByZy12.mjs";
14
+ import { t as withWorkspaceProcessLock } from "./workspace-process-lock-1_1OoVW5.mjs";
15
+ import { c as offloadPlacement, f as setRemoteLogSink, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText } from "./client-UXD70ZbM.mjs";
16
+ import { a as requireLocalBuild, i as parseBuildMachineOption, r as namedBuildMachine, s as resolveBuildPlacement, t as OffloadRefusal } from "./selection-CSl9i5qU.mjs";
17
+ import { l as connectHost } from "./hosted-client-DB_gBPfY.mjs";
18
+ import { t as placeHostedMacos } from "./hosted-macos-QI141yKk.mjs";
19
+ import { r as stopMacosAppHeld, t as stopBundleInstances } from "./stop-D7h6jAXQ.mjs";
20
+ import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
21
+ import { t as buildPlacementRecord } from "./placement-log-BqGbTa61.mjs";
22
+ import { i as validateInfoPlist, t as resolveBundleExtras } from "./stage-BIS0ydsV.mjs";
23
+ import { createHash, randomUUID } from "node:crypto";
24
+ import { closeSync, existsSync, openSync, promises, realpathSync, renameSync } from "node:fs";
23
25
  import { join } from "node:path";
26
+ import { LOG_ROTATE_BYTES, ambientEnv } from "@stim-cli/core";
24
27
  import { machineCapacity, readMacosRecord, validHostedAppArguments } from "@stim-cli/core/state";
25
- import { LOG_ROTATE_BYTES } from "@stim-cli/core";
26
- import { createHash, randomUUID } from "node:crypto";
27
28
  //#region src/macos/build.ts
28
- async function buildMacosBundle({ root, recipe, bundle, bundleId, displayName, scratch, writer, note, record, buildMachine, progress = NO_BUILD_PROGRESS }) {
29
- if (record) record.buildMachine = buildMachine;
30
- setRemoteLogSink((entry) => writer.write({
31
- ...entry,
32
- platform: "macos"
33
- }));
34
- const write = (msg) => {
35
- writer.write({
36
- src: "build",
37
- platform: "macos",
38
- level: "info",
39
- msg
40
- });
41
- note(msg);
42
- };
43
- let offloadFallback = null;
44
- let asked = [];
45
- let failedMachine;
46
- const fallBack = (reason) => {
47
- writer.write(buildPlacementRecord({
48
- platform: "macos",
49
- buildMachine,
50
- candidates: asked,
51
- event: "placement_fallback",
52
- fallback: {
53
- code: failedMachine ? "offload-failed" : "no-remote-mac-took-it",
54
- reason,
55
- machine: failedMachine
56
- }
29
+ async function buildMacosBundle({ context, root, recipe, bundle, bundleId, displayName, scratch, writer, note, record, buildMachine, progress = NO_BUILD_PROGRESS }) {
30
+ const signal = runCancellationSignal(context) ?? context.signal;
31
+ return withDrainingCancellation(context, signal, async () => {
32
+ throwIfCancelled(signal, "macOS build");
33
+ if (record) record.buildMachine = buildMachine;
34
+ setRemoteLogSink(context, (entry) => writer.write({
35
+ ...entry,
36
+ platform: "macos"
57
37
  }));
58
- if (namedBuildMachine(buildMachine)) throw new OffloadRefusal(buildMachine, reason);
59
- requireLocalBuild(buildMachine);
60
- offloadFallback = reason;
61
- if (record) record.offloadFallback = reason;
62
- writer.write({
63
- src: "build",
64
- platform: "macos",
65
- level: "warn",
66
- event: "offload_failed",
67
- msg: reason
68
- });
69
- write(`${reason} -> building here`);
70
- write(`placement: here (${reason})`);
71
- };
72
- mkdirSync(macosDir(root), { recursive: true });
73
- const staging = mkdtempSync(join(macosDir(root), "staging-"));
74
- const promote = (path) => {
75
- const backup = join(staging, "previous.app");
76
- const previous = existsSync(bundle);
77
- if (previous) renameSync(bundle, backup);
78
- try {
79
- renameSync(path, bundle);
80
- } catch (error) {
81
- if (previous) renameSync(backup, bundle);
82
- throw error;
83
- }
84
- };
85
- let choice = null;
86
- try {
87
- try {
88
- const { mode, machines, localEnabled } = buildPlacementCandidates(buildMachine);
89
- const here = machineCapacity();
90
- const placement = offloadPlacement({
91
- mode,
92
- localEnabled,
93
- machines: machines.length,
94
- here,
95
- unsupported: null,
96
- selected: buildMachine
38
+ const write = (msg) => {
39
+ writer.write({
40
+ src: "build",
41
+ platform: "macos",
42
+ level: "info",
43
+ msg
44
+ });
45
+ note(msg);
46
+ };
47
+ let offloadFallback = null;
48
+ let asked = [];
49
+ let failedMachine;
50
+ const fallBack = (reason) => {
51
+ writer.write(buildPlacementRecord({
52
+ platform: "macos",
53
+ buildMachine,
54
+ candidates: asked,
55
+ event: "placement_fallback",
56
+ fallback: {
57
+ code: failedMachine ? "offload-failed" : "no-remote-mac-took-it",
58
+ reason,
59
+ machine: failedMachine
60
+ }
61
+ }));
62
+ if (namedBuildMachine(buildMachine)) throw new OffloadRefusal(buildMachine, reason);
63
+ requireLocalBuild(buildMachine);
64
+ offloadFallback = reason;
65
+ if (record) record.offloadFallback = reason;
66
+ writer.write({
67
+ src: "build",
68
+ platform: "macos",
69
+ level: "warn",
70
+ event: "offload_failed",
71
+ msg: reason
97
72
  });
98
- if (placement.offload) {
99
- const chosen = await chooseBuildMachine({
100
- projectRoot: root,
101
- target: recipe.offload.target(),
73
+ write(`${reason} -> building here`);
74
+ write(`placement: here (${reason})`);
75
+ };
76
+ await promises.mkdir(macosDir(root), { recursive: true });
77
+ const staging = await promises.mkdtemp(join(macosDir(root), "staging-"));
78
+ const promote = (path) => {
79
+ const backup = join(staging, "previous.app");
80
+ const previous = existsSync(bundle);
81
+ if (previous) renameSync(bundle, backup);
82
+ try {
83
+ renameSync(path, bundle);
84
+ } catch (error) {
85
+ if (previous) renameSync(backup, bundle);
86
+ throw error;
87
+ }
88
+ };
89
+ let choice = null;
90
+ try {
91
+ try {
92
+ const { mode, machines, localEnabled } = buildPlacementCandidates(buildMachine);
93
+ const here = machineCapacity();
94
+ const placement = offloadPlacement({
102
95
  mode,
96
+ localEnabled,
97
+ machines: machines.length,
103
98
  here,
104
- machines,
105
- selected: buildMachine,
106
- note: (line) => write(`offload: ${line}`),
107
- onCandidates: (each) => asked = each
99
+ unsupported: null,
100
+ selected: buildMachine
108
101
  });
109
- if (typeof chosen === "string") throw new Error(chosen);
110
- choice = chosen;
111
- failedMachine = chosen.machine;
102
+ if (placement.offload) {
103
+ const chosen = await chooseBuildMachine({
104
+ projectRoot: root,
105
+ target: await recipe.offload.target(),
106
+ mode,
107
+ here,
108
+ machines,
109
+ selected: buildMachine,
110
+ note: (line) => write(`offload: ${line}`),
111
+ onCandidates: (each) => asked = each
112
+ });
113
+ if (typeof chosen === "string") throw new Error(chosen);
114
+ choice = chosen;
115
+ failedMachine = chosen.machine;
116
+ writer.write(buildPlacementRecord({
117
+ platform: "macos",
118
+ buildMachine,
119
+ candidates: asked,
120
+ chose: {
121
+ machine: chosen.machine,
122
+ reason: `${placement.reason}${placementLoad(chosen)}`
123
+ }
124
+ }));
125
+ write(`placement: ${choice.machine} (${placement.reason}${placementLoad(choice)})`);
126
+ const outcome = await offloadBuild({
127
+ choice,
128
+ request: recipe.offload.request(bundleId),
129
+ stagingDir: join(staging, "offload"),
130
+ onPhase: (phase, line) => note(remotePhaseText(phase, line, choice.machine)),
131
+ onEnter: (phase) => {
132
+ if (record && [
133
+ "compile",
134
+ "build",
135
+ "prebuild",
136
+ "pods"
137
+ ].includes(phase)) record.builtOn = choice.machine;
138
+ progress.place({
139
+ host: choice.machine,
140
+ phase
141
+ });
142
+ progress.step(phase === "fetch" ? "install" : "compile");
143
+ },
144
+ onRecord: (entry) => writer.write({
145
+ ...entry,
146
+ offloadedTo: choice.machine
147
+ }),
148
+ note: write
149
+ });
150
+ progress.place(null);
151
+ if (!outcome.ok) throw new Error(`${outcome.machine}: ${outcome.reason}`);
152
+ progress.step("install");
153
+ await recipe.validateFetched(outcome.artifactPath, bundleId, displayName);
154
+ throwIfCancelled(signal, "macOS build");
155
+ promote(outcome.artifactPath);
156
+ if (record) {
157
+ record.offloadedTo = outcome.machine;
158
+ record.builtOn = outcome.machine;
159
+ }
160
+ return {
161
+ bundleId,
162
+ offloadedTo: outcome.machine,
163
+ offloadFallback: null,
164
+ handoff: outcome.handoff ?? null
165
+ };
166
+ }
112
167
  writer.write(buildPlacementRecord({
113
168
  platform: "macos",
114
169
  buildMachine,
115
- candidates: asked,
116
- chose: {
117
- machine: chosen.machine,
118
- reason: `${placement.reason}${placementLoad(chosen)}`
170
+ stays: {
171
+ code: placement.code,
172
+ reason: placement.reason
119
173
  }
120
174
  }));
121
- write(`placement: ${choice.machine} (${placement.reason}${placementLoad(choice)})`);
122
- const outcome = await offloadBuild({
123
- choice,
124
- request: recipe.offload.request(bundleId),
125
- stagingDir: join(staging, "offload"),
126
- onPhase: (phase, line) => note(remotePhaseText(phase, line, choice.machine)),
127
- onEnter: (phase) => {
128
- if (record && [
129
- "compile",
130
- "build",
131
- "prebuild",
132
- "pods"
133
- ].includes(phase)) record.builtOn = choice.machine;
134
- progress.place({
135
- host: choice.machine,
136
- phase
137
- });
138
- progress.step(phase === "fetch" ? "install" : "compile");
139
- },
140
- onRecord: (entry) => writer.write({
141
- ...entry,
142
- offloadedTo: choice.machine
143
- }),
144
- note: write
175
+ write(`placement: here (${placement.reason})`);
176
+ } catch (error) {
177
+ throwIfCancelled(signal, "macOS build");
178
+ fallBack(error instanceof Error ? error.message : String(error));
179
+ } finally {
180
+ if (choice) closeOffload(choice);
181
+ }
182
+ let slot;
183
+ try {
184
+ slot = await acquireBuildSlot({
185
+ signal,
186
+ automatic: buildMachine === "auto",
187
+ max: getConcurrencyLimits().maxBuilds,
188
+ root,
189
+ logFile: writer.file,
190
+ out: note,
191
+ waitingFor: (info) => progress.waitingFor(info, "build-slot")
192
+ });
193
+ requireLocalBuild(buildMachine);
194
+ if (record) record.builtOn = "here";
195
+ progress.step("compile");
196
+ const bin = await recipe.compile({
197
+ scratch,
198
+ writer,
199
+ note
145
200
  });
146
- progress.place(null);
147
- if (!outcome.ok) throw new Error(`${outcome.machine}: ${outcome.reason}`);
148
201
  progress.step("install");
149
- recipe.validateFetched(outcome.artifactPath, bundleId, displayName);
150
- promote(outcome.artifactPath);
151
- if (record) {
152
- record.offloadedTo = outcome.machine;
153
- record.builtOn = outcome.machine;
154
- }
202
+ const staged = join(staging, `${recipe.product}.app`);
203
+ await recipe.stage(bin, staged, bundleId, displayName);
204
+ throwIfCancelled(signal, "macOS build");
205
+ promote(staged);
155
206
  return {
156
207
  bundleId,
157
- offloadedTo: outcome.machine,
158
- offloadFallback: null,
159
- handoff: outcome.handoff ?? null
208
+ offloadedTo: null,
209
+ offloadFallback,
210
+ handoff: null
160
211
  };
212
+ } finally {
213
+ releaseBuildSlot(slot);
161
214
  }
162
- writer.write(buildPlacementRecord({
163
- platform: "macos",
164
- buildMachine,
165
- stays: {
166
- code: placement.code,
167
- reason: placement.reason
168
- }
169
- }));
170
- write(`placement: here (${placement.reason})`);
171
- } catch (error) {
172
- fallBack(error instanceof Error ? error.message : String(error));
173
- } finally {
174
- if (choice) closeOffload(choice);
175
- }
176
- let slot;
177
- try {
178
- slot = await acquireBuildSlot({
179
- automatic: buildMachine === "auto",
180
- max: getConcurrencyLimits().maxBuilds,
181
- root,
182
- logFile: writer.file,
183
- out: note,
184
- waitingFor: (info) => progress.waitingFor(info, "build-slot")
185
- });
186
- requireLocalBuild(buildMachine);
187
- if (record) record.builtOn = "here";
188
- progress.step("compile");
189
- const bin = await recipe.compile({
190
- scratch,
191
- writer,
192
- note
193
- });
194
- progress.step("install");
195
- const staged = join(staging, `${recipe.product}.app`);
196
- recipe.stage(bin, staged, bundleId, displayName);
197
- promote(staged);
198
- return {
199
- bundleId,
200
- offloadedTo: null,
201
- offloadFallback,
202
- handoff: null
203
- };
204
215
  } finally {
205
- releaseBuildSlot(slot);
216
+ try {
217
+ await promises.rm(staging, {
218
+ recursive: true,
219
+ force: true
220
+ });
221
+ } catch {}
206
222
  }
207
- } finally {
208
- try {
209
- rmSync(staging, {
210
- recursive: true,
211
- force: true
212
- });
213
- } catch {}
214
- }
223
+ });
215
224
  }
216
225
  //#endregion
217
226
  //#region src/macos/app-name.ts
@@ -234,19 +243,19 @@ function workspaceAppName(root, product) {
234
243
  }
235
244
  //#endregion
236
245
  //#region src/macos/plan.ts
237
- function planMacos(root, buildMachineFlag) {
246
+ async function planMacos(context, root, buildMachineFlag) {
238
247
  if (process.platform !== "darwin") throw new Error("stim macos requires a Mac with Swift installed.");
239
248
  root = realpathSync(root);
240
249
  if (!existsSync(join(root, "Package.swift"))) throw new Error("Run stim macos from the directory containing Package.swift.");
241
- const { context, settings } = resolveProjectSettings(root);
250
+ const { context: projectContext, settings } = await resolveProjectSettingsAsync(root);
242
251
  const [shape] = settingShapeErrors(settings);
243
252
  if (shape) throw new Error(`${shape} ${SETTING_SHAPE_REMEDY}`);
244
253
  const selected = resolveBuildPlacement(buildMachineFlag);
245
254
  if (selected.failure) throw Object.assign(new Error(selected.failure.message), selected.failure);
246
255
  const macos = settings.macos;
247
256
  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" });
248
- validateInfoPlist(root, macos.product, macos.infoPlist);
249
- resolveBundleExtras(root, context.repoRoot ?? root, macos.resources, macos.assetCatalog);
257
+ await validateInfoPlist(context, root, macos.product, macos.infoPlist);
258
+ resolveBundleExtras(root, projectContext.repoRoot ?? root, macos.resources, macos.assetCatalog);
250
259
  return {
251
260
  platform: "macos",
252
261
  product: macos.product,
@@ -268,7 +277,7 @@ function planMacos(root, buildMachineFlag) {
268
277
  * Builds the Debug app and launches it here, or with `remote` on that approved remote Mac. A named host never falls
269
278
  * back to a local launch.
270
279
  */
271
- async function runMacos(root, note = console.error, remote, buildMachineFlag) {
280
+ async function runMacos(context, root, note = console.error, remote, buildMachineFlag) {
272
281
  const backend = remote?.trim().toLowerCase();
273
282
  if (backend === "eas" || backend === "proxy") throw Object.assign(/* @__PURE__ */ new Error("stim macos --remote takes a remote Mac name from remote.machines; macOS has no eas or proxy backend."), { code: "STIM_BAD_ARG" });
274
283
  if (backend === "auto") throw Object.assign(/* @__PURE__ */ new Error("stim macos --remote auto is not available yet: automatic placement has not shipped. Name a hosting Mac from remote.machines."), { code: "STIM_BAD_ARG" });
@@ -279,15 +288,18 @@ async function runMacos(root, note = console.error, remote, buildMachineFlag) {
279
288
  code: "STIM_NO_PROJECT",
280
289
  remedy: operation.problem.remedy
281
290
  });
282
- const { settings } = resolveProjectSettings(root);
291
+ const { settings } = await resolveProjectSettingsAsync(root, {
292
+ env: context.env,
293
+ signal: runCancellationSignal(context) ?? context.signal
294
+ });
283
295
  const [shape] = settingShapeErrors(settings);
284
296
  if (shape) throw new Error(`${shape} ${SETTING_SHAPE_REMEDY}`);
285
297
  const selected = resolveBuildPlacement(buildMachineFlag);
286
298
  if (selected.failure) throw Object.assign(new Error(selected.failure.message), selected.failure);
287
299
  const buildMachine = selected.selected;
288
- const macos = (await operation.load()).prepare(settings);
300
+ const macos = await (await operation.load()).prepare(context, settings);
289
301
  ensureWorkspaceStorage(root);
290
- return withNativeBuildRun(root, {
302
+ return withNativeBuildRun(context, root, {
291
303
  command: "macos",
292
304
  platform: "macos"
293
305
  }, async (claim) => {
@@ -305,7 +317,7 @@ async function runMacos(root, note = console.error, remote, buildMachineFlag) {
305
317
  if (remote) (await connectHost(remote)).connection.close();
306
318
  if (!previous?.host) await stopMacosAppHeld(root);
307
319
  upsertProject(root, {});
308
- recordWorkspaceUse(root);
320
+ recordWorkspaceUse(root, /* @__PURE__ */ new Date(), context.env, context.cwd);
309
321
  const bundle = join(macosDir(root), `${macos.product}.app`);
310
322
  const record = {
311
323
  product: macos.product,
@@ -325,7 +337,7 @@ async function runMacos(root, note = console.error, remote, buildMachineFlag) {
325
337
  hostLaunched: previous.hostLaunched ?? false
326
338
  } : {}
327
339
  };
328
- const handoff = await buildBundle(root, macos, record, remote !== void 0, note, progress);
340
+ const handoff = await buildBundle(context, root, macos, record, remote !== void 0, note, progress);
329
341
  progress.step("launch");
330
342
  const launched = () => {
331
343
  try {
@@ -335,7 +347,7 @@ async function runMacos(root, note = console.error, remote, buildMachineFlag) {
335
347
  }
336
348
  };
337
349
  if (!remote) {
338
- const here = await launchHere(root, record, note);
350
+ const here = await launchHere(context, root, record, note);
339
351
  launched();
340
352
  return here;
341
353
  }
@@ -386,12 +398,12 @@ async function runMacos(root, note = console.error, remote, buildMachineFlag) {
386
398
  }
387
399
  }, {
388
400
  external: true,
389
- declareSpawns: true,
401
+ declareSpawnsFor: context,
390
402
  ownerPurpose: "build and launch macOS app"
391
403
  }).finally(() => progress.clear());
392
404
  }, { write: note });
393
405
  }
394
- async function buildBundle(root, recipe, record, hosted, note, progress = NO_BUILD_PROGRESS) {
406
+ async function buildBundle(context, root, recipe, record, hosted, note, progress = NO_BUILD_PROGRESS) {
395
407
  const started = Date.parse(record.build.startedAt);
396
408
  const scratch = join(macosDir(root), "build");
397
409
  writeWorkspaceState(root, { macos: record });
@@ -401,6 +413,7 @@ async function buildBundle(root, recipe, record, hosted, note, progress = NO_BUI
401
413
  const bundleId = hosted ? base : `${base}.stim.${createHash("sha256").update(root).digest("hex").slice(0, 12)}`;
402
414
  const displayName = workspaceAppName(root, record.product);
403
415
  const built = await buildMacosBundle({
416
+ context,
404
417
  root,
405
418
  recipe,
406
419
  bundle: record.bundle,
@@ -486,12 +499,12 @@ async function waitForLaunchServices(record, deadline) {
486
499
  }
487
500
  return "timeout";
488
501
  }
489
- async function launchHere(root, record, note) {
502
+ async function launchHere(context, root, record, note) {
490
503
  await stopBundleInstances(root);
491
504
  const fd = openSync(join(workspaceLogsDir$1(root), "macos-supervisor.log"), "a");
492
505
  let child;
493
506
  try {
494
- child = spawnDeclared(() => getExecutor().spawn(process.execPath, [
507
+ child = spawnDeclared(context, () => getExecutor().spawn(process.execPath, [
495
508
  spawnEntry("macos-run"),
496
509
  root,
497
510
  record.launchId
@@ -504,7 +517,7 @@ async function launchHere(root, record, note) {
504
517
  fd
505
518
  ],
506
519
  env: {
507
- ...process.env,
520
+ ...ambientEnv(),
508
521
  STIM_BACKGROUND_LAUNCH: "1"
509
522
  }
510
523
  }));
@@ -544,12 +557,12 @@ function launchPayload(root, record) {
544
557
  }
545
558
  function macosCommand(program) {
546
559
  program.command("macos").description("Build and launch an owned Swift Package macOS Debug app.").option("--remote-build <value>", "Build on auto, local, or one named machine; a name refuses without fallback", parseBuildMachineOption).option("--json", "print one launch or plan payload; build output goes to stderr").option("--plan", "validate the next SwiftPM Debug build without building or launching").option("--remote <machine>", "run it on this approved remote Mac from remote.machines").action(async (options) => {
547
- const root = findProjectRoot(process.cwd());
560
+ const root = findProjectRoot$1(process.cwd());
548
561
  if (options.plan) {
549
562
  try {
550
563
  if (!root) throw new Error("Run stim macos from the Swift Package directory.");
551
564
  if (options.remote !== void 0) throw Object.assign(/* @__PURE__ */ new Error("--remote selects a launch host and does not apply to --plan."), { code: "STIM_BAD_ARG" });
552
- const plan = planMacos(root, options.remoteBuild);
565
+ const plan = await planMacos(processContext(root, new AbortController().signal), root, options.remoteBuild);
553
566
  if (options.json) console.log(JSON.stringify(plan));
554
567
  else {
555
568
  console.log(phaseLine("plan", `macos ${plan.product}: SwiftPM Debug build, then stage and launch`));
@@ -569,7 +582,7 @@ function macosCommand(program) {
569
582
  return;
570
583
  }
571
584
  if (!root) throw new Error("Run stim macos from the Swift Package directory.");
572
- const record = await runMacos(root, console.error, options.remote, options.remoteBuild).catch((error) => {
585
+ const { value: record } = await runProcessOperation(root, (context) => runMacos(context, root, console.error, options.remote, options.remoteBuild)).catch((error) => {
573
586
  const remedy = error.remedy;
574
587
  if (typeof remedy === "string") console.error(`remedy: ${remedy}`);
575
588
  throw error;
@@ -1,2 +1,2 @@
1
- import { n as runMacosSupervisor, t as logLines } from "./run-BtPgpKks.mjs";
1
+ import { n as runMacosSupervisor, t as logLines } from "./run-D23HmJMs.mjs";
2
2
  export { logLines, runMacosSupervisor };