stim 1.20.2 → 1.22.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 (231) hide show
  1. package/README.md +141 -8
  2. package/dist/acquire-artifact-Co2k4f7O.mjs +171 -0
  3. package/dist/act-DsuqEkiM.mjs +2801 -0
  4. package/dist/activity-CMLmzp7o.mjs +1397 -0
  5. package/dist/{agent-device-usage-output-Dzgv6lgR.mjs → agent-device-usage-output-DUFaTMdd.mjs} +23 -67
  6. package/dist/{android-DCKZrNvV.mjs → android-ByRMUoiJ.mjs} +157 -93
  7. package/dist/{android-Mz_Inn3w.mjs → android-C7sVmyI9.mjs} +299 -116
  8. package/dist/{android-Dlzxshgp.mjs → android-DGkNqa_c.mjs} +5 -5
  9. package/dist/{android-HqP1_vB_.mjs → android-DR5lZ2Az.mjs} +2 -2
  10. package/dist/android-cas-compiler.mjs +2 -2
  11. package/dist/{android-cas-Bl-cLJBk.mjs → android-cas-ngferVq2.mjs} +7 -6
  12. package/dist/android-project-BCAAmMwz.mjs +12 -0
  13. package/dist/android-project-DVWyCbWU.d.mts +391 -0
  14. package/dist/api.d.mts +810 -64
  15. package/dist/api.mjs +782 -1
  16. package/dist/{artifact-HSwkIWEQ.mjs → artifact-8EY8SAPw.mjs} +240 -213
  17. package/dist/{artifact-D3czlUvT.mjs → artifact-DJPy518Y.mjs} +203 -164
  18. package/dist/artifact-platform-CXcmX_j3.mjs +27 -0
  19. package/dist/{browser-web-CA-F1GQo.mjs → browser-web-Bcv99PBM.mjs} +194 -64
  20. package/dist/budget-Cvwn54qV.mjs +9285 -0
  21. package/dist/{build-DYDbfkk5.mjs → build-CabC3G23.mjs} +153 -98
  22. package/dist/build-cache-Dv7RN200.mjs +602 -0
  23. package/dist/build-plan-DUC8Ka9y.mjs +248 -0
  24. package/dist/{cache-manifest-XH-fvDUj.mjs → cache-manifest-DSeQjt-Q.mjs} +2 -2
  25. package/dist/cache-manifest.mjs +1 -1
  26. package/dist/{ccache-zdKiYQ3E.mjs → ccache-Btwc36-I.mjs} +10 -9
  27. package/dist/{cdp-Dq_ypAlJ.mjs → cdp-3fwICjzi.mjs} +18 -5
  28. package/dist/{chrome-BnzZMqsR.mjs → chrome-Bbw689-6.mjs} +7 -4
  29. package/dist/{cli-CLP3diBm.mjs → cli-CHZa9Lvk.mjs} +20 -20
  30. package/dist/cli.mjs +1 -1
  31. package/dist/client-OyRoEuSr.mjs +1577 -0
  32. package/dist/collector-run.d.mts +4 -40
  33. package/dist/collector-run.mjs +9 -8
  34. package/dist/{command-output-BTy8hZ0F.mjs → command-output-gwpm28fu.mjs} +1 -1
  35. package/dist/config-DlrsduwG.mjs +955 -0
  36. package/dist/{created-devices-Dzd5C2LF.mjs → created-devices-x9rN6bhs.mjs} +14 -4
  37. package/dist/{dependency-state-DG0p31-y.mjs → dependency-state-1I9KZT1Y.mjs} +20 -5
  38. package/dist/{detached-entry-B9C_zeQC.mjs → detached-entry-BwNEtIrP.mjs} +1 -1
  39. package/dist/{dev-client-DAWVIGBu.mjs → dev-client-BSDR5h3F.mjs} +2 -2
  40. package/dist/{device-BECOiufl.mjs → device-B-L3Fbxy.mjs} +91 -34
  41. package/dist/device-DklWZLqb.mjs +1068 -0
  42. package/dist/{device-capacity-CBUAcRyQ.mjs → device-capacity-DK5_EwRS.mjs} +42 -13
  43. package/dist/device-host-worker.mjs +76 -79
  44. package/dist/{device-ios-COSi6oS1.mjs → device-ios-DoB6KFCO.mjs} +77 -51
  45. package/dist/{device-lease-run-Cw2M4z51.mjs → device-lease-run-xJPQ_QQG.mjs} +14 -26
  46. package/dist/{device-pool-Bf-pOhSw.mjs → device-pool-BMkdsefq.mjs} +5 -5
  47. package/dist/{doctor-kfMBnUw6.mjs → doctor-Bo7BXLux.mjs} +271 -320
  48. package/dist/{doctor-CB8oZKCk.mjs → doctor-D5_EzwfA.mjs} +186 -91
  49. package/dist/doctor-fingerprint-DZLoYFVb.mjs +16 -0
  50. package/dist/doctor-fingerprint.mjs +19 -0
  51. package/dist/doctor-thjWAV0z.mjs +2 -0
  52. package/dist/{doctor-watchman-BRyV2adA.mjs → doctor-watchman-N2wDotwQ.mjs} +40 -21
  53. package/dist/{eas-build-JyfqyHfC.mjs → eas-build-CwknaQYj.mjs} +53 -20
  54. package/dist/{build-plan-B7SZsc2N.mjs → eas-fallback-CSgAulr5.mjs} +41 -214
  55. package/dist/{watchman-CPQFZLXY.mjs → eas-session-ledger-DlY_serQ.mjs} +230 -11
  56. package/dist/{error-diagnostics-BR677IDM.mjs → error-diagnostics-DBWO2rxE.mjs} +172 -82
  57. package/dist/exec-DEoAhcze.mjs +858 -0
  58. package/dist/exec-DnYc4HGH.d.mts +78 -0
  59. package/dist/{gc-qWOMdnER.mjs → gc-CXxN-4SE.mjs} +1091 -1029
  60. package/dist/gc-DnNDQyaP.mjs +3 -0
  61. package/dist/{guide-G9cAbVAc.mjs → guide-Br0LEfKy.mjs} +1165 -297
  62. package/dist/{hosted-android-C3MHGld1.mjs → hosted-android-B-9f-jkd.mjs} +10 -8
  63. package/dist/{hosted-client-ZEKpS9vw.mjs → hosted-client-DZAPrcro.mjs} +34 -19
  64. package/dist/{hosted-ios-l-o3iM9J.mjs → hosted-ios-CsCS21hn.mjs} +1 -1
  65. package/dist/{hosted-logs-EzQM7-3Z.mjs → hosted-logs-FIRx9X2f.mjs} +77 -43
  66. package/dist/{hosted-macos-BACVAVqE.mjs → hosted-macos-_awYSpfv.mjs} +35 -22
  67. package/dist/{hosted-native-A4s1QPXe.mjs → hosted-native-BdzE668-.mjs} +49 -27
  68. package/dist/idle-C4cZ757K.d.mts +24 -0
  69. package/dist/{idle-shutdown-DtxhPTKe.mjs → idle-shutdown-DDg3SdvY.mjs} +11 -10
  70. package/dist/ios-CDvlmUs7.d.mts +24 -0
  71. package/dist/{ios-BwVCF7oA.mjs → ios-Ds1clbIt.mjs} +8 -8
  72. package/dist/{ios-device-D7pi2Sca.mjs → ios-device--h_-8ENa.mjs} +51 -26
  73. package/dist/{ios-device-B5veSDDQ.mjs → ios-device-BXZ0c7Kb.mjs} +1 -1
  74. package/dist/{ios-RkW4pnQf.mjs → ios-hcBpnEGk.mjs} +200 -93
  75. package/dist/{ios-Ce7bc7br.mjs → ios-pm4nL6By.mjs} +160 -108
  76. package/dist/{ios-project-K9hY_Jab.mjs → ios-project-CZhKODF3.mjs} +13 -13
  77. package/dist/ios-signing-BtAffm0A.mjs +489 -0
  78. package/dist/{ios-state-CBLe1xYw.mjs → ios-state-Dtw5K2aI.mjs} +1 -1
  79. package/dist/{ios-nOLJGVdy.mjs → ios-xtlRHaeB.mjs} +1 -1
  80. package/dist/{js-swap-Bb3nsS07.mjs → js-swap-Bwhh4S7V.mjs} +30 -25
  81. package/dist/{launch-C3qJ6Agb.mjs → launch-BjxemNpK.mjs} +85 -543
  82. package/dist/{launch-F4sOqAhB.mjs → launch-CCzXlc8r.mjs} +91 -90
  83. package/dist/logs-BfwwadsZ.mjs +479 -0
  84. package/dist/logs-jTS_lHSo.mjs +248 -0
  85. package/dist/{macos-D7uDvO-z.mjs → macos-DVlSSyUg.mjs} +1 -1
  86. package/dist/macos-NfV2D7dO.mjs +694 -0
  87. package/dist/macos-run.mjs +1 -1
  88. package/dist/maintenance-run.mjs +123 -248
  89. package/dist/{metro-DnCEjCxs.mjs → metro-DiXtA3Ty.mjs} +107 -30
  90. package/dist/metro-gateway-CKZqKqx7.mjs +209 -0
  91. package/dist/{named-ports-4WopRPg-.mjs → named-ports-DkEzOfzO.mjs} +42 -90
  92. package/dist/native-android-CqgnOgsT.mjs +645 -0
  93. package/dist/native-gradle-artifact-inputs-DHFnmrVf.mjs +270 -0
  94. package/dist/native-gradle-inputs-Dnh84Zbd.mjs +211 -0
  95. package/dist/native-inputs-TRTTTRxt.mjs +91 -0
  96. package/dist/native-run-NwUuxbkg.mjs +276 -0
  97. package/dist/{native-runtime-k8dTIrbK.mjs → native-runtime-B7KIafpM.mjs} +11 -9
  98. package/dist/native-source-Y0yLhFyQ.mjs +133 -0
  99. package/dist/{native-xcode-inputs-CykopJdM.mjs → native-xcode-inputs-D_VOfFL7.mjs} +26 -18
  100. package/dist/{native-xcode-ios-Bbf30Gm0.mjs → native-xcode-ios-BYDOHWLN.mjs} +104 -60
  101. package/dist/{ndjson-GOnbyvso.mjs → ndjson-CgE_o3Dl.mjs} +3 -3
  102. package/dist/offload-worker.d.mts +59 -41
  103. package/dist/offload-worker.mjs +478 -115
  104. package/dist/operation-exec-BW0em61G.mjs +171 -0
  105. package/dist/{ownership-DCtw_2IA.mjs → ownership-C5fo5Edb.mjs} +3 -3
  106. package/dist/{page-DRHy329N.mjs → page-DBL2PiUU.mjs} +12 -5
  107. package/dist/paths-BsJMoPP2.mjs +12 -0
  108. package/dist/paths-DQtTgsBf.mjs +42 -0
  109. package/dist/{placement-log-MOfPVgaM.mjs → placement-log-BnGgJRRZ.mjs} +5 -5
  110. package/dist/{plan-placement-V0TdzYXp.mjs → plan-placement-DIsMtN-d.mjs} +15 -11
  111. package/dist/{ports-DdSUicVo.mjs → ports-Cy1RkmuQ.mjs} +3 -3
  112. package/dist/prebuild-D4JoEAEs.mjs +484 -0
  113. package/dist/{project-_phNIJfs.mjs → project-wM_XFTvE.mjs} +65 -37
  114. package/dist/{pull-request-CQ8sPbZa.mjs → pull-request-W1IuLXDt.mjs} +102 -20
  115. package/dist/pull-request-eODyIqZF.d.mts +124 -0
  116. package/dist/pull-requests.d.mts +2 -120
  117. package/dist/pull-requests.mjs +2 -2
  118. package/dist/{react-native-android-CM1XRDwv.mjs → react-native-android-6OZ7MSM7.mjs} +121 -72
  119. package/dist/{gradle-DSrXb6lG.mjs → react-native-build-Dvd8hC21.mjs} +292 -15
  120. package/dist/react-native-doctor-DsoSF1Y9.mjs +234 -0
  121. package/dist/{react-native-ios-Dhq_eiYQ.mjs → react-native-ios-4u1Rn-GR.mjs} +71 -39
  122. package/dist/{recordings-D0d5aQt0.mjs → recordings-CQmfzAh7.mjs} +12 -9
  123. package/dist/registration-BcRgF6Ox.mjs +51 -0
  124. package/dist/{reload-C8JhxjSh.mjs → reload-BzkYabB-.mjs} +94 -47
  125. package/dist/reload-D7AVlb8N.mjs +2 -0
  126. package/dist/{remote-BiR6aYjy.mjs → remote-DjGDmlTZ.mjs} +26 -18
  127. package/dist/result-D2Ykz_iD.mjs +435 -0
  128. package/dist/{run-BtPgpKks.mjs → run-DidHghD1.mjs} +5 -5
  129. package/dist/selection-DSMbWEX2.mjs +620 -0
  130. package/dist/{server-bare-R2m_gsH8.mjs → server-bare-CafzuyFB.mjs} +3 -4
  131. package/dist/{server-command-CTtCkmcQ.mjs → server-command-C6QjeupS.mjs} +14 -7
  132. package/dist/{server-expo-DsguMGUF.mjs → server-expo-CrjB29pq.mjs} +54 -11
  133. package/dist/server-expo-D58c9L0M.mjs +2 -0
  134. package/dist/{settings-B717odTD.mjs → settings-C7O8A6ZI.mjs} +309 -119
  135. package/dist/settings-DpR-1Wnn.mjs +114 -0
  136. package/dist/settings-write-CzD60rOD.mjs +360 -0
  137. package/dist/settings.schema.json +176 -16
  138. package/dist/{simslim-CCr3rE-A.mjs → simslim-BNckWpXi.mjs} +14 -12
  139. package/dist/{slot-launch-DPt0m9Nd.mjs → slot-launch-CbfmNgM6.mjs} +15 -20
  140. package/dist/{spawn-entry-Dcb7sDUz.mjs → spawn-entry-jw19m8Nl.mjs} +0 -1
  141. package/dist/stage-Bps5oius.mjs +200 -0
  142. package/dist/{start-TXeMmmO2.mjs → start-Br-oxqMD.mjs} +1 -1
  143. package/dist/start-EojN4WFz.mjs +1364 -0
  144. package/dist/{state-D1Icyjlu.mjs → state--smjFSTL.mjs} +55 -13
  145. package/dist/{state-CG_OFoaA.mjs → state-08I3hw3_.mjs} +3 -2
  146. package/dist/{stats-BoY5sEPU.mjs → stats-D3GerlFW.mjs} +7 -13
  147. package/dist/stats-report-BzaPrRm6.mjs +16 -0
  148. package/dist/{status-BTA7kKiQ.mjs → status-BRROykC8.mjs} +7 -5
  149. package/dist/status-EvrK72L2.mjs +2 -0
  150. package/dist/{status-WgFbkRzj.mjs → status-WBDajew2.mjs} +554 -452
  151. package/dist/{status-watch-C23ILtf9.mjs → status-watch-Bg_u-pwR.mjs} +222 -25
  152. package/dist/status-worker.d.mts +1 -0
  153. package/dist/status-worker.mjs +19 -0
  154. package/dist/stim-desktop-D5OGpYZM.mjs +112 -0
  155. package/dist/{stop-DR6VoDIk.mjs → stop-DTZ9uTw3.mjs} +2 -2
  156. package/dist/{stop-DPEhunlw.mjs → stop-Dky10AEJ.mjs} +33 -23
  157. package/dist/{stop-BNmBMi1F.mjs → stop-Mv6W9FAk.mjs} +137 -98
  158. package/dist/supervisor-run.d.mts +8 -17
  159. package/dist/supervisor-run.mjs +56 -28
  160. package/dist/{support-CwjbFs9H.mjs → support-CNioewsd.mjs} +14 -14
  161. package/dist/{support-DMTqj3Hm.mjs → support-yUiOjnVY.mjs} +20 -13
  162. package/dist/swiftpm-artifact-inputs-DFcGsXDP.mjs +153 -0
  163. package/dist/swiftpm-macos-BIak-Rxv.mjs +532 -0
  164. package/dist/toolchain-BY8X8HXx.mjs +2 -0
  165. package/dist/toolchain-DpJMHq0n.mjs +876 -0
  166. package/dist/{trigger-CigAYjeL.mjs → trigger-Cbyc41d_.mjs} +21 -6
  167. package/dist/trigger-yb_nFzPF.mjs +2 -0
  168. package/dist/{warm-progress-BuY-Fvfn.mjs → warm-progress-CA3TgT3-.mjs} +263 -156
  169. package/dist/web-CZ07gd77.mjs +2 -0
  170. package/dist/{web-BDBMxDpx.mjs → web-DKx6yoFA.mjs} +20 -14
  171. package/dist/web-run.mjs +13 -12
  172. package/dist/windows-report.d.mts +1 -0
  173. package/dist/windows-report.mjs +18 -0
  174. package/dist/windows-report.ps1 +43 -0
  175. package/dist/{workspace-state-DJt_MMvf.mjs → workspace-state-U08dEzhG.mjs} +62 -58
  176. package/dist/{workspaces-C36s2jb9.mjs → workspaces-CpANmBlq.mjs} +1723 -1286
  177. package/dist/{worktree-CgvJYJ-Q.mjs → worktree-CHecZ4Oq.mjs} +1097 -547
  178. package/dist/worktree-ZqZVjD9K.mjs +2 -0
  179. package/dist/xcode-BXn9-xYx.mjs +896 -0
  180. package/package.json +7 -5
  181. package/shim/android-audio/Main.java +24 -0
  182. package/shim/android-audio/README.md +17 -0
  183. package/shim/android-audio.jar +0 -0
  184. package/shim/android-optimizations.gradle +7 -5
  185. package/dist/activity-BSV745Kz.mjs +0 -629
  186. package/dist/api-qvOzWyfO.mjs +0 -154
  187. package/dist/api-run.mjs +0 -294
  188. package/dist/app-install-BIKtMfPq.mjs +0 -896
  189. package/dist/artifact-lifecycle-DzPpBYvK.mjs +0 -30
  190. package/dist/budget-f7516Zk0.mjs +0 -4106
  191. package/dist/build-facts-DcLv2HSd.d.mts +0 -111
  192. package/dist/cancellation-C_22VQTH.mjs +0 -24
  193. package/dist/client-qQAaXSUs.mjs +0 -1771
  194. package/dist/config-BYDxlMY3.mjs +0 -562
  195. package/dist/device-DuiPJQSn.mjs +0 -290
  196. package/dist/device-lease-BX1sJQ2E.mjs +0 -1224
  197. package/dist/device-remote-xRT0Vmo9.mjs +0 -1272
  198. package/dist/eas-session-ledger-Cm0Gwq2F.mjs +0 -207
  199. package/dist/exec-DqKo9GKJ.mjs +0 -268
  200. package/dist/git-DDfFzkMm.mjs +0 -45
  201. package/dist/launch-verify-B6Q8hZP-.mjs +0 -428
  202. package/dist/logs-BGrEUaEs.mjs +0 -383
  203. package/dist/macos-Ch5VJmcS.mjs +0 -584
  204. package/dist/metro-gateway-CX9Xlkq2.mjs +0 -103
  205. package/dist/miss-reason-mKzZ4VvN.mjs +0 -238
  206. package/dist/native-android-D5qc3-_v.mjs +0 -226
  207. package/dist/native-gradle-inputs-BsLRrl7u.mjs +0 -349
  208. package/dist/ndjson-Du3j0AQ9.d.mts +0 -17
  209. package/dist/plan-C4TjdPsR.mjs +0 -260
  210. package/dist/prebuild-DYbucPXy.mjs +0 -212
  211. package/dist/preview-78a9kR_-.mjs +0 -1011
  212. package/dist/react-native-build-CtCccJtb.mjs +0 -239
  213. package/dist/react-native-doctor-CfRnFfjs.mjs +0 -78
  214. package/dist/remote-cache-OyOyVIS3.mjs +0 -526
  215. package/dist/result-CaJg5Iat.mjs +0 -186
  216. package/dist/server-expo-Bigriskl.mjs +0 -2
  217. package/dist/settings-BORNaaCO.mjs +0 -402
  218. package/dist/settings-vk3mJGSm.d.mts +0 -13
  219. package/dist/spawn-claims-DVS5RkMS.mjs +0 -72
  220. package/dist/stage-KNTQopqv.mjs +0 -157
  221. package/dist/start-BWqzODpb.mjs +0 -1116
  222. package/dist/stim-desktop-BzBN2Em2.mjs +0 -63
  223. package/dist/swiftpm-macos-DRNVJWlb.mjs +0 -119
  224. package/dist/tailnet-Dh-qiYzG.mjs +0 -265
  225. package/dist/toolchain-BFkAcstd.mjs +0 -2
  226. package/dist/toolchain-DxSsNssu.mjs +0 -1657
  227. package/dist/trigger-9_USgmxz.mjs +0 -2
  228. package/dist/web-Dq-i3wzJ.mjs +0 -2
  229. package/dist/worktree-DpLdCHga.mjs +0 -2
  230. package/dist/{api-run.d.mts → doctor-fingerprint.d.mts} +0 -0
  231. package/dist/{errors-DzkMYh8Q.mjs → errors-ccaPc4ox.mjs} +2 -2
@@ -0,0 +1,435 @@
1
+ import { l as workspaceAgentDeviceDir } from "./paths-DQtTgsBf.mjs";
2
+ import { H as deviceSlotPlatforms, p as getProject } from "./config-DlrsduwG.mjs";
3
+ import { i as formatDuration, l as phaseLine } from "./command-output-gwpm28fu.mjs";
4
+ import { $ as settingOriginScope, F as parseIosRemote, G as resolveCacheProviderConfig, V as remoteAndroidSetting, W as resolveAndroidLayout, Z as settingFile, a as SETTING_SHAPE_REMEDY, d as androidLayoutSetting, et as settingShapeErrors, f as androidLayoutSettingError, it as unknownSettingKeys, nt as settingsLayers, p as cacheProviderSettingError, s as androidAvdConfigSettingError, u as androidDataPartitionSizeGbSettingError } from "./settings-C7O8A6ZI.mjs";
5
+ import { v as detectIsExpo } from "./project-wM_XFTvE.mjs";
6
+ import { B as recordFinishedBuild, Hn as isEasAuthFailureText, Rn as UPLOAD_TIMEOUT_MS, Vn as easAuthNote, zn as cacheLevel } from "./budget-Cvwn54qV.mjs";
7
+ import { B as ownedAvdDeviceProfile, I as listInstalledSystemImages, K as ownedAvdSystemImage, N as listAvdDeviceProfilesAsync, Q as profileNeedsFoldFeature, X as pickDefaultSystemImage, _t as parkedMaxSetting, rt as systemImageSupportsFold, t as DEFAULT_AVD_DEVICE_PROFILE } from "./android-C7sVmyI9.mjs";
8
+ import { a as workspaceLinkLine } from "./stim-desktop-D5OGpYZM.mjs";
9
+ import { d as optimizationBuildProfile, l as artifactCachePolicy, p as resolveOptimizations, u as compilerCacheFallbackMessage } from "./errors-ccaPc4ox.mjs";
10
+ import { n as CCACHE_UNAVAILABLE, r as ccacheActivityLine } from "./ccache-Btwc36-I.mjs";
11
+ import { c as readProductFlavors, s as productFlavorRefusal } from "./react-native-build-Dvd8hC21.mjs";
12
+ import { l as parseDeviceWait } from "./device-lease-run-xJPQ_QQG.mjs";
13
+ import { t as DEFAULT_DEVICE_SLOT_WAIT_MS } from "./device-capacity-DK5_EwRS.mjs";
14
+ import { n as resolveAndroidCas, r as resolveAndroidCompilerCache } from "./android-cas-ngferVq2.mjs";
15
+ import { r as isPhysicalDeviceRequest } from "./native-runtime-B7KIafpM.mjs";
16
+ import { C as remoteAvdFlagRefusal, D as systemImageRefusal, E as resolveVariant, T as resolveSystemImage, a as PLATFORM, m as deviceProfileRefusal, v as foldableImageRefusal, w as resolveDeviceProfile, y as isReleaseVariant } from "./support-yUiOjnVY.mjs";
17
+ import { buildDiagnostics } from "@stim-cli/core/state";
18
+ import chalk from "chalk";
19
+ //#region src/commands/android/plan.ts
20
+ function slotOwnedAvd(projectPath, slot) {
21
+ const android = deviceSlotPlatforms(getProject(projectPath), slot)?.android;
22
+ if (!android?.owned || !android.avdName || android.setupIncomplete) return null;
23
+ const systemImage = ownedAvdSystemImage(android.avdName);
24
+ return systemImage ? {
25
+ avdName: android.avdName,
26
+ systemImage,
27
+ deviceProfile: ownedAvdDeviceProfile(android.avdName)
28
+ } : null;
29
+ }
30
+ function fail(code, message, remedy, { lines = [] } = {}) {
31
+ return {
32
+ ok: false,
33
+ code,
34
+ message,
35
+ remedy,
36
+ lines
37
+ };
38
+ }
39
+ function androidLayoutError(settings, root, bound, isExpo) {
40
+ const error = androidLayoutSettingError(settings, root, bound);
41
+ if (error || !androidLayoutSetting(settings, root, bound).custom || !isExpo()) return error;
42
+ return "android.gradleRoot and android.module apply to bare React Native apps only: expo prebuild generates and builds android/. Remove them for this Expo app.";
43
+ }
44
+ function androidCompilerCache({ root, optimizations, env, settingsContext, layout }) {
45
+ const { cas, optimizations: resolved } = resolveAndroidCompilerCache({
46
+ optimizations,
47
+ env,
48
+ use: (manifest) => resolveAndroidCas(root, {
49
+ ...env,
50
+ STIM_ANDROID_CAS_TOOLCHAIN: manifest
51
+ }, layout)
52
+ });
53
+ const fallback = resolved.android.compilerCacheFallback;
54
+ if (!fallback) return {
55
+ cas,
56
+ optimizations: resolved,
57
+ warning: null
58
+ };
59
+ return {
60
+ cas,
61
+ optimizations: resolved,
62
+ warning: `Warning: ${compilerCacheFallbackMessage({
63
+ fallback,
64
+ compilerCache: resolved.android.compilerCache === "none" ? "none" : "ccache",
65
+ file: settingFile(settingsContext, fallback.key)
66
+ })}`
67
+ };
68
+ }
69
+ function resolveAndroidBuildPlan({ settings, settingsContext, env, easProfile, variant: variantFlag, buildCache: requestedBuildCache }, { warn, runtimeKind, resolveCompilerCache = androidCompilerCache, resolveCacheProvider = resolveCacheProviderConfig, variantProblem, detectExpo = () => detectIsExpo(settingsContext.projectPath) }) {
70
+ const root = settingsContext.projectPath;
71
+ const [shapeError, ...moreShapeErrors] = settingShapeErrors(settings);
72
+ if (shapeError) return fail("STIM_BAD_ARG", shapeError, SETTING_SHAPE_REMEDY, { lines: moreShapeErrors });
73
+ const bound = settingsContext.repoRoot ?? root;
74
+ const layoutError = androidLayoutError(settings, root, bound, detectExpo);
75
+ if (layoutError) return fail("STIM_BAD_ARG", layoutError, SETTING_SHAPE_REMEDY);
76
+ const layout = resolveAndroidLayout(settings, root, bound);
77
+ for (const key of unknownSettingKeys(settings)) warn("setting", `Warning: setting "${key}" is not read by Stim and will be ignored.`);
78
+ let optimizations;
79
+ try {
80
+ optimizations = resolveOptimizations(settings, env);
81
+ } catch (error) {
82
+ return fail("STIM_BAD_ARG", `Could not configure Android build: ${error.message}`, SETTING_SHAPE_REMEDY);
83
+ }
84
+ const compilerCache = resolveCompilerCache({
85
+ root,
86
+ optimizations,
87
+ settingsContext,
88
+ layout,
89
+ env
90
+ });
91
+ const cas = compilerCache.cas;
92
+ optimizations = compilerCache.optimizations;
93
+ if (compilerCache.warning) warn("cache", compilerCache.warning);
94
+ const buildProfile = optimizationBuildProfile("android", optimizations);
95
+ const cacheProviderConfig = resolveCacheProvider(settingsContext);
96
+ const cacheProviderError = cacheProviderSettingError(settings);
97
+ if (cacheProviderError) warn("cache", `${cacheProviderError} Using the local cache.`);
98
+ const variant = easProfile !== void 0 ? "debug" : resolveVariant(variantFlag, settings);
99
+ const flavorRefusal = variantProblem(variant);
100
+ if (flavorRefusal) return fail(flavorRefusal.code, flavorRefusal.reason, flavorRefusal.remedy);
101
+ const release = isReleaseVariant(variant);
102
+ return {
103
+ ok: true,
104
+ plan: {
105
+ build: {
106
+ variant,
107
+ release,
108
+ profile: buildProfile,
109
+ cas,
110
+ cache: artifactCachePolicy(optimizations, requestedBuildCache, runtimeKind({ release }) === "embedded-js"),
111
+ compilerCache: optimizations.android.compilerCache,
112
+ gradleBuildCache: optimizations.android.gradleBuildCache,
113
+ pch: optimizations.android.pch,
114
+ targetAbiOnly: optimizations.android.targetAbiOnly
115
+ },
116
+ metroWarmup: optimizations.metroWarmup,
117
+ cacheProviderConfig
118
+ }
119
+ };
120
+ }
121
+ async function resolveAndroidRunPlan({ settings, settingsContext, env, slot, signal, easProfile, variant: variantFlag, systemImage: systemImageFlag, deviceProfile: deviceProfileFlag, device: deviceFlag, wait: waitFlag, waitConflict, remote: commandRemoteBackend, buildCache: requestedBuildCache }, { warn, runtimeKind, resolveCompilerCache = androidCompilerCache, resolveCacheProvider = resolveCacheProviderConfig, validateAvdConfig = androidAvdConfigSettingError, readFlavors = readProductFlavors, variantProblem = (variant) => productFlavorRefusal({
122
+ flavors: readFlavors(resolveAndroidLayout(settings, settingsContext.projectPath, settingsContext.repoRoot ?? settingsContext.projectPath)),
123
+ variant
124
+ }), detectExpo = () => detectIsExpo(settingsContext.projectPath), listSystemImages = listInstalledSystemImages, listDeviceProfiles = listAvdDeviceProfilesAsync, parkedLimit = parkedMaxSetting, supportsFold = systemImageSupportsFold, ownedAvd = slotOwnedAvd }) {
125
+ const root = settingsContext.projectPath;
126
+ const [shapeError, ...moreShapeErrors] = [parkedLimit("android").error, ...settingShapeErrors(settings)].filter((error) => Boolean(error));
127
+ if (shapeError) return fail("STIM_BAD_ARG", shapeError, SETTING_SHAPE_REMEDY, { lines: moreShapeErrors });
128
+ const plannedBuild = resolveAndroidBuildPlan({
129
+ settings,
130
+ settingsContext,
131
+ env,
132
+ easProfile,
133
+ variant: variantFlag,
134
+ buildCache: requestedBuildCache
135
+ }, {
136
+ warn,
137
+ runtimeKind,
138
+ resolveCompilerCache,
139
+ resolveCacheProvider,
140
+ variantProblem,
141
+ detectExpo
142
+ });
143
+ if (!plannedBuild.ok) return plannedBuild;
144
+ const dataPartitionSizeError = androidDataPartitionSizeGbSettingError(settings);
145
+ if (dataPartitionSizeError) return fail("STIM_BAD_ARG", dataPartitionSizeError, "Set android.dataPartitionSizeGb to a whole number of GiB from 6 through 16384.");
146
+ const avdConfigError = validateAvdConfig(settings, root);
147
+ if (avdConfigError) return fail("STIM_BAD_ARG", avdConfigError, "Use only documented android.avdConfig keys, or an android.avdConfigFile fragment contained by the app directory.");
148
+ const systemImage = resolveSystemImage(systemImageFlag, settings);
149
+ const deviceProfile = resolveDeviceProfile(deviceProfileFlag, settings);
150
+ const isExpo = detectExpo();
151
+ const physical = isPhysicalDeviceRequest(deviceFlag);
152
+ if (physical && deviceFlag === "") return fail("STIM_BAD_ARG", "--device was given an empty serial.", "Pass `--device` on its own to take the first connected device this workspace can lease, or `--device <serial>` to name one.");
153
+ if (physical && commandRemoteBackend !== null && parseIosRemote(commandRemoteBackend)) return fail("STIM_BAD_ARG", `--device installs on a device connected to this machine, and --remote ${commandRemoteBackend} chooses where an emulator runs.`, "Pass only one of --device and --remote, or --remote local with --device.");
154
+ const noWait = waitFlag === false;
155
+ if (waitConflict) return fail("STIM_BAD_ARG", "--wait and --no-wait ask for opposite things.", "Pass only one of `--wait <seconds>` and `--no-wait`.");
156
+ const waitParsed = parseDeviceWait(noWait ? void 0 : waitFlag);
157
+ if ("error" in waitParsed) return fail("STIM_BAD_ARG", waitParsed.error, "Pass a whole number of seconds, e.g. --wait 90. `--wait 0` refuses a busy lease or device slot at once.");
158
+ const waitSeconds = waitParsed.seconds;
159
+ const remoteTarget = commandRemoteBackend !== null ? parseIosRemote(commandRemoteBackend) : physical ? null : remoteAndroidSetting(settings);
160
+ const machine = remoteTarget?.kind === "machine" ? remoteTarget.machine : null;
161
+ const remoteBackend = !physical && remoteTarget?.kind === "backend" ? remoteTarget.backend : null;
162
+ if (!machine) {
163
+ const refusal = await androidDeviceSelectorRefusal({
164
+ settingsContext,
165
+ signal,
166
+ slot,
167
+ systemImageFlag,
168
+ deviceProfileFlag,
169
+ systemImage,
170
+ deviceProfile,
171
+ physical,
172
+ remoteBackend
173
+ }, {
174
+ listSystemImages,
175
+ listDeviceProfiles,
176
+ supportsFold,
177
+ ownedAvd
178
+ });
179
+ if (refusal) return refusal;
180
+ }
181
+ const target = physical ? {
182
+ kind: "physical",
183
+ serial: typeof deviceFlag === "string" ? deviceFlag : null,
184
+ lease: {
185
+ waitSeconds,
186
+ noWait
187
+ }
188
+ } : machine ? {
189
+ kind: "hosted",
190
+ machine,
191
+ systemImage,
192
+ deviceProfile
193
+ } : remoteBackend ? {
194
+ kind: "remote",
195
+ backend: remoteBackend,
196
+ systemImage,
197
+ deviceProfile
198
+ } : {
199
+ kind: "emulator",
200
+ systemImage,
201
+ deviceProfile
202
+ };
203
+ return {
204
+ ok: true,
205
+ plan: {
206
+ ...plannedBuild.plan,
207
+ target,
208
+ deviceSlotWaitMs: noWait ? 0 : waitFlag === void 0 && !physical ? DEFAULT_DEVICE_SLOT_WAIT_MS : waitSeconds * 1e3,
209
+ isExpo
210
+ }
211
+ };
212
+ }
213
+ async function androidDeviceSelectorRefusal({ signal, settingsContext, slot, systemImageFlag, deviceProfileFlag, systemImage, deviceProfile, physical, remoteBackend }, { listSystemImages = listInstalledSystemImages, listDeviceProfiles = listAvdDeviceProfilesAsync, supportsFold = systemImageSupportsFold, ownedAvd = slotOwnedAvd } = {}) {
214
+ const root = settingsContext.projectPath;
215
+ const settingsLayersForOrigin = settingsLayers(settingsContext);
216
+ const imageRefusal = systemImageRefusal({
217
+ slot,
218
+ flag: systemImageFlag,
219
+ resolved: systemImage,
220
+ origin: settingOriginScope(settingsLayersForOrigin, "android.systemImage"),
221
+ physical,
222
+ remoteBackend,
223
+ listImages: listSystemImages
224
+ });
225
+ if (imageRefusal) return fail(imageRefusal.code, imageRefusal.message, imageRefusal.remedy);
226
+ const profileRefusal = await deviceProfileRefusal({
227
+ flag: deviceProfileFlag,
228
+ resolved: deviceProfile,
229
+ origin: settingOriginScope(settingsLayersForOrigin, "android.deviceProfile"),
230
+ physical,
231
+ remoteBackend,
232
+ listProfiles: listDeviceProfiles,
233
+ signal
234
+ });
235
+ if (profileRefusal) return fail(profileRefusal.code, profileRefusal.message, profileRefusal.remedy);
236
+ const avdFlagRefusal = remoteAvdFlagRefusal({
237
+ systemImageFlag,
238
+ deviceProfileFlag,
239
+ remoteBackend
240
+ });
241
+ if (avdFlagRefusal) return fail(avdFlagRefusal.code, avdFlagRefusal.message, avdFlagRefusal.remedy);
242
+ if (!physical && !remoteBackend) {
243
+ const flagImage = typeof systemImageFlag === "string" && systemImageFlag.trim() ? systemImageFlag.trim() : null;
244
+ const existing = ownedAvd(root, slot);
245
+ const profile = deviceProfile ?? existing?.deviceProfile ?? DEFAULT_AVD_DEVICE_PROFILE;
246
+ const image = () => flagImage ?? existing?.systemImage ?? systemImage ?? pickDefaultSystemImage(listSystemImages())?.pkg ?? null;
247
+ const checked = profileNeedsFoldFeature(profile) ? image() : null;
248
+ const foldRefusal = checked !== null && foldableImageRefusal({
249
+ profile,
250
+ image: checked,
251
+ avdName: existing && existing.systemImage === checked && existing.deviceProfile === profile ? existing.avdName : null,
252
+ images: listSystemImages,
253
+ supportsFold
254
+ });
255
+ if (foldRefusal) return fail(foldRefusal.code, foldRefusal.message, foldRefusal.remedy);
256
+ }
257
+ return null;
258
+ }
259
+ //#endregion
260
+ //#region src/commands/android/result.ts
261
+ function androidFacts({ root, slot, serial, avdName = null, deviceName = null, systemImage = null, deviceProfile = null, fingerprint, cacheKey = null, variant = null, metroPort = null, cacheHit, cacheSkipped = false, waitedForBuild = null, appPath, bundleId, installSkipped = false, launched, ccache = CCACHE_UNAVAILABLE, logs, debugHttpHost = null, debugHttpHostNote = null, devClientUrl = null, durationMs, lease, devServer = null, buildMachine = "auto", builtOn, offloadedTo = null, offloadFallback = null, host }) {
262
+ return {
263
+ platform: PLATFORM,
264
+ ...host ? { host } : {},
265
+ ...slot && slot !== "default" ? { slot } : {},
266
+ serial: serial ?? null,
267
+ avdName: avdName ?? null,
268
+ deviceName: deviceName ?? avdName ?? null,
269
+ systemImage: systemImage ?? null,
270
+ deviceProfile: deviceProfile ?? null,
271
+ fingerprint: fingerprint ?? null,
272
+ cacheKey: cacheKey ?? null,
273
+ variant: variant ?? null,
274
+ metroPort: metroPort ?? null,
275
+ cacheHit: cacheLevel(cacheHit),
276
+ cacheSkipped: Boolean(cacheSkipped),
277
+ buildMachine,
278
+ ...builtOn ? { builtOn } : {},
279
+ ...offloadedTo ? { offloadedTo } : {},
280
+ ...offloadFallback ? { offloadFallback } : {},
281
+ waitedForBuild: waitedForBuild ? {
282
+ pid: waitedForBuild.pid ?? null,
283
+ ms: waitedForBuild.ms ?? 0
284
+ } : null,
285
+ appPath: appPath ?? null,
286
+ bundleId: bundleId ?? null,
287
+ installSkipped: Boolean(installSkipped),
288
+ launched: launched === "unverified" || launched === "bundling" ? launched : Boolean(launched),
289
+ ccache,
290
+ debugHttpHost: debugHttpHost ?? null,
291
+ debugHttpHostNote: debugHttpHostNote ?? null,
292
+ devClientUrl: devClientUrl ?? null,
293
+ logs: logs ?? null,
294
+ ...root && !host ? { agentDevice: { stateDir: workspaceAgentDeviceDir(root) } } : {},
295
+ durationMs: typeof durationMs === "number" && Number.isFinite(durationMs) ? durationMs : null,
296
+ ...lease === void 0 ? {} : { lease },
297
+ ...devServer ? { devServer } : {}
298
+ };
299
+ }
300
+ function lastBuildRecord({ devicePlacement, fingerprint, cacheKey, cacheHit, cacheSkipped = false, durationMs, appPath, bundleId, startedAt, status, errorCode = null, avdName = null, deviceName = null, missReason = null, diagnostics = null, configuration = null, buildMachine = "auto", builtOn, offloadedTo = null, offloadFallback = null }) {
301
+ const record = {
302
+ platform: PLATFORM,
303
+ avdName: avdName ?? null,
304
+ deviceName: deviceName ?? avdName ?? null,
305
+ fingerprint: fingerprint ?? null,
306
+ cacheKey: cacheKey ?? null,
307
+ cacheHit: cacheLevel(cacheHit),
308
+ cacheSkipped: Boolean(cacheSkipped),
309
+ durationMs: Number.isFinite(durationMs) ? durationMs : null,
310
+ appPath: appPath ?? null,
311
+ bundleId: bundleId ?? null,
312
+ startedAt,
313
+ status,
314
+ configuration: configuration ?? null
315
+ };
316
+ if (errorCode) record.errorCode = errorCode;
317
+ if (devicePlacement) record.devicePlacement = devicePlacement;
318
+ record.buildMachine = buildMachine;
319
+ if (builtOn) record.builtOn = builtOn;
320
+ if (offloadedTo) record.offloadedTo = offloadedTo;
321
+ if (offloadFallback) record.offloadFallback = offloadFallback;
322
+ if (missReason && !cacheLevel(cacheHit)) record.missReason = missReason;
323
+ const recorded = status === "failed" ? buildDiagnostics(diagnostics) : [];
324
+ if (recorded.length) record.diagnostics = recorded;
325
+ return record;
326
+ }
327
+ async function finishAndroidUpload(uploadPending, remote, phase) {
328
+ if (!uploadPending) return false;
329
+ const upload = await uploadPending;
330
+ if (upload?.uploaded) phase("cache", `uploaded (${remote?.name})`);
331
+ else if (upload?.timedOut) {
332
+ phase("cache", chalk.yellow(`${remote?.name} upload still running after ${formatDuration(UPLOAD_TIMEOUT_MS)}; not waiting`));
333
+ return true;
334
+ } else if (upload?.failed) {
335
+ const authNote = remote?.name === "eas" && isEasAuthFailureText(upload.failed) ? easAuthNote({
336
+ code: "logged-out",
337
+ reason: upload.failed,
338
+ phase: "upload"
339
+ }) : null;
340
+ phase("cache", chalk.yellow(authNote || `${remote?.name} upload failed: ${upload.failed}`));
341
+ }
342
+ return false;
343
+ }
344
+ function reportAndroidResult({ host, root, slot, json, useBuildCache, variant, release, runtimeKind = release ? "embedded-js" : "metro", metroCheck, metroPort, logsDir, serial, apkPath, androidPackage, installSkipped, record, waitedForBuild, remote, providerName, launchState, launchWarning, launched, ccache, durationMs, writer, emit, out, lease, recordRun, reclaimed = [], devServer = null, links }) {
345
+ const offloadedTo = record.offloadedTo ?? null;
346
+ recordRun({
347
+ failed: false,
348
+ cacheHit: cacheLevel(record.cacheHit),
349
+ waited: waitedForBuild,
350
+ durationMs,
351
+ offloadedTo
352
+ });
353
+ const facts = androidFacts({
354
+ host,
355
+ root,
356
+ slot,
357
+ serial,
358
+ avdName: record.avdName,
359
+ deviceName: record.deviceName,
360
+ systemImage: record.systemImage,
361
+ deviceProfile: record.deviceProfile,
362
+ debugHttpHost: launched.debugHttpHost ?? null,
363
+ debugHttpHostNote: launched.debugHttpHostNote ?? null,
364
+ devClientUrl: launched.devClientUrl ?? null,
365
+ fingerprint: record.fingerprint,
366
+ cacheKey: record.cacheKey,
367
+ variant,
368
+ metroPort,
369
+ cacheHit: record.cacheHit,
370
+ cacheSkipped: record.cacheSkipped || !useBuildCache,
371
+ waitedForBuild,
372
+ appPath: apkPath,
373
+ bundleId: androidPackage,
374
+ installSkipped,
375
+ launched: launchState,
376
+ ccache,
377
+ logs: logsDir,
378
+ durationMs,
379
+ lease,
380
+ devServer,
381
+ buildMachine: record.buildMachine,
382
+ builtOn: record.builtOn ?? void 0,
383
+ offloadedTo,
384
+ offloadFallback: record.offloadFallback ?? null
385
+ });
386
+ writer.close();
387
+ if (record.devicePlacement) facts.devicePlacement = record.devicePlacement;
388
+ if (json) emit(JSON.stringify({
389
+ ...facts,
390
+ ...links ? { links } : {},
391
+ ...reclaimed.length ? { reclaimed } : {}
392
+ }));
393
+ else {
394
+ const summary = `${launchWarning ? "WARNING" : "OK"}: ${androidPackage} launched on ${host ? `${host.device?.name ?? "Android emulator"} on ${host.machine}` : serial}, ${runtimeKind === "process" ? `${variant ?? "debug"} (native process, no Metro)` : runtimeKind === "embedded-js" ? `${variant} (embedded JS, no Metro)` : `Metro port ${metroPort}`} (${cacheOutcome(record.cacheHit, remote?.name ?? providerName, offloadedTo)})`;
395
+ const outcome = launchWarning ? chalk.yellow(`${summary} -- ${launchWarning}`) : launchState === "unverified" ? chalk.yellow(`${summary} -- launch UNVERIFIED`) : launchState === "bundling" ? chalk.green(`${summary} -- bundle requested, still building`) : chalk.green(summary);
396
+ const deviceName = record.avdName || record.deviceName || serial;
397
+ const cacheResult = useBuildCache ? cacheOutcome(record.cacheHit, remote?.name ?? providerName, offloadedTo) : `bypassed; ${cacheOutcome(false, null, offloadedTo)}`;
398
+ const metroResult = runtimeKind === "process" ? "native process (no Metro)" : runtimeKind === "embedded-js" ? `embedded (${variant})` : !metroCheck ? `check skipped on port ${metroPort}` : launchState === "unverified" ? `state unverified on port ${metroPort}` : `running on port ${metroPort}${devServer ? ` (started: ${devServer.reason})` : ""}`;
399
+ emit([
400
+ outcome,
401
+ phaseLine("device", host ? `${deviceName} on ${host.machine}` : `${deviceName} (${serial})`),
402
+ phaseLine("app", androidPackage),
403
+ phaseLine(runtimeKind === "process" ? "runtime" : "metro", metroResult),
404
+ phaseLine("cache", cacheResult),
405
+ ...ccache.status === "not-run" ? [phaseLine("compilation cache", ccacheActivityLine(ccache))] : [],
406
+ phaseLine("logs", logsDir || "unavailable (remote device)"),
407
+ ...!host ? [phaseLine("agent-device", `AGENT_DEVICE_STATE_DIR=${workspaceAgentDeviceDir(root)}`)] : []
408
+ ].join("\n"));
409
+ if (links) out(chalk.dim(workspaceLinkLine(links)));
410
+ }
411
+ return facts;
412
+ }
413
+ function cacheOutcome(cacheHit, providerName = null, offloadedTo = null) {
414
+ if (cacheHit === "remote") return `cache hit from ${providerName || "the remote cache"}`;
415
+ if (cacheHit === "local") return "cache hit";
416
+ return offloadedTo ? `built on ${offloadedTo}` : "built";
417
+ }
418
+ function persistLastBuild({ recordBuild = recordFinishedBuild, root, record, startedAt, durationMs, status, errorCode = null, diagnostics = null, out }) {
419
+ const lastBuild = lastBuildRecord({
420
+ ...record,
421
+ startedAt,
422
+ durationMs,
423
+ status,
424
+ errorCode,
425
+ diagnostics
426
+ });
427
+ try {
428
+ recordBuild(root, lastBuild);
429
+ } catch (err) {
430
+ out(phaseLine("state", chalk.yellow(`could not record lastBuild: ${err?.message || err}`)));
431
+ }
432
+ return lastBuild;
433
+ }
434
+ //#endregion
435
+ export { reportAndroidResult as a, resolveAndroidRunPlan as c, persistLastBuild as i, finishAndroidUpload as n, androidDeviceSelectorRefusal as o, lastBuildRecord as r, resolveAndroidBuildPlan as s, androidFacts as t };
@@ -1,9 +1,8 @@
1
- import { j as ownership_claim_exports, k as process_identity_exports } from "./config-BYDxlMY3.mjs";
2
- import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
3
- import { r as createNdjsonWriter } from "./ndjson-GOnbyvso.mjs";
4
- import { a as macosRuntimeClaim, i as macosProcess, r as macosLogFile, s as updateMacosRecord } from "./state-CG_OFoaA.mjs";
5
- import { readMacosRecord } from "@stim-cli/core/state";
1
+ import { g as process_identity_exports, t as getExecutor, x as ownership_claim_exports } from "./exec-DEoAhcze.mjs";
2
+ import { a as macosRuntimeClaim, i as macosProcess, r as macosLogFile, s as updateMacosRecord } from "./state-08I3hw3_.mjs";
3
+ import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
6
4
  import { LOG_ROTATE_BYTES } from "@stim-cli/core";
5
+ import { readMacosRecord } from "@stim-cli/core/state";
7
6
  import { StringDecoder } from "node:string_decoder";
8
7
  //#region src/macos/run.ts
9
8
  function logLines(stream, write) {
@@ -94,6 +93,7 @@ async function runMacosSupervisor(root, launchId) {
94
93
  process.on("SIGTERM", stop);
95
94
  process.on("SIGINT", stop);
96
95
  log("info", `Started ${record.product} (pid ${app.pid}).`);
96
+ process.send?.("macos-registered", () => {});
97
97
  await ended;
98
98
  process.off("SIGTERM", stop);
99
99
  process.off("SIGINT", stop);