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
@@ -1,154 +0,0 @@
1
- import { t as getExecutor } from "./exec-DqKo9GKJ.mjs";
2
- import { t as spawnEntry } from "./spawn-entry-Dcb7sDUz.mjs";
3
- import { realpathSync } from "node:fs";
4
- import { isAbsolute } from "node:path";
5
- //#region src/api.ts
6
- var StimError = class extends Error {
7
- code;
8
- remedy;
9
- details;
10
- constructor({ code, message, remedy = null, details }) {
11
- super(message);
12
- this.name = "StimError";
13
- this.code = code;
14
- this.remedy = remedy;
15
- this.details = details;
16
- }
17
- };
18
- /**
19
- * Creates a client without starting processes or changing the caller's cwd, environment, or signal handlers.
20
- * Each operation runs in a separate Stim worker. Resources remain workspace-owned until stop() is called.
21
- */
22
- function createStim(options) {
23
- let projectRoot;
24
- try {
25
- projectRoot = realpathSync(options.projectRoot);
26
- } catch (error) {
27
- throw new StimError({
28
- code: "STIM_NO_PROJECT",
29
- message: `Could not resolve projectRoot ${options.projectRoot}: ${error instanceof Error ? error.message : String(error)}`,
30
- remedy: "Pass the path to an existing, readable app directory."
31
- });
32
- }
33
- for (const [name, path] of [["home", options.home], ["buildCache", options.buildCache]]) if (path !== void 0 && !isAbsolute(path)) throw new StimError({
34
- code: "STIM_BAD_ARG",
35
- message: `${name} must be an absolute path.`
36
- });
37
- const context = {
38
- ...options,
39
- projectRoot,
40
- env: {
41
- ...process.env,
42
- ...options.home === void 0 ? {} : { STIM_HOME: options.home },
43
- ...options.buildCache === void 0 ? {} : { STIM_BUILD_CACHE: options.buildCache },
44
- FORCE_COLOR: "0"
45
- }
46
- };
47
- return {
48
- projectRoot,
49
- build: (({ signal, ...request }) => invoke(context, {
50
- operation: "build",
51
- options: request
52
- }, signal)),
53
- run: (({ signal, ...request }) => invoke(context, {
54
- operation: "run",
55
- options: request
56
- }, signal)),
57
- stop({ signal, ...request } = {}) {
58
- return invoke(context, {
59
- operation: "stop",
60
- options: request
61
- }, signal);
62
- },
63
- diagnostics({ signal, ...request } = {}) {
64
- if (request.tail !== void 0 && (!Number.isSafeInteger(request.tail) || request.tail < 0)) return Promise.reject(new StimError({
65
- code: "STIM_BAD_ARG",
66
- message: "tail must be a non-negative integer."
67
- }));
68
- return invoke(context, {
69
- operation: "diagnostics",
70
- options: request
71
- }, signal);
72
- }
73
- };
74
- }
75
- function cancelled() {
76
- return new StimError({
77
- code: "STIM_CANCELLED",
78
- message: "The Stim operation was cancelled."
79
- });
80
- }
81
- function invoke(context, request, signal) {
82
- if (signal?.aborted) return Promise.reject(cancelled());
83
- return new Promise((resolve, reject) => {
84
- const child = getExecutor().spawn(process.execPath, [spawnEntry("api-run")], {
85
- cwd: context.projectRoot,
86
- env: context.env,
87
- stdio: [
88
- "ignore",
89
- "pipe",
90
- "pipe",
91
- "ipc"
92
- ]
93
- });
94
- let response;
95
- let transportError;
96
- let callbackError;
97
- let callbackFailed = false;
98
- let stderr = "";
99
- const abort = () => {
100
- child.send?.({ operation: "cancel" }, (error) => {
101
- if (error) child.kill("SIGINT");
102
- });
103
- };
104
- signal?.addEventListener("abort", abort, { once: true });
105
- if (signal?.aborted) abort();
106
- const progress = (stream, message) => {
107
- if (stream === "stderr") stderr = (stderr + message).slice(-16384);
108
- if (!context.onProgress || callbackFailed) return;
109
- try {
110
- context.onProgress({
111
- stream,
112
- message
113
- });
114
- } catch (error) {
115
- callbackError = error;
116
- callbackFailed = true;
117
- abort();
118
- }
119
- };
120
- child.stdout?.setEncoding("utf8").on("data", (chunk) => progress("stdout", chunk));
121
- child.stderr?.setEncoding("utf8").on("data", (chunk) => progress("stderr", chunk));
122
- child.on("message", (message) => {
123
- response = message;
124
- });
125
- child.on("error", (error) => {
126
- transportError = error;
127
- });
128
- child.on("close", (code, exitSignal) => {
129
- signal?.removeEventListener("abort", abort);
130
- if (callbackFailed) return reject(callbackError);
131
- if (signal?.aborted) return reject(cancelled());
132
- if (transportError) return reject(new StimError({
133
- code: "STIM_WORKER_FAILED",
134
- message: transportError.message,
135
- details: { stderr }
136
- }));
137
- if (response?.ok === false) return reject(new StimError(response.error));
138
- if (code === 0 && response?.ok) return resolve(response.result);
139
- reject(new StimError({
140
- code: "STIM_WORKER_FAILED",
141
- message: `Stim worker exited without a result (${exitSignal ?? code}).`,
142
- details: { stderr }
143
- }));
144
- });
145
- child.send?.({
146
- ...request,
147
- projectRoot: context.projectRoot
148
- }, (error) => {
149
- if (error) transportError = error;
150
- });
151
- });
152
- }
153
- //#endregion
154
- export { createStim as n, StimError as t };
package/dist/api-run.mjs DELETED
@@ -1,294 +0,0 @@
1
- import { E as upsertProject, p as getProject, y as refuseRelativeStimPaths } from "./config-BYDxlMY3.mjs";
2
- import { t as StimError } from "./api-qvOzWyfO.mjs";
3
- import { K as resolveProjectSettings, Q as settingShapeErrors, a as SETTING_SHAPE_REMEDY } from "./settings-B717odTD.mjs";
4
- import { i as recordWorkspaceUse, p as ensureWorkspaceStorage, w as workspaceLogsDir$1, x as workspaceDir } from "./workspace-state-DJt_MMvf.mjs";
5
- import { l as phaseLine } from "./command-output-BTy8hZ0F.mjs";
6
- import { d as projectRegistry } from "./project-_phNIJfs.mjs";
7
- import { Dt as recordFinishedBuild, Ot as startBuildProgress, kt as tapBuildLog } from "./budget-f7516Zk0.mjs";
8
- import { S as withNativeBuildRun, x as runCancellationSignal } from "./tailnet-Dh-qiYzG.mjs";
9
- import { n as cancelledError, r as throwIfCancelled } from "./cancellation-C_22VQTH.mjs";
10
- import { r as createNdjsonWriter } from "./ndjson-GOnbyvso.mjs";
11
- import { y as resolveBuildPlacement } from "./client-qQAaXSUs.mjs";
12
- import { n as macosDir } from "./state-CG_OFoaA.mjs";
13
- import { n as buildAndroidOperation, t as buildIosOperation } from "./build-DYDbfkk5.mjs";
14
- import { i as runAndroidOperation } from "./android-DCKZrNvV.mjs";
15
- import { r as runIosOperation } from "./ios-Ce7bc7br.mjs";
16
- import { i as buildMacosBundle, n as runMacos } from "./macos-Ch5VJmcS.mjs";
17
- import { c as stopWorkspaceNow } from "./stop-BNmBMi1F.mjs";
18
- import { t as runWeb } from "./web-BDBMxDpx.mjs";
19
- import { mkdirSync, mkdtempSync, realpathSync, rmSync } from "node:fs";
20
- import { join } from "node:path";
21
- import { queryJsonLogs } from "@stim-cli/core/state";
22
- //#region src/commands/macos-build.ts
23
- const note = (line) => console.error(line);
24
- async function buildMacosOperation(root, options) {
25
- if (process.platform !== "darwin") throw new Error("Building a macOS app requires a Mac with Swift installed.");
26
- root = realpathSync(root);
27
- const selected = projectRegistry.selectMacos(root);
28
- if ("problem" in selected) throw Object.assign(new Error(selected.problem.message), {
29
- code: "STIM_NO_PROJECT",
30
- remedy: selected.problem.remedy
31
- });
32
- const { settings } = resolveProjectSettings(root);
33
- const [shape] = settingShapeErrors(settings);
34
- if (shape) throw Object.assign(/* @__PURE__ */ new Error(`${shape} ${SETTING_SHAPE_REMEDY}`), { code: "STIM_BAD_ARG" });
35
- const placement = resolveBuildPlacement(options.remoteBuild);
36
- if (placement.failure) throw Object.assign(new Error(placement.failure.message), placement.failure);
37
- const recipe = (await selected.load()).prepare(settings);
38
- ensureWorkspaceStorage(root);
39
- return withNativeBuildRun(root, {
40
- command: "build",
41
- platform: "macos"
42
- }, async (claim) => {
43
- if (!getProject(root)) upsertProject(root, {});
44
- recordWorkspaceUse(root);
45
- const started = Date.now();
46
- const progress = startBuildProgress({
47
- root,
48
- platform: "macos",
49
- slot: "default",
50
- claim,
51
- note
52
- });
53
- const logs = workspaceLogsDir$1(root);
54
- const writer = tapBuildLog(createNdjsonWriter(join(logs, "build-artifact-macos.ndjson"), { truncate: true }), progress);
55
- const build = {
56
- state: "running",
57
- startedAt: new Date(started).toISOString(),
58
- buildMachine: placement.selected
59
- };
60
- let directory;
61
- let succeeded = false;
62
- try {
63
- const artifacts = join(workspaceDir(root), "artifacts");
64
- mkdirSync(artifacts, { recursive: true });
65
- directory = mkdtempSync(join(artifacts, "macos-"));
66
- const bundle = join(directory, `${recipe.product}.app`);
67
- await buildMacosBundle({
68
- root,
69
- recipe,
70
- bundle,
71
- bundleId: recipe.bundleId,
72
- scratch: join(macosDir(root), "build"),
73
- writer,
74
- note,
75
- progress,
76
- record: build,
77
- buildMachine: placement.selected
78
- });
79
- throwIfCancelled(runCancellationSignal(), "macOS build");
80
- const executable = realpathSync(join(bundle, "Contents", "MacOS", recipe.product));
81
- build.state = "ok";
82
- succeeded = true;
83
- return {
84
- product: recipe.product,
85
- bundle,
86
- bundleId: recipe.bundleId,
87
- executable,
88
- build,
89
- logs: { dir: logs }
90
- };
91
- } catch (error) {
92
- const failure = runCancellationSignal()?.aborted ? cancelledError("macOS build", error) : error;
93
- build.state = "failed";
94
- build.error = failure instanceof Error ? failure.message : String(failure);
95
- build.errorCode = failure.code;
96
- throw failure;
97
- } finally {
98
- build.finishedAt = (/* @__PURE__ */ new Date()).toISOString();
99
- build.durationMs = Date.now() - started;
100
- try {
101
- recordFinishedBuild(root, {
102
- platform: "macos",
103
- status: build.state,
104
- configuration: "Debug",
105
- fingerprint: null,
106
- cacheKey: null,
107
- cacheHit: false,
108
- cacheSkipped: false,
109
- durationMs: build.durationMs,
110
- startedAt: build.startedAt,
111
- errorCode: build.errorCode,
112
- buildMachine: build.buildMachine,
113
- builtOn: build.builtOn,
114
- offloadedTo: build.offloadedTo,
115
- offloadFallback: build.offloadFallback,
116
- compileSteps: progress.steps()
117
- }, { artifactOnly: true });
118
- } catch (error) {
119
- note(phaseLine("state", `could not record the build: ${error?.message || error}`));
120
- } finally {
121
- if (!succeeded && directory) rmSync(directory, {
122
- recursive: true,
123
- force: true
124
- });
125
- writer.close();
126
- progress.clear();
127
- }
128
- }
129
- }, { write: note });
130
- }
131
- //#endregion
132
- //#region src/api-run.ts
133
- async function dispatch({ projectRoot: root, ...request }) {
134
- let directory;
135
- try {
136
- refuseRelativeStimPaths();
137
- directory = workspaceLogsDir$1(root);
138
- if (request.operation === "diagnostics") {
139
- const { tail = 200, errors = false } = request.options;
140
- return {
141
- ok: true,
142
- result: {
143
- directory,
144
- records: tail === 0 ? [] : queryJsonLogs({
145
- dir: directory,
146
- tail,
147
- errorsOnly: errors
148
- })
149
- }
150
- };
151
- }
152
- if (request.operation === "stop") {
153
- const result = await stopWorkspaceNow({
154
- root,
155
- slot: request.options.slot
156
- });
157
- if ("refusal" in result) throw new StimError({
158
- ...result.refusal,
159
- details: result.remote
160
- });
161
- return {
162
- ok: true,
163
- result
164
- };
165
- }
166
- if (request.operation === "build") switch (request.options.platform) {
167
- case "ios": return {
168
- ok: true,
169
- result: {
170
- platform: "ios",
171
- facts: await buildIosOperation(root, request.options)
172
- }
173
- };
174
- case "android": return {
175
- ok: true,
176
- result: {
177
- platform: "android",
178
- facts: await buildAndroidOperation(root, request.options)
179
- }
180
- };
181
- case "macos": return {
182
- ok: true,
183
- result: {
184
- platform: "macos",
185
- facts: await buildMacosOperation(root, request.options)
186
- }
187
- };
188
- default: throw new StimError({
189
- code: "STIM_BAD_ARG",
190
- message: "Unknown Stim build platform."
191
- });
192
- }
193
- const options = request.options;
194
- switch (options.platform) {
195
- case "ios": {
196
- let error;
197
- const result = await runIosOperation(root, options, {}, (failure) => {
198
- error = failure;
199
- });
200
- if (!result) throw new StimError({
201
- code: error?.code ?? "STIM_RUN_FAILED",
202
- message: error?.message ?? "The iOS run failed.",
203
- remedy: error?.remedy,
204
- details: error
205
- });
206
- return {
207
- ok: true,
208
- result: {
209
- platform: "ios",
210
- facts: result.facts
211
- }
212
- };
213
- }
214
- case "android": {
215
- const result = await runAndroidOperation(root, options);
216
- if (!result.ok || !result.facts) throw new StimError({
217
- code: result.error?.code ?? "STIM_RUN_FAILED",
218
- message: result.error?.message ?? "The Android run failed.",
219
- remedy: result.error?.remedy
220
- });
221
- return {
222
- ok: true,
223
- result: {
224
- platform: "android",
225
- facts: result.facts
226
- }
227
- };
228
- }
229
- case "macos": {
230
- const record = await runMacos(root, console.error, void 0, options.remoteBuild);
231
- return {
232
- ok: true,
233
- result: {
234
- platform: "macos",
235
- facts: {
236
- product: record.product,
237
- bundle: record.bundle,
238
- bundleId: record.bundleId,
239
- executable: record.executable,
240
- pid: record.app?.pid ?? null,
241
- launched: record.app !== void 0,
242
- build: record.build,
243
- logs: { dir: directory }
244
- }
245
- }
246
- };
247
- }
248
- case "web": {
249
- const result = await runWeb({
250
- root,
251
- headed: options.headed ?? false,
252
- note: console.error
253
- });
254
- if (!result.ok) throw new StimError(result.error);
255
- return {
256
- ok: true,
257
- result: {
258
- platform: "web",
259
- facts: result.facts
260
- }
261
- };
262
- }
263
- default: throw new StimError({
264
- code: "STIM_BAD_ARG",
265
- message: "Unknown Stim platform."
266
- });
267
- }
268
- } catch (error) {
269
- const failure = error;
270
- return {
271
- ok: false,
272
- error: {
273
- code: failure.code ?? "STIM_RUN_FAILED",
274
- message: error instanceof Error ? error.message : String(error),
275
- remedy: failure.remedy ?? null,
276
- details: {
277
- logs: directory,
278
- cause: failure.details
279
- }
280
- }
281
- };
282
- }
283
- }
284
- function interrupt() {
285
- if (!process.emit("SIGINT")) process.exit(130);
286
- }
287
- process.once("disconnect", interrupt);
288
- process.on("message", async (request) => {
289
- if (request.operation === "cancel") return interrupt();
290
- const response = await dispatch(request);
291
- process.send?.(response, () => process.exit(response.ok ? 0 : 1));
292
- });
293
- //#endregion
294
- export {};