stim 1.21.0 → 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 (184) hide show
  1. package/README.md +60 -7
  2. package/dist/{acquire-artifact-CD4lbiWE.mjs → acquire-artifact-Co2k4f7O.mjs} +21 -3
  3. package/dist/{act-DHAw2A2S.mjs → act-DsuqEkiM.mjs} +298 -164
  4. package/dist/{activity-BzVfHSrY.mjs → activity-CMLmzp7o.mjs} +33 -12
  5. package/dist/{agent-device-usage-output-zh1vhbLp.mjs → agent-device-usage-output-DUFaTMdd.mjs} +7 -7
  6. package/dist/{android-BLgbNqox.mjs → android-ByRMUoiJ.mjs} +66 -52
  7. package/dist/{android-DUYkNF4u.mjs → android-C7sVmyI9.mjs} +160 -59
  8. package/dist/{android-CV_GCELZ.mjs → android-DGkNqa_c.mjs} +5 -5
  9. package/dist/{android-BEJ8Jpl7.mjs → android-DR5lZ2Az.mjs} +2 -2
  10. package/dist/android-cas-compiler.mjs +1 -1
  11. package/dist/{android-cas-Ct5b1xCK.mjs → android-cas-ngferVq2.mjs} +3 -3
  12. package/dist/{client-B7QVOlCr.d.mts → android-project-DVWyCbWU.d.mts} +145 -7
  13. package/dist/api.d.mts +132 -118
  14. package/dist/api.mjs +239 -42
  15. package/dist/{artifact-B8T3S5gi.mjs → artifact-8EY8SAPw.mjs} +40 -35
  16. package/dist/{artifact-DAuZ-FNU.mjs → artifact-DJPy518Y.mjs} +69 -40
  17. package/dist/artifact-platform-CXcmX_j3.mjs +27 -0
  18. package/dist/{browser-web-QQzVjz3O.mjs → browser-web-Bcv99PBM.mjs} +187 -59
  19. package/dist/{budget-Bs6SxxzO.mjs → budget-Cvwn54qV.mjs} +830 -699
  20. package/dist/{build-CoPzQRNw.mjs → build-CabC3G23.mjs} +34 -27
  21. package/dist/{build-cache-DmyR9Zzc.mjs → build-cache-Dv7RN200.mjs} +4 -4
  22. package/dist/{build-plan-CaFskB7_.mjs → build-plan-DUC8Ka9y.mjs} +74 -14
  23. package/dist/{cache-manifest-DkkqguoK.mjs → cache-manifest-DSeQjt-Q.mjs} +1 -1
  24. package/dist/cache-manifest.mjs +1 -1
  25. package/dist/{ccache-BJRZ9pG3.mjs → ccache-Btwc36-I.mjs} +6 -6
  26. package/dist/{cdp-CWmIUMbw.mjs → cdp-3fwICjzi.mjs} +1 -1
  27. package/dist/{chrome-B6tfCta1.mjs → chrome-Bbw689-6.mjs} +1 -1
  28. package/dist/{cli-0DYf8QhQ.mjs → cli-CHZa9Lvk.mjs} +20 -20
  29. package/dist/cli.mjs +1 -1
  30. package/dist/{client-UXD70ZbM.mjs → client-OyRoEuSr.mjs} +218 -47
  31. package/dist/collector-run.d.mts +1 -1
  32. package/dist/collector-run.mjs +6 -6
  33. package/dist/{command-output-B1UrjZHL.mjs → command-output-gwpm28fu.mjs} +1 -1
  34. package/dist/{config-CYcBF478.mjs → config-DlrsduwG.mjs} +17 -11
  35. package/dist/{created-devices-CqeBlrEn.mjs → created-devices-x9rN6bhs.mjs} +13 -3
  36. package/dist/{dependency-state-BbKQW83h.mjs → dependency-state-1I9KZT1Y.mjs} +2 -2
  37. package/dist/{detached-entry-DFRyG1_o.mjs → detached-entry-BwNEtIrP.mjs} +1 -1
  38. package/dist/{dev-client-UOeESKm6.mjs → dev-client-BSDR5h3F.mjs} +2 -2
  39. package/dist/{device-ExJq8Ei7.mjs → device-B-L3Fbxy.mjs} +71 -14
  40. package/dist/{device-DCxH7_By.mjs → device-DklWZLqb.mjs} +16 -16
  41. package/dist/{device-capacity-CMlqEcvw.mjs → device-capacity-DK5_EwRS.mjs} +9 -10
  42. package/dist/device-host-worker.mjs +25 -32
  43. package/dist/{device-ios-DRUeKaFV.mjs → device-ios-DoB6KFCO.mjs} +39 -16
  44. package/dist/{device-lease-run-C8raGFoP.mjs → device-lease-run-xJPQ_QQG.mjs} +5 -5
  45. package/dist/{device-pool-DMRpVX9a.mjs → device-pool-BMkdsefq.mjs} +3 -3
  46. package/dist/{doctor-DTvaDOda.mjs → doctor-Bo7BXLux.mjs} +24 -37
  47. package/dist/{doctor-Dhqebm0q.mjs → doctor-D5_EzwfA.mjs} +19 -16
  48. package/dist/doctor-fingerprint-DZLoYFVb.mjs +16 -0
  49. package/dist/doctor-fingerprint.mjs +1 -1
  50. package/dist/{doctor-BLHCYxzi.mjs → doctor-thjWAV0z.mjs} +1 -1
  51. package/dist/{doctor-watchman-Cv1F10Kj.mjs → doctor-watchman-N2wDotwQ.mjs} +5 -5
  52. package/dist/{eas-build-BomfRnFT.mjs → eas-build-CwknaQYj.mjs} +4 -4
  53. package/dist/{eas-fallback-DJwZpy0c.mjs → eas-fallback-CSgAulr5.mjs} +27 -18
  54. package/dist/{eas-session-ledger-op6A54yi.mjs → eas-session-ledger-DlY_serQ.mjs} +8 -7
  55. package/dist/{error-diagnostics-Bf0rZvG9.mjs → error-diagnostics-DBWO2rxE.mjs} +10 -10
  56. package/dist/{exec-_UbtCQcG.mjs → exec-DEoAhcze.mjs} +155 -47
  57. package/dist/{exec-H20xSg2T.d.mts → exec-DnYc4HGH.d.mts} +17 -4
  58. package/dist/{gc-_-dCXdyL.mjs → gc-CXxN-4SE.mjs} +587 -313
  59. package/dist/gc-DnNDQyaP.mjs +3 -0
  60. package/dist/{guide-Yqwt2bd6.mjs → guide-Br0LEfKy.mjs} +239 -43
  61. package/dist/{hosted-android-Bw-honsd.mjs → hosted-android-B-9f-jkd.mjs} +6 -6
  62. package/dist/{hosted-client-DB_gBPfY.mjs → hosted-client-DZAPrcro.mjs} +4 -4
  63. package/dist/{hosted-ios-CUvOf4Vr.mjs → hosted-ios-CsCS21hn.mjs} +1 -1
  64. package/dist/{hosted-logs-DL_P5AdN.mjs → hosted-logs-FIRx9X2f.mjs} +5 -5
  65. package/dist/{hosted-macos-QI141yKk.mjs → hosted-macos-_awYSpfv.mjs} +21 -12
  66. package/dist/{hosted-native-Ksyjgzq-.mjs → hosted-native-BdzE668-.mjs} +27 -14
  67. package/dist/{idle-BVeRGroT.d.mts → idle-C4cZ757K.d.mts} +3 -3
  68. package/dist/{idle-shutdown-DaKmZi0z.mjs → idle-shutdown-DDg3SdvY.mjs} +7 -7
  69. package/dist/ios-CDvlmUs7.d.mts +24 -0
  70. package/dist/{ios-CQ68hG9s.mjs → ios-Ds1clbIt.mjs} +8 -8
  71. package/dist/{ios-device-CwFMehUS.mjs → ios-device--h_-8ENa.mjs} +3 -3
  72. package/dist/{ios-device-CXGP1bsD.mjs → ios-device-BXZ0c7Kb.mjs} +1 -1
  73. package/dist/{ios-CpByZy12.mjs → ios-hcBpnEGk.mjs} +81 -34
  74. package/dist/{ios-ubFsBzwq.mjs → ios-pm4nL6By.mjs} +59 -50
  75. package/dist/{ios-project-WuwwBdvW.mjs → ios-project-CZhKODF3.mjs} +5 -5
  76. package/dist/{ios-signing-DTTIChGs.mjs → ios-signing-BtAffm0A.mjs} +2 -2
  77. package/dist/{ios-state-DvFX-K_l.mjs → ios-state-Dtw5K2aI.mjs} +1 -1
  78. package/dist/{ios-qNJt4dFm.mjs → ios-xtlRHaeB.mjs} +1 -1
  79. package/dist/{js-swap-Cc1dttps.mjs → js-swap-Bwhh4S7V.mjs} +7 -29
  80. package/dist/{launch-Zq2mOSDy.mjs → launch-BjxemNpK.mjs} +40 -39
  81. package/dist/{launch-CD1yVc7U.mjs → launch-CCzXlc8r.mjs} +16 -16
  82. package/dist/{logs-BS00Anxf.mjs → logs-BfwwadsZ.mjs} +151 -24
  83. package/dist/{logs-CMm05HxN.mjs → logs-jTS_lHSo.mjs} +10 -17
  84. package/dist/{macos-B65--pPd.mjs → macos-DVlSSyUg.mjs} +1 -1
  85. package/dist/{macos-C-0qJ6zq.mjs → macos-NfV2D7dO.mjs} +143 -46
  86. package/dist/macos-run.mjs +1 -1
  87. package/dist/maintenance-run.mjs +8 -8
  88. package/dist/{metro-DEXpIhHC.mjs → metro-DiXtA3Ty.mjs} +59 -37
  89. package/dist/{metro-gateway-BMJNlj3E.mjs → metro-gateway-CKZqKqx7.mjs} +120 -22
  90. package/dist/{named-ports-BWTzt6mu.mjs → named-ports-DkEzOfzO.mjs} +40 -33
  91. package/dist/{native-android-JACyjTZs.mjs → native-android-CqgnOgsT.mjs} +43 -242
  92. package/dist/native-gradle-artifact-inputs-DHFnmrVf.mjs +270 -0
  93. package/dist/{native-gradle-inputs-Bep9JcSF.mjs → native-gradle-inputs-Dnh84Zbd.mjs} +3 -129
  94. package/dist/{native-run-DY_RLx3C.mjs → native-run-NwUuxbkg.mjs} +4 -5
  95. package/dist/{native-runtime-Dg1Q7tfF.mjs → native-runtime-B7KIafpM.mjs} +8 -7
  96. package/dist/native-source-Y0yLhFyQ.mjs +133 -0
  97. package/dist/{native-xcode-inputs-CB2iQeWq.mjs → native-xcode-inputs-D_VOfFL7.mjs} +2 -3
  98. package/dist/{native-xcode-ios-CXX39F7o.mjs → native-xcode-ios-BYDOHWLN.mjs} +27 -32
  99. package/dist/offload-worker.d.mts +65 -2
  100. package/dist/offload-worker.mjs +305 -73
  101. package/dist/operation-exec-BW0em61G.mjs +171 -0
  102. package/dist/{ownership-DEmM5vhh.mjs → ownership-C5fo5Edb.mjs} +3 -3
  103. package/dist/{page-CPaHeYqj.mjs → page-DBL2PiUU.mjs} +8 -4
  104. package/dist/{placement-log-BqGbTa61.mjs → placement-log-BnGgJRRZ.mjs} +1 -1
  105. package/dist/{plan-placement-Bwj-IjY1.mjs → plan-placement-DIsMtN-d.mjs} +12 -8
  106. package/dist/{ports-D-MmCTdv.mjs → ports-Cy1RkmuQ.mjs} +3 -3
  107. package/dist/{prebuild-uD_ipCxF.mjs → prebuild-D4JoEAEs.mjs} +49 -14
  108. package/dist/{project-BZNjmW_8.mjs → project-wM_XFTvE.mjs} +16 -16
  109. package/dist/{pull-request-Lfetn8Kr.mjs → pull-request-W1IuLXDt.mjs} +102 -20
  110. package/dist/{pull-request-zjCSAryH.d.mts → pull-request-eODyIqZF.d.mts} +6 -2
  111. package/dist/pull-requests.d.mts +2 -2
  112. package/dist/pull-requests.mjs +2 -2
  113. package/dist/{react-native-android-DuzH0cn3.mjs → react-native-android-6OZ7MSM7.mjs} +71 -48
  114. package/dist/{react-native-build-rhk4smwQ.mjs → react-native-build-Dvd8hC21.mjs} +8 -8
  115. package/dist/{react-native-doctor-CQpuIMso.mjs → react-native-doctor-DsoSF1Y9.mjs} +7 -7
  116. package/dist/{react-native-ios-Bhq1rJeV.mjs → react-native-ios-4u1Rn-GR.mjs} +40 -26
  117. package/dist/{recordings-DYteQSu4.mjs → recordings-CQmfzAh7.mjs} +1 -1
  118. package/dist/registration-BcRgF6Ox.mjs +51 -0
  119. package/dist/{reload-CmTRFJaX.mjs → reload-BzkYabB-.mjs} +16 -15
  120. package/dist/{reload-DzjSl5P_.mjs → reload-D7AVlb8N.mjs} +1 -1
  121. package/dist/{remote-ByYkXdGD.mjs → remote-DjGDmlTZ.mjs} +18 -15
  122. package/dist/{result-DNiS-tTP.mjs → result-D2Ykz_iD.mjs} +24 -23
  123. package/dist/{run-D23HmJMs.mjs → run-DidHghD1.mjs} +3 -2
  124. package/dist/{selection-CSl9i5qU.mjs → selection-DSMbWEX2.mjs} +6 -5
  125. package/dist/{server-bare-CxTrvDg8.mjs → server-bare-CafzuyFB.mjs} +2 -2
  126. package/dist/{server-command-CtzloH3v.mjs → server-command-C6QjeupS.mjs} +5 -5
  127. package/dist/{server-expo-DT_F_uVI.mjs → server-expo-CrjB29pq.mjs} +7 -5
  128. package/dist/server-expo-D58c9L0M.mjs +2 -0
  129. package/dist/{settings-CsJDEXgK.mjs → settings-C7O8A6ZI.mjs} +223 -243
  130. package/dist/{settings-T1gtc3bf.mjs → settings-DpR-1Wnn.mjs} +1 -1
  131. package/dist/{settings-write-HyVZ8eQ8.mjs → settings-write-CzD60rOD.mjs} +7 -6
  132. package/dist/settings.schema.json +13 -0
  133. package/dist/{simslim-Cgk17SXV.mjs → simslim-BNckWpXi.mjs} +2 -2
  134. package/dist/{slot-launch-DF8VfT64.mjs → slot-launch-CbfmNgM6.mjs} +6 -6
  135. package/dist/{stage-BIS0ydsV.mjs → stage-Bps5oius.mjs} +21 -4
  136. package/dist/{start-RChynRDp.mjs → start-Br-oxqMD.mjs} +1 -1
  137. package/dist/{start-7lpH7hmN.mjs → start-EojN4WFz.mjs} +622 -393
  138. package/dist/{state-C4ZtUisW.mjs → state--smjFSTL.mjs} +22 -7
  139. package/dist/{state-XMziexv2.mjs → state-08I3hw3_.mjs} +2 -2
  140. package/dist/{stats-53T7OTb9.mjs → stats-D3GerlFW.mjs} +5 -5
  141. package/dist/{stats-report-BFfMpWWF.mjs → stats-report-BzaPrRm6.mjs} +1 -1
  142. package/dist/{status-DqEUSSxs.mjs → status-BRROykC8.mjs} +2 -2
  143. package/dist/{status-CSi6tlRq.mjs → status-EvrK72L2.mjs} +1 -1
  144. package/dist/{status-BL7jVyAB.mjs → status-WBDajew2.mjs} +43 -29
  145. package/dist/{status-watch-GDCfqpTE.mjs → status-watch-Bg_u-pwR.mjs} +48 -16
  146. package/dist/status-worker.mjs +1 -1
  147. package/dist/{stim-desktop-C12we7lz.mjs → stim-desktop-D5OGpYZM.mjs} +2 -2
  148. package/dist/{stop-Bk_1qiV6.mjs → stop-DTZ9uTw3.mjs} +2 -2
  149. package/dist/{stop-D7h6jAXQ.mjs → stop-Dky10AEJ.mjs} +31 -22
  150. package/dist/{stop-CPzlM1L-.mjs → stop-Mv6W9FAk.mjs} +15 -16
  151. package/dist/supervisor-run.d.mts +3 -3
  152. package/dist/supervisor-run.mjs +28 -36
  153. package/dist/{support-Dlu37g6H.mjs → support-CNioewsd.mjs} +10 -10
  154. package/dist/{support-67vraa1Q.mjs → support-yUiOjnVY.mjs} +8 -8
  155. package/dist/swiftpm-artifact-inputs-DFcGsXDP.mjs +153 -0
  156. package/dist/swiftpm-macos-BIak-Rxv.mjs +532 -0
  157. package/dist/toolchain-BY8X8HXx.mjs +2 -0
  158. package/dist/{toolchain-Hp9sCpK4.mjs → toolchain-DpJMHq0n.mjs} +9 -6
  159. package/dist/{trigger-BAahxUPq.mjs → trigger-Cbyc41d_.mjs} +3 -3
  160. package/dist/trigger-yb_nFzPF.mjs +2 -0
  161. package/dist/{warm-progress-BHX5r0Ei.mjs → warm-progress-CA3TgT3-.mjs} +29 -16
  162. package/dist/web-CZ07gd77.mjs +2 -0
  163. package/dist/{web-CJmIj6AI.mjs → web-DKx6yoFA.mjs} +11 -10
  164. package/dist/web-run.mjs +11 -9
  165. package/dist/windows-report.mjs +1 -1
  166. package/dist/{workspace-state-Cjuigeeu.mjs → workspace-state-U08dEzhG.mjs} +3 -3
  167. package/dist/{workspaces-BccMFmGQ.mjs → workspaces-CpANmBlq.mjs} +594 -266
  168. package/dist/{worktree-DQ6Zi2Mv.mjs → worktree-CHecZ4Oq.mjs} +850 -551
  169. package/dist/worktree-ZqZVjD9K.mjs +2 -0
  170. package/dist/{xcode-Zlx3qjEs.mjs → xcode-BXn9-xYx.mjs} +5 -5
  171. package/package.json +7 -7
  172. package/shim/android-audio/Main.java +24 -0
  173. package/shim/android-audio/README.md +17 -0
  174. package/shim/android-audio.jar +0 -0
  175. package/dist/gc-C-WwL0yi.mjs +0 -3
  176. package/dist/git-C3iTsJaZ.mjs +0 -73
  177. package/dist/server-expo-C-90EhcG.mjs +0 -2
  178. package/dist/settings-DkdmlelE.d.mts +0 -15
  179. package/dist/swiftpm-macos-p8WZbxKU.mjs +0 -130
  180. package/dist/toolchain-DhKwp9iI.mjs +0 -2
  181. package/dist/trigger-Bf3uDcpv.mjs +0 -2
  182. package/dist/web-DknQETPs.mjs +0 -2
  183. package/dist/workspace-process-lock-1_1OoVW5.mjs +0 -57
  184. package/dist/worktree-CK2MpJW5.mjs +0 -2
@@ -1,24 +1,23 @@
1
- import { p as process_identity_exports } from "./exec-_UbtCQcG.mjs";
1
+ import { g as process_identity_exports, i as withWorkspaceProcessLock } from "./exec-DEoAhcze.mjs";
2
2
  import { g as workspaceStateFile$1, m as workspaceLogsDir$1 } from "./paths-DQtTgsBf.mjs";
3
- import { K as projectDeviceSlots, T as setSupervisor, W as parseDeviceSlotKey, o as clearSupervisor, p as getProject } from "./config-CYcBF478.mjs";
4
- import { c as withWorkspaceStateLock, d as writeWorkspaceState, n as clearWorkspaceStateKeys, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-Cjuigeeu.mjs";
5
- import { X as runnableMetroCommand, q as resolveProjectSettings } from "./settings-CsJDEXgK.mjs";
6
- import { D as clearExpoMetroTunnel, E as MODE_EXPO, N as readPidFile, R as writePidFile, T as MODE_COMMAND, d as nativeProjectIntegration, j as clearWorkspaceSupervisor, v as detectIsExpo, w as MODE_BARE } from "./project-BZNjmW_8.mjs";
3
+ import { G as projectDeviceSlots, T as setSupervisor, U as parseDeviceSlotKey, o as clearSupervisor, p as getProject } from "./config-DlrsduwG.mjs";
4
+ import { c as withWorkspaceStateLock, d as writeWorkspaceState, n as clearWorkspaceStateKeys, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-U08dEzhG.mjs";
5
+ import { X as runnableMetroCommand, q as resolveProjectSettings } from "./settings-C7O8A6ZI.mjs";
6
+ import { D as clearExpoMetroTunnel, E as MODE_EXPO, N as readPidFile, R as writePidFile, T as MODE_COMMAND, d as nativeProjectIntegration, j as clearWorkspaceSupervisor, v as detectIsExpo, w as MODE_BARE } from "./project-wM_XFTvE.mjs";
7
7
  import { r as createNdjsonWriter } from "./ndjson-CgE_o3Dl.mjs";
8
- import { d as parseWatchRoots, l as parseSubscriberNames, m as runWatchman, u as parseTriggerCount } from "./eas-session-ledger-op6A54yi.mjs";
9
- import { A as workspaceBuildInProgress, _ as devServerStopRecord, g as devServerStopLevel, m as describeDevServerStop, x as vanishedSupervisorMessage } from "./budget-Bs6SxxzO.mjs";
10
- import { f as withIdleWorkspace } from "./workspaces-BccMFmGQ.mjs";
11
- import { S as parseLease, _ as workspaceDeviceLastUseAt, b as leaseIsExpired, r as createActivityReader, v as deviceLeasePath, w as parseWorkspaceLeases } from "./activity-BzVfHSrY.mjs";
12
- import { H as ownedAvdSerialResolver } from "./android-DUYkNF4u.mjs";
13
- import { t as withWorkspaceProcessLock } from "./workspace-process-lock-1_1OoVW5.mjs";
8
+ import { d as parseWatchRoots, l as parseSubscriberNames, m as runWatchman, u as parseTriggerCount } from "./eas-session-ledger-DlY_serQ.mjs";
9
+ import { A as workspaceBuildInProgress, _ as devServerStopRecord, g as devServerStopLevel, m as describeDevServerStop, x as vanishedSupervisorMessage } from "./budget-Cvwn54qV.mjs";
10
+ import { f as withIdleWorkspace } from "./workspaces-CpANmBlq.mjs";
11
+ import { S as parseLease, _ as workspaceDeviceLastUseAt, b as leaseIsExpired, r as createActivityReader, v as deviceLeasePath, w as parseWorkspaceLeases } from "./activity-CMLmzp7o.mjs";
12
+ import { W as ownedAvdSerialResolver } from "./android-C7sVmyI9.mjs";
14
13
  import { t as describeError } from "./errors-ccaPc4ox.mjs";
15
- import { f as probeHostedSession } from "./hosted-client-DB_gBPfY.mjs";
16
- import { t as clearHostedMetro } from "./metro-gateway-BMJNlj3E.mjs";
17
- import { n as dueIdleDevices, r as shutDownIdleDevices } from "./idle-shutdown-DaKmZi0z.mjs";
18
- import { t as relaunchWithLogFile } from "./detached-entry-DFRyG1_o.mjs";
19
- import { t as triggerMaintenance } from "./trigger-BAahxUPq.mjs";
20
- import { existsSync, readFileSync, realpathSync, statSync, watch } from "node:fs";
21
- import { basename, dirname, isAbsolute, join, resolve, sep } from "node:path";
14
+ import { f as probeHostedSession } from "./hosted-client-DZAPrcro.mjs";
15
+ import { o as watchWorkspaceState, t as clearHostedMetro } from "./metro-gateway-CKZqKqx7.mjs";
16
+ import { t as relaunchWithLogFile } from "./detached-entry-BwNEtIrP.mjs";
17
+ import { n as dueIdleDevices, r as shutDownIdleDevices } from "./idle-shutdown-DDg3SdvY.mjs";
18
+ import { t as triggerMaintenance } from "./trigger-Cbyc41d_.mjs";
19
+ import { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
20
+ import { dirname, isAbsolute, join, resolve, sep } from "node:path";
22
21
  import { LOG_ROTATE_BYTES, createMetroGateway } from "@stim-cli/core";
23
22
  import { DEV_SERVER_STOP_REQUEST_KEY, HOSTED_METRO_GATEWAYS_KEY, HOSTED_METRO_REQUESTS_KEY, IDLE_STOP_KEY, hostedAndroidPlacements, hostedIosPlacements, hostedMetroGateways, hostedMetroRequests, hostedNativeRecords, parseHostedNativePlacement, readDevServerStopRequest } from "@stim-cli/core/state";
24
23
  import { fileURLToPath } from "node:url";
@@ -69,6 +68,7 @@ function watchHostedMetro(root, metroPort, processToken) {
69
68
  });
70
69
  const reconcile = async () => {
71
70
  if (closed) return;
71
+ observer.refresh();
72
72
  const state = readState();
73
73
  if (state?.supervisor?.processToken !== processToken) return;
74
74
  const placements = [...Object.values(hostedIosPlacements(state)), ...Object.values(hostedAndroidPlacements(state)).map((placement) => Object.assign({ platform: "android" }, placement))];
@@ -147,24 +147,13 @@ function watchHostedMetro(root, metroPort, processToken) {
147
147
  return reconcile();
148
148
  }).catch(() => {});
149
149
  };
150
- const stateFile = workspaceStateFile$1(root);
151
- let watcher = null;
152
- try {
153
- watcher = watch(dirname(stateFile), (_event, name) => {
154
- if (name === null || name.toString() === basename(stateFile)) tick();
155
- });
156
- watcher.on("error", () => {
157
- watcher?.close();
158
- watcher = null;
159
- });
160
- watcher.unref();
161
- } catch {}
150
+ const observer = watchWorkspaceState(root, tick);
162
151
  const timer = setInterval(tick, 1e4);
163
152
  timer.unref();
164
153
  tick();
165
154
  return async () => {
166
155
  closed = true;
167
- watcher?.close();
156
+ observer.close();
168
157
  clearTimeout(probeTimer);
169
158
  clearInterval(timer);
170
159
  await running;
@@ -594,10 +583,7 @@ async function runSupervisor({ root, port, tunnel = false, resetCache = false, i
594
583
  const shutdown = async (code, event, msg, stop) => {
595
584
  if (stopping || !server) return;
596
585
  stopping = true;
597
- stopWatchingIdle?.();
598
- stopWatchingDevices?.();
599
- clearInterval(maintenanceTimer);
600
- await closeHostedMetro?.();
586
+ maintenanceTimer.ref();
601
587
  await watchRoots.beforeClose();
602
588
  try {
603
589
  await server.close();
@@ -608,7 +594,13 @@ async function runSupervisor({ root, port, tunnel = false, resetCache = false, i
608
594
  event: "server_close_failed",
609
595
  msg: describeError(err)
610
596
  });
597
+ stopping = false;
598
+ return;
611
599
  }
600
+ await closeHostedMetro?.();
601
+ stopWatchingIdle?.();
602
+ stopWatchingDevices?.();
603
+ clearInterval(maintenanceTimer);
612
604
  await watchRoots.afterClose();
613
605
  finish(code, event, stop ? devServerStopLevel(stop) : code === 0 ? "info" : "error", msg, stop);
614
606
  };
@@ -637,7 +629,7 @@ async function runSupervisor({ root, port, tunnel = false, resetCache = false, i
637
629
  try {
638
630
  let start;
639
631
  if (command) {
640
- const startServer = startCommand ?? (await import("./server-command-CtzloH3v.mjs")).startCommandServer;
632
+ const startServer = startCommand ?? (await import("./server-command-C6QjeupS.mjs")).startCommandServer;
641
633
  start = (opts) => startServer({
642
634
  ...opts,
643
635
  command
@@ -1,13 +1,13 @@
1
1
  import { m as workspaceLogsDir } from "./paths-DQtTgsBf.mjs";
2
- import { h as shortUdid, l as phaseLine } from "./command-output-B1UrjZHL.mjs";
3
- import { a as SETTING_SHAPE_REMEDY, b as iosProjectDirSettingError, et as settingShapeErrors, it as unknownSettingKeys, p as cacheProviderSettingError, y as iosProjectDirSetting } from "./settings-CsJDEXgK.mjs";
4
- import { j as parseIosSimulatorApp } from "./ios-CpByZy12.mjs";
2
+ import { h as shortUdid, l as phaseLine } from "./command-output-gwpm28fu.mjs";
3
+ import { a as SETTING_SHAPE_REMEDY, b as iosProjectDirSettingError, et as settingShapeErrors, it as unknownSettingKeys, p as cacheProviderSettingError, y as iosProjectDirSetting } from "./settings-C7O8A6ZI.mjs";
4
+ import { j as parseIosSimulatorApp } from "./ios-hcBpnEGk.mjs";
5
5
  import { p as resolveOptimizations } from "./errors-ccaPc4ox.mjs";
6
- import { y as describeDiagnostic } from "./xcode-Zlx3qjEs.mjs";
7
- import { s as resolveBuildPlacement } from "./selection-CSl9i5qU.mjs";
8
- import { l as parseDeviceWait } from "./device-lease-run-C8raGFoP.mjs";
9
- import { f as unknownIosDeviceTypeRefusal, p as unknownIosRuntimeRefusal, s as layerNote, t as DEFAULT_DEVICE_SLOT_WAIT_MS } from "./device-capacity-CMlqEcvw.mjs";
10
- import { t as IosDeviceMismatchError } from "./device-ios-DRUeKaFV.mjs";
6
+ import { y as describeDiagnostic } from "./xcode-BXn9-xYx.mjs";
7
+ import { s as resolveBuildPlacement } from "./selection-DSMbWEX2.mjs";
8
+ import { l as parseDeviceWait } from "./device-lease-run-xJPQ_QQG.mjs";
9
+ import { f as unknownIosDeviceTypeRefusal, p as unknownIosRuntimeRefusal, s as layerNote, t as DEFAULT_DEVICE_SLOT_WAIT_MS } from "./device-capacity-DK5_EwRS.mjs";
10
+ import { t as IosDeviceMismatchError } from "./device-ios-DoB6KFCO.mjs";
11
11
  import { basename, join } from "node:path";
12
12
  import chalk from "chalk";
13
13
  function buildLogFile(root) {
@@ -115,7 +115,7 @@ function resolveSimulatorAppFlag(flag, physical, remoteBackend, automatic = fals
115
115
  } };
116
116
  return { simulatorApp };
117
117
  }
118
- function deviceModelRefusal({ slot, deviceTypeFlag, runtimeFlag, deviceType, runtime, deviceTypeOrigin = null, runtimeOrigin = null, physical, remoteBackend, hosted = false, listRuntimes }) {
118
+ async function deviceModelRefusal({ slot, deviceTypeFlag, runtimeFlag, deviceType, runtime, deviceTypeOrigin = null, runtimeOrigin = null, physical, remoteBackend, hosted = false, listRuntimes, signal }) {
119
119
  if (slot && slot !== "default" && remoteBackend) return {
120
120
  code: "STIM_BAD_ARG",
121
121
  message: "Named slots currently support local simulators and physical devices.",
@@ -145,7 +145,7 @@ function deviceModelRefusal({ slot, deviceTypeFlag, runtimeFlag, deviceType, run
145
145
  if (!deviceType && !runtime) return null;
146
146
  let runtimes;
147
147
  try {
148
- runtimes = listRuntimes();
148
+ runtimes = await listRuntimes({ signal });
149
149
  } catch (error) {
150
150
  return {
151
151
  code: "STIM_NO_DEVICE",
@@ -1,9 +1,9 @@
1
- import { t as getExecutor } from "./exec-_UbtCQcG.mjs";
2
- import { qt as killOnAbort } from "./settings-CsJDEXgK.mjs";
3
- import { kn as pickDevClientScheme } from "./budget-Bs6SxxzO.mjs";
4
- import { C as emulatorFailureRemedy, I as memoizeEmulatorProbe, J as pickDefaultSystemImage, O as hostSystemImageArch, S as emulatorDiskSpaceRemedy, T as findBuildTool, X as profileNeedsFoldFeature, c as androidPoolNoCandidatesRefusal, l as androidSystemImageAbi, o as androidHome, s as androidPoolCandidates, w as extractEmulatorFailure } from "./android-DUYkNF4u.mjs";
5
- import { d as unknownAndroidSystemImageRefusal, s as layerNote, u as unknownAndroidDeviceProfileRefusal } from "./device-capacity-CMlqEcvw.mjs";
6
- import { t as devClientScheme } from "./dev-client-UOeESKm6.mjs";
1
+ import { t as getExecutor } from "./exec-DEoAhcze.mjs";
2
+ import { a as killOnAbort } from "./operation-exec-BW0em61G.mjs";
3
+ import { kn as pickDevClientScheme } from "./budget-Cvwn54qV.mjs";
4
+ import { C as emulatorDiskSpaceRemedy, E as findBuildTool, Q as profileNeedsFoldFeature, R as memoizeEmulatorProbe, T as extractEmulatorFailure, X as pickDefaultSystemImage, c as androidPoolNoCandidatesRefusal, k as hostSystemImageArch, l as androidSystemImageAbi, o as androidHome, s as androidPoolCandidates, w as emulatorFailureRemedy } from "./android-C7sVmyI9.mjs";
5
+ import { d as unknownAndroidSystemImageRefusal, s as layerNote, u as unknownAndroidDeviceProfileRefusal } from "./device-capacity-DK5_EwRS.mjs";
6
+ import { t as devClientScheme } from "./dev-client-BSDR5h3F.mjs";
7
7
  import { existsSync, readFileSync, readdirSync } from "node:fs";
8
8
  import { relative } from "node:path";
9
9
  //#region src/commands/android/support.ts
@@ -74,7 +74,7 @@ function resolveDeviceProfile(flag, settings) {
74
74
  const raw = android && typeof android === "object" && !Array.isArray(android) ? android["deviceProfile"] : void 0;
75
75
  return fromFlag || (typeof raw === "string" && raw.trim() !== "" ? raw.trim() : null);
76
76
  }
77
- function deviceProfileRefusal({ flag, resolved, origin = null, physical, remoteBackend, listProfiles }) {
77
+ async function deviceProfileRefusal({ flag, resolved, origin = null, physical, remoteBackend, listProfiles, signal }) {
78
78
  if (typeof flag === "string" && flag.trim() === "") return {
79
79
  code: "STIM_BAD_ARG",
80
80
  message: "--device-profile was given an empty id.",
@@ -83,7 +83,7 @@ function deviceProfileRefusal({ flag, resolved, origin = null, physical, remoteB
83
83
  if (physical || remoteBackend || !resolved) return null;
84
84
  let profiles;
85
85
  try {
86
- profiles = listProfiles();
86
+ profiles = await listProfiles({ signal });
87
87
  } catch (error) {
88
88
  return {
89
89
  code: NO_DEVICE,
@@ -0,0 +1,153 @@
1
+ import { t as getExecutor } from "./exec-DEoAhcze.mjs";
2
+ import { s as gitAsync } from "./operation-exec-BW0em61G.mjs";
3
+ import { n as buildCacheKey } from "./build-cache-Dv7RN200.mjs";
4
+ import { n as fingerprintNativeInputs, r as manifestDigest } from "./native-inputs-TRTTTRxt.mjs";
5
+ import { a as sourceManifest, r as nativeFileDigest } from "./native-source-Y0yLhFyQ.mjs";
6
+ import { createHash } from "node:crypto";
7
+ import { join, relative, resolve, sep } from "node:path";
8
+ import { isJsonObject } from "@stim-cli/core/state";
9
+ import { lstat, realpath } from "node:fs/promises";
10
+ //#region src/integrations/swiftpm-artifact-inputs.ts
11
+ const SWIFTPM_CACHE_LIMIT = "SwiftPM artifact caching requires macos.artifactInputs with complete: true and a complete declaration of pinned, repeatable inputs producing a relocatable app.";
12
+ async function readSwiftpmArtifactToolchain(context, signal, cwd) {
13
+ const run = (file, args) => getExecutor().runFileAsync(file, args, {
14
+ cwd,
15
+ timeoutMs: 3e4,
16
+ signal,
17
+ declareFor: context
18
+ });
19
+ const swift = await run("swift", ["--version"]);
20
+ const sdkPath = context.env.SDKROOT ?? context.env.SWIFTPM_SDKROOT_macosx;
21
+ return {
22
+ swift,
23
+ sdk: await run("xcrun", [
24
+ "--sdk",
25
+ sdkPath === void 0 ? "macosx" : await realpath(sdkPath),
26
+ "--show-sdk-build-version"
27
+ ]),
28
+ xcode: await run("xcodebuild", ["-version"]),
29
+ arch: process.arch
30
+ };
31
+ }
32
+ function repositoryPath(value) {
33
+ return typeof value === "string" && value.length > 0 && !value.includes("\\") && !value.includes(":") && !value.includes("\0") && !value.split("/").some((part) => !part || part === "." || part === ".." || part.toLowerCase() === ".git");
34
+ }
35
+ function swiftpmArtifactInputs(value) {
36
+ if (!isJsonObject(value) || value.complete !== true) throw new Error(SWIFTPM_CACHE_LIMIT);
37
+ const record = value;
38
+ if (Object.keys(record).some((key) => ![
39
+ "complete",
40
+ "ignored",
41
+ "outputs",
42
+ "localFiles",
43
+ "environment"
44
+ ].includes(key))) throw new Error(SWIFTPM_CACHE_LIMIT);
45
+ const strings = (name, valid) => {
46
+ const values = record[name] ?? [];
47
+ if (!Array.isArray(values) || !values.every(valid)) throw new Error(SWIFTPM_CACHE_LIMIT);
48
+ return [...new Set(values)].toSorted();
49
+ };
50
+ return {
51
+ complete: true,
52
+ ignored: strings("ignored", repositoryPath),
53
+ outputs: strings("outputs", repositoryPath),
54
+ localFiles: strings("localFiles", (path) => typeof path === "string" && !!path && !path.includes("\0")),
55
+ environment: strings("environment", (name) => typeof name === "string" && /^[A-Za-z_][A-Za-z0-9_]*$/.test(name))
56
+ };
57
+ }
58
+ async function regularInput(repository, path, signal) {
59
+ const parts = path.split("/");
60
+ for (let index = 1; index <= parts.length; index++) {
61
+ signal?.throwIfAborted();
62
+ const entry = await lstat(join(repository, ...parts.slice(0, index)));
63
+ if (entry.isSymbolicLink()) throw new Error(`SwiftPM cache input ${path} contains a symbolic link.`);
64
+ if (index === parts.length ? !entry.isFile() : !entry.isDirectory()) throw new Error(`SwiftPM cache input ${path} must be an exact regular file with real directory parents.`);
65
+ }
66
+ }
67
+ const below = (path, directory) => path === directory || path.startsWith(`${directory}/`);
68
+ async function swiftpmArtifactSnapshot(root, value, build, toolchain, env, signal) {
69
+ signal?.throwIfAborted();
70
+ const declaration = swiftpmArtifactInputs(value);
71
+ const repository = await realpath(await gitAsync(root, ["rev-parse", "--show-toplevel"], { signal }));
72
+ const project = relative(repository, await realpath(root)).split(sep).join("/");
73
+ if (project && !repositoryPath(project)) throw new Error("The SwiftPM project leaves its repository.");
74
+ if (Object.values(toolchain).some((version) => !version.trim())) throw new Error("The SwiftPM toolchain identity is unavailable.");
75
+ const files = new Map((await sourceManifest(repository, true, signal)).map((file) => [file.path, file]));
76
+ for (const path of declaration.ignored) {
77
+ await regularInput(repository, path, signal);
78
+ const info = await lstat(join(repository, path));
79
+ files.set(path, {
80
+ path,
81
+ kind: info.mode & 73 ? "exec" : "file",
82
+ ...await nativeFileDigest(join(repository, path), signal)
83
+ });
84
+ }
85
+ for (const file of files.values()) {
86
+ if (!repositoryPath(file.path)) throw new Error("SwiftPM cache inputs must be repository-relative.");
87
+ await regularInput(repository, file.path, signal);
88
+ if (declaration.outputs.some((output) => below(file.path, output) || below(output, file.path))) throw new Error(`SwiftPM source ${file.path} overlaps a declared generated output; ignore generated outputs in Git.`);
89
+ }
90
+ const bundled = [
91
+ {
92
+ name: "info-plist",
93
+ path: resolve(root, build.infoPlist)
94
+ },
95
+ ...Object.entries(build.resources).map(([destination, source]) => ({
96
+ name: `resource/${destination}`,
97
+ path: resolve(root, source)
98
+ })),
99
+ ...build.assetCatalog ? [{
100
+ name: "asset-catalog",
101
+ path: resolve(root, build.assetCatalog)
102
+ }] : []
103
+ ];
104
+ for (const input of bundled) if (!repositoryPath(relative(repository, await realpath(input.path)).split(sep).join("/"))) throw new Error("SwiftPM bundle inputs must stay inside the repository.");
105
+ for (const path of declaration.localFiles) {
106
+ const info = await lstat(resolve(root, path)).catch((error) => {
107
+ if (error instanceof Error && "code" in error && error.code === "ENOENT") return null;
108
+ throw error;
109
+ });
110
+ if (info && !info.isFile()) throw new Error("macos.artifactInputs.localFiles must name exact regular files.");
111
+ }
112
+ const local = await fingerprintNativeInputs([
113
+ ...bundled,
114
+ {
115
+ name: "package-resolved",
116
+ path: join(root, "Package.resolved"),
117
+ optional: true
118
+ },
119
+ ...declaration.localFiles.map((path, index) => ({
120
+ name: `local/${index}`,
121
+ path: resolve(root, path),
122
+ optional: true
123
+ }))
124
+ ], {
125
+ parameters: Object.fromEntries([.../* @__PURE__ */ new Set([
126
+ ...declaration.environment,
127
+ "DEVELOPER_DIR",
128
+ "TOOLCHAINS",
129
+ "SDKROOT",
130
+ "SWIFT_EXEC",
131
+ "MACOSX_DEPLOYMENT_TARGET"
132
+ ])].toSorted().map((name) => [name, env[name] ?? null])),
133
+ signal
134
+ });
135
+ const hash = createHash("sha256").update("stim-swiftpm-artifact-v1\0").update(JSON.stringify({
136
+ project,
137
+ source: manifestDigest([...files.values()]),
138
+ local: local.hash,
139
+ declaration,
140
+ build: {
141
+ ...build,
142
+ resources: Object.fromEntries(Object.entries(build.resources).toSorted(([a], [b]) => a.localeCompare(b)))
143
+ },
144
+ toolchain
145
+ })).digest("hex");
146
+ signal?.throwIfAborted();
147
+ return {
148
+ hash,
149
+ key: buildCacheKey("macos", hash, { configuration: "debug" })
150
+ };
151
+ }
152
+ //#endregion
153
+ export { swiftpmArtifactInputs as n, swiftpmArtifactSnapshot as r, readSwiftpmArtifactToolchain as t };