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
package/dist/api.d.mts CHANGED
@@ -1,16 +1,51 @@
1
- import { i as IosFacts, n as CcacheActivity, r as CompilationCacheActivity, t as AndroidFacts } from "./build-facts-DcLv2HSd.mjs";
2
- import "./settings-vk3mJGSm.mjs";
3
- import "./ndjson-Du3j0AQ9.mjs";
4
- import { MacosBuild, NdjsonRecord, WebBrowserState, WebViewport } from "@stim-cli/core/state";
1
+ import { _ as IosFacts, a as BuildMachinesInspection, d as DoctorPlatform, f as Finding, g as CompilationCacheActivity, h as CcacheActivity, m as AndroidFacts, n as WebLaunched, o as GeneratedTickets, s as TailnetMachineIo, u as BudgetReport } from "./android-project-DVWyCbWU.mjs";
2
+ import { a as WorkspaceLaunchPlatform } from "./ios-CDvlmUs7.mjs";
3
+ import "./exec-DnYc4HGH.mjs";
4
+ import "./pull-request-eODyIqZF.mjs";
5
+ import { t as IdleDevice } from "./idle-C4cZ757K.mjs";
6
+ import { StimContext } from "@stim-cli/core";
7
+ import { AgentDeviceUsage, ArchivedWorkspace, BuildPlanPayload, MacosBuild, MacosBuildPlanPayload, MaintenanceAction, MaintenanceMode, MaintenancePressure, MaintenanceStatus, NdjsonRecord, SettingScope, SettingWriteResult, SettingsPayload, SimRuntimeUsage, StatsReport, SwiftpmCacheUsage, WebBrowserState } from "@stim-cli/core/state";
8
+ import { statSync } from "fs";
5
9
  import { Command } from "commander";
6
- import { ChildProcess } from "node:child_process";
7
- //#region src/commands/android/build.d.ts
8
- interface AndroidBuildOptions {
9
- variant?: string;
10
- abi?: "arm64-v8a" | "armeabi-v7a" | "x86" | "x86_64" | "all";
11
- buildCache?: boolean;
12
- remoteBuild?: string;
10
+ import { ToolchainEntry } from "@stim-cli/core/toolchain";
11
+ import { HelloResult, PlatformBuildOptions, PlatformRunOptions } from "@stim-cli/core/protocol";
12
+ //#region src/engine/device-lease.d.ts
13
+ type LeasePlatform = "ios" | "android";
14
+ interface ReleasedLease {
15
+ platform: LeasePlatform;
16
+ id: string;
17
+ deviceName: string | null;
18
+ expiresAt: string;
19
+ }
20
+ //#endregion
21
+ //#region src/commands/gc/results.d.ts
22
+ type GcResultKind = "archive" | "device" | "parkedDevice" | "parkedHostedDevice" | "idleDevice" | "deviceRecord" | "workspaceOutputs" | "recording" | "workspaceDirectory" | "project" | "buildLock" | "buildSlot" | "deviceLease" | "easSession" | "worktree" | "cache" | "statusCache" | "tempLeftover" | "watchmanRoot" | "watchman" | "gradleDaemon" | "gradleVersion" | "kotlinDaemon";
23
+ type GcResultStatus = "done" | "kept" | "failed";
24
+ interface GcResult {
25
+ kind: GcResultKind;
26
+ status: GcResultStatus;
27
+ label: string;
28
+ id: string | null;
29
+ bytes: number | null;
30
+ detail: string | null;
13
31
  }
32
+ //#endregion
33
+ //#region src/supervisor/start-facts.d.ts
34
+ interface StartFacts {
35
+ port: number;
36
+ supervisorPid: number | null;
37
+ mode: string | null;
38
+ logsDir: string;
39
+ agentDevice?: {
40
+ stateDir: string;
41
+ };
42
+ alreadyRunning: boolean;
43
+ }
44
+ //#endregion
45
+ //#region src/commands/android/build.d.ts
46
+ type AndroidBuildOptions = Omit<Extract<PlatformBuildOptions, {
47
+ platform: "android";
48
+ }>, "platform">;
14
49
  interface AndroidBuildFacts {
15
50
  /** Owned copy, retained with this workspace until explicitly removed. */
16
51
  apkPath: string;
@@ -27,12 +62,15 @@ interface AndroidBuildFacts {
27
62
  logs: {
28
63
  dir: string;
29
64
  };
65
+ links: {
66
+ workspace: string;
67
+ };
30
68
  }
31
69
  //#endregion
32
70
  //#region src/commands/macos-build.d.ts
33
- interface MacosBuildOptions {
34
- remoteBuild?: string;
35
- }
71
+ type MacosBuildOptions = Omit<Extract<PlatformBuildOptions, {
72
+ platform: "macos";
73
+ }>, "platform">;
36
74
  interface MacosBuildFacts {
37
75
  product: string;
38
76
  /** Owned copy, retained with this workspace until explicitly removed. */
@@ -43,17 +81,15 @@ interface MacosBuildFacts {
43
81
  logs: {
44
82
  dir: string;
45
83
  };
84
+ links: {
85
+ workspace: string;
86
+ };
46
87
  }
47
88
  //#endregion
48
89
  //#region src/commands/ios/build.d.ts
49
- interface IosBuildOptions {
50
- configuration?: string;
51
- scheme?: string;
52
- /** Simulator architecture. Defaults to the host for Debug, or all architectures otherwise. */
53
- arch?: "arm64" | "x86_64" | "all";
54
- buildCache?: boolean;
55
- remoteBuild?: string;
56
- }
90
+ type IosBuildOptions = Omit<Extract<PlatformBuildOptions, {
91
+ platform: "ios";
92
+ }>, "platform">;
57
93
  interface IosBuildFacts {
58
94
  /** Owned simulator app, retained with this workspace until explicitly removed. */
59
95
  appPath: string;
@@ -71,15 +107,9 @@ interface IosBuildFacts {
71
107
  logs: {
72
108
  dir: string;
73
109
  };
74
- }
75
- //#endregion
76
- //#region src/engine/device-lease.d.ts
77
- type LeasePlatform = "ios" | "android";
78
- interface ReleasedLease {
79
- platform: LeasePlatform;
80
- id: string;
81
- deviceName: string | null;
82
- expiresAt: string;
110
+ links: {
111
+ workspace: string;
112
+ };
83
113
  }
84
114
  //#endregion
85
115
  //#region src/commands/stop.d.ts
@@ -149,9 +179,6 @@ interface TunnelOutcome {
149
179
  reason?: string;
150
180
  }
151
181
  //#endregion
152
- //#region src/web/launch.d.ts
153
- type WebLaunched = true | "bundling" | "unverified";
154
- //#endregion
155
182
  //#region src/commands/web.d.ts
156
183
  interface WebFacts extends WebBrowserState {
157
184
  platform: "web";
@@ -164,6 +191,614 @@ interface WebFacts extends WebBrowserState {
164
191
  durationMs: number;
165
192
  }
166
193
  //#endregion
194
+ //#region src/maintenance/status.d.ts
195
+ declare function maintenanceStatus(env?: NodeJS.ProcessEnv): MaintenanceStatus;
196
+ //#endregion
197
+ //#region src/diagnostics/stim-installations.d.ts
198
+ interface StimInstallation {
199
+ path: string;
200
+ realPath: string;
201
+ version: string | null;
202
+ }
203
+ interface StimVersionReport {
204
+ runningVersion: string;
205
+ runningPath: string | null;
206
+ resolved: StimInstallation | null;
207
+ installations: StimInstallation[];
208
+ versions: string[];
209
+ highestVersion: string | null;
210
+ resolvedIsOlder: boolean;
211
+ }
212
+ //#endregion
213
+ //#region src/device-host/machines.d.ts
214
+ interface MachineReport {
215
+ machine: string;
216
+ state: "invalid" | "tailscale-off" | "not-on-tailnet" | "key-changed" | "not-asked" | "pending" | "approved" | "revoked" | "lapsed" | "outdated" | "unreachable" | "credentials-unavailable" | "busy";
217
+ dnsName?: string;
218
+ deviceId?: string;
219
+ requestedAt?: string;
220
+ expiresAt?: string;
221
+ host?: NonNullable<HelloResult["host"]>;
222
+ }
223
+ interface Inspection {
224
+ findings: Finding[];
225
+ machines: MachineReport[];
226
+ }
227
+ /**
228
+ * Reports the device-host approval of each remote machine, separate from its build approval. Only --fix makes a setup
229
+ * ticket or forgets credentials; every server key stays pinned.
230
+ */
231
+ declare function inspectDeviceHostMachines({ fix, version, tickets, operation }: {
232
+ fix: boolean;
233
+ version?: string;
234
+ tickets?: GeneratedTickets;
235
+ operation?: StimContext;
236
+ }, io?: TailnetMachineIo, entries?: string[] | null): Promise<Inspection>;
237
+ //#endregion
238
+ //#region src/commands/doctor.d.ts
239
+ /**
240
+ * Where the toolchain a process without a login shell, such as stim-server under Stim Desktop, finds each tool,
241
+ * and the Node the project's dev server runs on.
242
+ */
243
+ interface ToolchainReport {
244
+ entries: ToolchainEntry[];
245
+ projectNode: {
246
+ pin: string;
247
+ spec: string;
248
+ bin: string | null;
249
+ version: string | null;
250
+ } | null;
251
+ }
252
+ interface DoctorReport {
253
+ project: string;
254
+ platform: DoctorPlatform | null;
255
+ stim: StimVersionReport;
256
+ budget: BudgetReport | null;
257
+ maintenance: ReturnType<typeof maintenanceStatus> & {
258
+ logPath: string;
259
+ };
260
+ remoteMachines: BuildMachinesInspection["machines"];
261
+ deviceHosts: Awaited<ReturnType<typeof inspectDeviceHostMachines>>["machines"];
262
+ toolchain: ToolchainReport | null;
263
+ findings: Finding[];
264
+ }
265
+ //#endregion
266
+ //#region src/commands/gc/worktrees.d.ts
267
+ type WorktreeSkipCode = "not-a-worktree" | "bare-repository" | "source-checkout-unknown" | "source-checkout" | "locked" | "nested-worktree" | "in-use" | "status-unreadable" | "dirty" | "unpushed-unchecked" | "unpushed" | "submodules" | "not-merged" | "merge-unknown" | "last-use-unknown" | "recently-used" | "activity-unknown" | "recent-activity";
268
+ interface WorktreeBuildState {
269
+ bytes: number | null;
270
+ dirs: {
271
+ path: string;
272
+ bytes: number | null;
273
+ }[];
274
+ }
275
+ //#endregion
276
+ //#region src/maintenance/plan.d.ts
277
+ interface MaintenancePlan {
278
+ actions: MaintenanceAction[];
279
+ blocked: string[];
280
+ skips: {
281
+ target: string;
282
+ reason: string;
283
+ workspace?: string;
284
+ }[];
285
+ }
286
+ //#endregion
287
+ //#region src/maintenance/preview.d.ts
288
+ interface MaintenancePreview extends MaintenancePlan {
289
+ mode: MaintenanceMode;
290
+ invalid?: string;
291
+ pressure: MaintenancePressure | null;
292
+ note: string | null;
293
+ }
294
+ //#endregion
295
+ //#region src/commands/gc/devices.d.ts
296
+ interface ParkedSimReport {
297
+ udid: string;
298
+ name: string;
299
+ model: string | null;
300
+ runtime: string | null;
301
+ parkedAt: string;
302
+ app: string | null;
303
+ bytes: number | null;
304
+ listed: boolean | null;
305
+ }
306
+ interface ParkedAvdReport {
307
+ name: string;
308
+ systemImage: string;
309
+ deviceProfile: string | null;
310
+ parkedAt: string;
311
+ app: string | null;
312
+ bytes: number | null;
313
+ listed: boolean | null;
314
+ }
315
+ //#endregion
316
+ //#region src/commands/gc/hosted-devices.d.ts
317
+ interface ParkedHostedDeviceReport {
318
+ session: string;
319
+ client: string;
320
+ platform: "ios" | "android";
321
+ id: string | null;
322
+ name: string | null;
323
+ parkedAt: string;
324
+ listed: boolean | null;
325
+ }
326
+ //#endregion
327
+ //#region src/archive.d.ts
328
+ interface ArchiveStaging {
329
+ path: string;
330
+ kept: boolean;
331
+ reason: string | null;
332
+ removeCommand: string | null;
333
+ }
334
+ //#endregion
335
+ //#region src/commands/gc/archive-selector.d.ts
336
+ type ArchiveKind = "logs" | "recordings" | "agentActions";
337
+ //#endregion
338
+ //#region src/commands/gc/archives.d.ts
339
+ interface ArchiveSelection {
340
+ records: {
341
+ id: string;
342
+ kinds: string[];
343
+ bytes: number;
344
+ expires: ArchivedWorkspace["expires"];
345
+ willDelete: boolean;
346
+ }[];
347
+ staging: ArchiveStaging[];
348
+ unknownId: string | null;
349
+ knownIds: string[];
350
+ kind: ArchiveKind | null;
351
+ }
352
+ //#endregion
353
+ //#region src/devices/machine-cache-usage.d.ts
354
+ interface SizedDir {
355
+ dir: string;
356
+ bytes: number | null;
357
+ }
358
+ interface MachineCacheReport {
359
+ measuredAt: string;
360
+ complete: boolean;
361
+ notices: string[];
362
+ gradle: {
363
+ home: string;
364
+ unusedVersions: {
365
+ version: string;
366
+ bytes: number | null;
367
+ dirs: SizedDir[];
368
+ remedy: string | null;
369
+ }[];
370
+ usedVersions: {
371
+ version: string;
372
+ projects: string[];
373
+ }[];
374
+ unreadableProjects: string[];
375
+ modules: (SizedDir & {
376
+ remedy: string;
377
+ }) | null;
378
+ };
379
+ simRuntimes: {
380
+ checked: boolean;
381
+ runtimes: (SimRuntimeUsage & {
382
+ remedy: string | null;
383
+ })[];
384
+ };
385
+ deviceSupport: {
386
+ entries: SizedDir[];
387
+ remedy: string;
388
+ };
389
+ runnerBuilds: {
390
+ agentDeviceVersion: string | null;
391
+ xcodeBuildVersion: string | null;
392
+ groups: {
393
+ packageVersion: string | null;
394
+ xcodeBuildVersion: string | null;
395
+ current: boolean | null;
396
+ entries: number;
397
+ inUse: number;
398
+ bytes: number | null;
399
+ oldestUseAt: string | null;
400
+ }[];
401
+ remedy: string;
402
+ };
403
+ }
404
+ //#endregion
405
+ //#region src/commands/gc/gradle-versions.d.ts
406
+ type GradleSweepBlock = "machine-global" | "no-registry" | "unsafe-layout" | "listing-failed" | "unreadable-project" | "gradle-running" | "processes-unknown";
407
+ type GradleVersionKeptCode = GradleSweepBlock | "pinned" | "not-a-directory" | "walk-failed" | "too-many-entries" | "recently-modified";
408
+ interface GradleVersionEntry {
409
+ version: string;
410
+ dirs: string[];
411
+ bytes: number | null;
412
+ lastModifiedAt: string | null;
413
+ willDelete: boolean;
414
+ reason: GradleVersionKeptCode | null;
415
+ detail: string | null;
416
+ }
417
+ interface GradleVersionSweep {
418
+ home: string;
419
+ olderThanDays: number | null;
420
+ blocked: {
421
+ reason: GradleSweepBlock;
422
+ detail: string;
423
+ } | null;
424
+ /** Why running Gradle blocks deletion; with `pastRunningGradle`, versions are judged as if it had stopped. */
425
+ gradleRunning: string | null;
426
+ /** The pids of the Gradle processes behind `gradleRunning`. */
427
+ gradleRunningPids: number[];
428
+ versions: GradleVersionEntry[];
429
+ leftovers: string[];
430
+ }
431
+ //#endregion
432
+ //#region src/commands/gc/workspaces.d.ts
433
+ type WorkspaceKeptCode = "unresolved" | "in-use" | "last-use-unknown" | "recently-used";
434
+ //#endregion
435
+ //#region src/commands/gc/logs.d.ts
436
+ type WorkspaceLogsKeptCode = "unresolved" | "in-use" | "collector";
437
+ //#endregion
438
+ //#region src/commands/gc/finished-devices.d.ts
439
+ interface OwnedDeviceDisk {
440
+ kind: "ios" | "android";
441
+ count: number;
442
+ bytes: number;
443
+ /** Owned devices whose disk could not be measured; `bytes` leaves them out. */
444
+ unmeasured: number;
445
+ }
446
+ //#endregion
447
+ //#region src/commands/gc/recordings.d.ts
448
+ type RecordingKeptCode = "unresolved" | "retained" | "recently-recorded";
449
+ //#endregion
450
+ //#region src/commands/gc/temp-leftovers.d.ts
451
+ type TempLeftoverKind = "stim" | "xctrace" | "jest";
452
+ interface TempLeftover {
453
+ kind: TempLeftoverKind;
454
+ path: string;
455
+ bytes: number;
456
+ willDelete: boolean;
457
+ kept: string | null;
458
+ }
459
+ interface TempLeftoverReport {
460
+ root: string;
461
+ entries: TempLeftover[];
462
+ /** Judges an entry again right before deletion (a Stim directory after its rename to `staged`), so a claim or recording use since the scan keeps it. */
463
+ recheck?: (staged: string, original: string, kind: "stim" | "xctrace") => Promise<string | null>;
464
+ }
465
+ interface TempLeftoverGroup {
466
+ kind: TempLeftoverKind;
467
+ count: number;
468
+ bytes: number;
469
+ deleteCount: number;
470
+ deleteBytes: number;
471
+ kept: {
472
+ reason: string;
473
+ count: number;
474
+ }[];
475
+ remedy: string;
476
+ }
477
+ declare function tempLeftoverSection(report: TempLeftoverReport | null | undefined): {
478
+ root: string;
479
+ groups: TempLeftoverGroup[];
480
+ } | null;
481
+ //#endregion
482
+ //#region src/commands/gc/memory.d.ts
483
+ declare const WATCHMAN_KIND = "watchman";
484
+ declare const GRADLE_DAEMONS_KIND = "gradle-daemons";
485
+ type MemoryCacheKind = typeof WATCHMAN_KIND | typeof GRADLE_DAEMONS_KIND;
486
+ type MemoryKeptCode = "in-use" | "busy" | "unknown" | "build-running" | "stim-server";
487
+ interface MemoryProcess {
488
+ kind: "watchman" | "gradleDaemon" | "kotlinDaemon";
489
+ cacheKind: MemoryCacheKind;
490
+ pid: number;
491
+ startedAt: string | null;
492
+ bytes: number;
493
+ measure: "footprint" | "rss";
494
+ version: string | null;
495
+ gradleHome: string | null;
496
+ offloadClient: string | null;
497
+ state: "idle" | "busy" | "unknown";
498
+ reclaimable: boolean;
499
+ reason: MemoryKeptCode | null;
500
+ detail: string | null;
501
+ }
502
+ type WatchmanRootStale = "missing" | "pruned-worktree";
503
+ interface WatchmanRoot {
504
+ path: string;
505
+ stale: WatchmanRootStale | null;
506
+ subscriptions: number | null;
507
+ triggers: number | null;
508
+ removable: boolean;
509
+ detail: string | null;
510
+ }
511
+ //#endregion
512
+ //#region src/commands/gc/report.d.ts
513
+ interface GcJsonLock {
514
+ path: string;
515
+ platform: string;
516
+ key: string | null;
517
+ pid: number | null;
518
+ projectRoot: string | null;
519
+ }
520
+ /** The `gc --json` sections, in text report order. Sections contain entries or a report-only usage payload. */
521
+ interface GcJsonSections {
522
+ archived?: ArchiveSelection["records"];
523
+ archiveStaging?: ArchiveSelection["staging"];
524
+ deadProjects: {
525
+ path: string;
526
+ }[];
527
+ invalidProjects: {
528
+ path: string;
529
+ }[];
530
+ orphanedPorts: {
531
+ project: string;
532
+ label: string;
533
+ port: number;
534
+ }[];
535
+ orphanedWorkspaces: {
536
+ dir: string;
537
+ projectRoot: string;
538
+ bytes: number | null;
539
+ }[];
540
+ linkedWorktrees: {
541
+ path: string;
542
+ idleDays: number | null;
543
+ mergedInto: string | null;
544
+ pullRequest: {
545
+ number: number;
546
+ state: "open" | "merged" | "closed";
547
+ url: string;
548
+ containsHead: boolean;
549
+ } | null;
550
+ pullRequestUnknown: string | null;
551
+ willRemove: boolean;
552
+ reason: WorktreeSkipCode | null;
553
+ detail: string;
554
+ eligibleAt: string | null;
555
+ buildState: WorktreeBuildState | null;
556
+ }[];
557
+ unlistedWorktreeDirectories: {
558
+ path: string;
559
+ repository: string;
560
+ bytes: number | null;
561
+ remedy: string;
562
+ }[];
563
+ parkedSimulators: ParkedSimReport[];
564
+ parkedEmulators: ParkedAvdReport[];
565
+ parkedHostedDevices: ParkedHostedDeviceReport[];
566
+ orphanedDevices: {
567
+ kind: "ios" | "android";
568
+ id: string;
569
+ name: string;
570
+ bytes: number | null;
571
+ directory: string | null;
572
+ }[];
573
+ unverifiedDevices: {
574
+ kind: "ios" | "android";
575
+ id: string;
576
+ name: string;
577
+ command: string;
578
+ }[];
579
+ staleDevices: {
580
+ kind: "ios" | "android";
581
+ id: string;
582
+ name: string;
583
+ project: string;
584
+ slot: string | null;
585
+ idleDays: number;
586
+ bytes: number | null;
587
+ }[];
588
+ finishedDevices: {
589
+ kind: "ios" | "android";
590
+ id: string;
591
+ name: string;
592
+ project: string;
593
+ slot: string | null;
594
+ bytes: number | null;
595
+ reason: string;
596
+ }[];
597
+ ownedDeviceDisk: OwnedDeviceDisk[];
598
+ staleDeviceRecords: {
599
+ kind: "ios" | "android";
600
+ id: string;
601
+ project: string;
602
+ slot: string | null;
603
+ }[];
604
+ staleLedgerEntries: {
605
+ kind: "ios" | "android" | "web";
606
+ id: string;
607
+ }[];
608
+ staleEasLedgerEntries: {
609
+ id: string;
610
+ workspaceRoot: string;
611
+ }[];
612
+ staleStatusCaches: {
613
+ kind: "disk-usage" | "pull-request";
614
+ path: string;
615
+ file: string;
616
+ bytes: number;
617
+ }[];
618
+ idleDevices: IdleDevice[];
619
+ orphanedEasSessions: {
620
+ id: string;
621
+ name: string;
622
+ platform: "ios" | "android";
623
+ status: string;
624
+ projectScope: string;
625
+ }[];
626
+ staleBuildLocks: GcJsonLock[];
627
+ staleBuildSlots: {
628
+ path: string;
629
+ index: number | null;
630
+ pid: number | null;
631
+ projectRoot: string | null;
632
+ }[];
633
+ unresolvedBuildClaims: {
634
+ kind: "lock" | "slot";
635
+ path: string;
636
+ }[];
637
+ buildsInProgress: GcJsonLock[];
638
+ expiredDeviceLeases: {
639
+ path: string;
640
+ platform: string;
641
+ id: string;
642
+ deviceName: string | null;
643
+ holder: string | null;
644
+ expiresAt: string | null;
645
+ }[];
646
+ keptDeviceLeases: {
647
+ name: string;
648
+ path: string;
649
+ detail: string;
650
+ }[];
651
+ deviceSweepNotices: {
652
+ message: string;
653
+ }[];
654
+ easSessionSweepNotices: {
655
+ message: string;
656
+ }[];
657
+ skipped: {
658
+ path: string;
659
+ detail: string;
660
+ }[];
661
+ workspaceLogs: {
662
+ dir: string;
663
+ projectRoot: string | null;
664
+ bytes: number;
665
+ trimBytes: number;
666
+ willTrim: boolean;
667
+ reason: WorkspaceLogsKeptCode | null;
668
+ detail: string | null;
669
+ }[];
670
+ recordings: {
671
+ dir: string;
672
+ projectRoot: string | null;
673
+ bytes: number;
674
+ deleteBytes: number;
675
+ willDelete: boolean;
676
+ withWorkspace: boolean;
677
+ reason: RecordingKeptCode | null;
678
+ detail: string | null;
679
+ }[];
680
+ workspaceBuildOutputs: {
681
+ dir: string;
682
+ projectRoot: string | null;
683
+ bytes: number | null;
684
+ idleDays: number | null;
685
+ willClear: boolean;
686
+ reason: WorkspaceKeptCode | null;
687
+ detail: string | null;
688
+ }[];
689
+ agentDevice: AgentDeviceUsage | null;
690
+ swiftpmCache: SwiftpmCacheUsage | null;
691
+ machineCaches: MachineCacheReport | null;
692
+ tempLeftovers: ReturnType<typeof tempLeftoverSection>;
693
+ gradleVersions: GradleVersionSweep | null;
694
+ caches: {
695
+ name: string;
696
+ dir: string;
697
+ source: "registered" | "detected" | null;
698
+ bytes: number | null;
699
+ note: string | null;
700
+ willEmpty: boolean;
701
+ emptySkipped: string | null;
702
+ scopedEmpty: {
703
+ willEmpty: boolean;
704
+ emptySkipped: string | null;
705
+ } | null;
706
+ }[];
707
+ memory: MemoryProcess[];
708
+ watchmanRoots: WatchmanRoot[];
709
+ memoryNotices: {
710
+ message: string;
711
+ }[];
712
+ }
713
+ //#endregion
714
+ //#region src/commands/gc/inventory.d.ts
715
+ /**
716
+ * Who a simulator or AVD belongs to: a workspace of this Stim home, this home's parked pool, this home
717
+ * with no workspace left, a `stim-*` device this home has no record of creating, or the user.
718
+ */
719
+ type InventoryOwner = "workspace" | "parked" | "orphaned" | "otherStimHome" | "user";
720
+ interface InventoryDevice {
721
+ kind: "ios" | "android";
722
+ id: string;
723
+ name: string;
724
+ model: string | null;
725
+ runtime: string | null;
726
+ state: string | null;
727
+ lastUsedAt: string | null;
728
+ bytes: number | null;
729
+ directory: string | null;
730
+ owner: InventoryOwner;
731
+ project: string | null;
732
+ slot: string | null;
733
+ }
734
+ interface InventoryRuntime {
735
+ identifier: string;
736
+ runtimeIdentifier: string | null;
737
+ version: string | null;
738
+ build: string | null;
739
+ bytes: number | null;
740
+ lastUsedAt: string | null;
741
+ deviceCount: number;
742
+ command: string | null;
743
+ }
744
+ interface InventorySystemImage {
745
+ package: string;
746
+ directory: string;
747
+ avdCount: number;
748
+ command: string;
749
+ }
750
+ interface GcInventory {
751
+ devices: InventoryDevice[];
752
+ runtimes: InventoryRuntime[];
753
+ systemImages: InventorySystemImage[];
754
+ notices: string[];
755
+ }
756
+ //#endregion
757
+ //#region src/commands/gc.d.ts
758
+ interface RunGcOptions {
759
+ idle?: number;
760
+ olderThan?: number;
761
+ cache?: string;
762
+ delete?: boolean;
763
+ worktrees?: boolean;
764
+ json?: boolean;
765
+ }
766
+ interface GcRefusal {
767
+ code: string;
768
+ message: string;
769
+ remedy: string;
770
+ }
771
+ type GcPayload = {
772
+ mode: "dry-run" | "delete";
773
+ idle: number | null;
774
+ cacheScope: string | null;
775
+ olderThan: number | null;
776
+ worktreeSweep: {
777
+ olderThan: number;
778
+ defaulted: boolean;
779
+ } | null;
780
+ actionable: boolean;
781
+ failures: number | null;
782
+ sections: GcJsonSections;
783
+ maintenance?: MaintenancePreview;
784
+ results: GcResult[];
785
+ inventory: GcInventory | null;
786
+ } | GcRefusal;
787
+ type GcReadOptions = Pick<RunGcOptions, "olderThan" | "cache" | "worktrees">;
788
+ //#endregion
789
+ //#region src/commands/reload.d.ts
790
+ type ReloadPlatform = WorkspaceLaunchPlatform | "web";
791
+ interface ReloadFacts {
792
+ platform: ReloadPlatform;
793
+ deviceId: string;
794
+ deviceName: string;
795
+ appId: string;
796
+ metroPort: number | null;
797
+ strategy: "metro-websocket" | "metro-broadcast" | "cdp";
798
+ targets: number | null;
799
+ reverseRestored: string[];
800
+ }
801
+ //#endregion
167
802
  //#region src/api/types.d.ts
168
803
  type StimPlatform = "ios" | "android" | "macos" | "web";
169
804
  interface StimProgress {
@@ -173,8 +808,10 @@ interface StimProgress {
173
808
  interface StimOptions {
174
809
  /** Absolute or relative path to the app directory, resolved once when creating the client. */
175
810
  projectRoot: string;
176
- /** Absolute Stim state directory. Omit to use the caller's STIM_HOME or the default home. */
811
+ /** Absolute Stim state directory. Omit to use STIM_HOME from `env` or the default home. */
177
812
  home?: string;
813
+ /** Environment Stim reads its settings overrides from and passes to its child processes. Defaults to the caller's `process.env`. */
814
+ env?: NodeJS.ProcessEnv;
178
815
  /** Absolute native artifact cache directory. Its coordinating home must be shared by all writers. */
179
816
  buildCache?: string;
180
817
  /**
@@ -183,30 +820,7 @@ interface StimOptions {
183
820
  */
184
821
  onProgress?: (event: StimProgress) => void;
185
822
  }
186
- interface NativeRunOptions {
187
- slot?: string;
188
- metroCheck?: boolean;
189
- buildCache?: boolean;
190
- remoteBuild?: string;
191
- }
192
- type StimRunOptions = ((NativeRunOptions & {
193
- platform: "ios";
194
- configuration?: string;
195
- scheme?: string;
196
- deviceType?: string;
197
- runtime?: string;
198
- }) | (NativeRunOptions & {
199
- platform: "android";
200
- variant?: string;
201
- systemImage?: string;
202
- deviceProfile?: string;
203
- }) | {
204
- platform: "macos";
205
- remoteBuild?: string;
206
- } | {
207
- platform: "web";
208
- headed?: boolean;
209
- }) & {
823
+ type StimRunOptions = PlatformRunOptions & {
210
824
  signal?: AbortSignal;
211
825
  };
212
826
  type StimRunResult = {
@@ -223,7 +837,7 @@ type StimRunResult = {
223
837
  bundleId: string;
224
838
  executable: string;
225
839
  pid: number | null;
226
- launched: boolean;
840
+ launched: boolean | "unverified";
227
841
  build: MacosBuild;
228
842
  logs: {
229
843
  dir: string;
@@ -255,8 +869,26 @@ type StimBuildResult = {
255
869
  interface StimStopOptions {
256
870
  slot?: string;
257
871
  signal?: AbortSignal;
872
+ /** Runs once with the resolved workspace before teardown; throwing refuses the operation. */
873
+ beforeStop?: (workspace: string) => void;
258
874
  }
259
875
  type StimStopResult = StopResult;
876
+ interface StimStartOptions {
877
+ remote?: boolean;
878
+ resetCache?: boolean;
879
+ waitSeconds?: number;
880
+ signal?: AbortSignal;
881
+ /** Runs once with the resolved app before usage recording or startup; throwing refuses the operation. */
882
+ beforeStart?: (workspace: string) => void;
883
+ }
884
+ type StimStartResult = StartFacts;
885
+ interface StimReloadOptions {
886
+ platform?: ReloadPlatform;
887
+ signal?: AbortSignal;
888
+ /** Runs once with the resolved workspace before usage recording or a reload; throwing refuses the operation. */
889
+ beforeReload?: (workspace: string) => void;
890
+ }
891
+ type StimReloadResult = ReloadFacts;
260
892
  interface StimDiagnosticsOptions {
261
893
  /** Maximum number of records, default 200. Zero returns paths without records. */
262
894
  tail?: number;
@@ -267,8 +899,98 @@ interface StimDiagnostics {
267
899
  directory: string;
268
900
  records: NdjsonRecord[];
269
901
  }
902
+ interface StimLogsOptions {
903
+ slot?: string;
904
+ sources?: string[];
905
+ minLevel?: string;
906
+ since?: string;
907
+ grep?: string;
908
+ tail?: number;
909
+ errorsOnly?: boolean;
910
+ signal?: AbortSignal;
911
+ }
912
+ interface StimReadOptions {
913
+ signal?: AbortSignal;
914
+ }
915
+ type StimPlanOptions = ({
916
+ platform: "ios" | "android";
917
+ slot?: string;
918
+ } | {
919
+ platform: "macos";
920
+ }) & StimReadOptions;
921
+ type StimPlan = BuildPlanPayload | MacosBuildPlanPayload;
922
+ interface StimDoctorOptions extends StimReadOptions {
923
+ platform?: "ios" | "android";
924
+ /** Records completed iOS/Android checks in project state. Defaults to false for report-only reads. */
925
+ record?: boolean;
926
+ }
927
+ interface StimMachineAccessOptions extends StimReadOptions {
928
+ /** The setup ticket generated by the caller. Omit to reuse or generate tickets for the configured machines. */
929
+ ticket?: string;
930
+ }
931
+ type StimDoctorReport = DoctorReport;
932
+ type StimGcOptions = GcReadOptions & StimReadOptions;
933
+ type StimGcReport = Exclude<GcPayload, {
934
+ code: string;
935
+ }>;
936
+ type StimGcMutationOptions = StimGcOptions & {
937
+ delete?: boolean;
938
+ /** Shuts down owned devices idle for at least this many milliseconds, including without `delete`. */
939
+ idleMs?: number;
940
+ };
941
+ interface StimGcMutationResult {
942
+ report: StimGcReport;
943
+ exitCode: 0 | 1;
944
+ }
945
+ interface StimWorktreeWarmOptions extends StimReadOptions {
946
+ /** Called for each canonical workspace in the resolved warming scope before effects; throwing refuses warming. */
947
+ beforeWarm?: (workspace: string) => void;
948
+ }
949
+ interface StimWorktreeWarmResult {
950
+ exitCode: 0 | 1;
951
+ }
952
+ interface StimWorktreeRemoveOptions extends StimReadOptions {
953
+ /** Called for each canonical workspace in the resolved cleanup scope before effects; throwing refuses cleanup. */
954
+ beforeRemove?: (workspace: string) => void;
955
+ /** Defaults to the client's projectRoot. Relative paths resolve against that directory. */
956
+ target?: string;
957
+ /** Allows removal with uncommitted or unpushed work or initialized submodules, as CLI --force does. */
958
+ force?: boolean;
959
+ }
960
+ interface StimWorktreeRemoveResult {
961
+ /** True once the linked Git worktree is removed, even if later branch cleanup fails. */
962
+ removed: boolean;
963
+ /** Source checkout environment cleanup can succeed without removing the checkout. */
964
+ exitCode: 0 | 1;
965
+ }
966
+ type StimSettings = SettingsPayload;
967
+ type StimSettingWriteResult = SettingWriteResult;
968
+ interface StimSettingWriteOptions extends StimReadOptions {
969
+ scope?: SettingScope;
970
+ /** Runs once with the resolved workspace before mutation; throwing refuses the write. */
971
+ beforeWrite?: (workspace: string | null) => void;
972
+ }
973
+ type StimStats = StatsReport;
270
974
  interface StimClient {
271
975
  readonly projectRoot: string;
976
+ /** Starts or reuses the app's dev server; resources remain workspace-owned until stop is called. */
977
+ start(options?: StimStartOptions): Promise<StimStartResult>;
978
+ /** Returns this home's persistent nonsecret identity, initializing it under the config lock on first use. */
979
+ identity(options?: StimReadOptions): Promise<string>;
980
+ /** Reads findings with a 60 second execution and 35 second cleanup budget. Never repairs; records a completed check only with `record: true`. */
981
+ doctor(options?: StimDoctorOptions): Promise<StimDoctorReport>;
982
+ /** Requests build/device-host approval with a 120 second execution and 35 second cleanup budget. Never grants access or repairs project state. */
983
+ requestMachineAccess(options?: StimMachineAccessOptions): Promise<StimDoctorReport>;
984
+ /** Predicts the configured native build with a 60 second execution and 35 second cleanup budget; never builds or launches. */
985
+ plan(options: StimPlanOptions): Promise<StimPlan>;
986
+ /** Reads the GC dry-run report with a 60 second execution and 35 second cleanup budget. Never deletes, repairs or shuts down idle resources. */
987
+ gc(options?: StimGcOptions): Promise<StimGcReport>;
988
+ /** Executes requested GC actions, preserving partial results and waiting for owned cleanup before releasing maintenance admission. */
989
+ collectGarbage(options?: StimGcMutationOptions): Promise<StimGcMutationResult>;
990
+ /** Copies missing ignored state from the source checkout into this linked worktree. */
991
+ warmWorktree(options?: StimWorktreeWarmOptions): Promise<StimWorktreeWarmResult>;
992
+ /** Removes a linked worktree or reclaims a source checkout's environment using the CLI safety checks. */
993
+ removeWorktree(options?: StimWorktreeRemoveOptions): Promise<StimWorktreeRemoveResult>;
272
994
  /** Builds an artifact without acquiring a device or starting a runtime. */
273
995
  build<P extends StimBuildOptions["platform"]>(options: StimBuildOptions & {
274
996
  platform: P;
@@ -284,8 +1006,29 @@ interface StimClient {
284
1006
  run(options: StimRunOptions): Promise<StimRunResult>;
285
1007
  /** Stops this workspace, including resources created before a failed run. Use a fresh signal for cleanup. */
286
1008
  stop(options?: StimStopOptions): Promise<StimStopResult>;
287
- /** Reads the existing local timeline; available even when run failed before creating any logs. */
1009
+ /** Requests a JavaScript or owned Chrome reload. Completion is not observed; cancellation cannot undo a sent request. */
1010
+ reload(options?: StimReloadOptions): Promise<StimReloadResult>;
1011
+ /** Reads the existing local timeline in process; available even when run failed before creating any logs. */
288
1012
  diagnostics(options?: StimDiagnosticsOptions): Promise<StimDiagnostics>;
1013
+ /**
1014
+ * Every setting with its effective value, origin and per-layer values for this project, as `stim settings --json`
1015
+ * prints them. Runs in the calling process without blocking its event loop on child processes.
1016
+ */
1017
+ settings(options?: StimReadOptions): Promise<StimSettings>;
1018
+ /** Writes CLI text (including JSON for object/array settings) to one layer; returned sensitive values are masked. */
1019
+ setSetting(key: string, value: string, options?: StimSettingWriteOptions): Promise<StimSettingWriteResult>;
1020
+ /** Removes one layer value. Cancellation prevents a pending write; committed writes finish recording cleanup. */
1021
+ unsetSetting(key: string, options?: StimSettingWriteOptions): Promise<StimSettingWriteResult>;
1022
+ /**
1023
+ * Run and build-cache counts for this project and machine, build placement and the last recorded agent-device and
1024
+ * SwiftPM cache usage, as `stim stats --json` prints them except that the usage figures are not measured again.
1025
+ * Runs in the calling process without blocking its event loop on child processes.
1026
+ */
1027
+ stats(options?: StimReadOptions): Promise<StimStats>;
1028
+ /** Reads the merged raw log timeline, including native crashes and agent actions, as `stim logs --json`. */
1029
+ logs(options?: StimLogsOptions): Promise<NdjsonRecord[]>;
1030
+ /** Emits backfill, then appended records until stopped or aborted. With onBackfill, initial batches are awaited there instead. */
1031
+ followLogs(options: StimLogsOptions, onRecord: (record: NdjsonRecord) => void, onBackfill?: (records: readonly NdjsonRecord[]) => Promise<void>): Promise<() => void>;
289
1032
  }
290
1033
  interface StimFailure {
291
1034
  code: string;
@@ -301,12 +1044,15 @@ declare class StimError extends Error {
301
1044
  readonly details: unknown;
302
1045
  constructor({ code, message, remedy, details }: Omit<StimFailure, "remedy"> & {
303
1046
  remedy?: string | null;
304
- });
1047
+ }, options?: ErrorOptions);
305
1048
  }
306
1049
  /**
307
1050
  * Creates a client without starting processes or changing the caller's cwd, environment, or signal handlers.
308
- * Each operation runs in a separate Stim worker. Resources remain workspace-owned until stop() is called.
1051
+ * The Stim home is fixed when the client is created: `home`, else STIM_HOME from `env`, else the default home.
1052
+ * Operations run in the calling process against the client's home and project, so clients for different
1053
+ * homes can share a process.
1054
+ * Resources remain workspace-owned until stop() is called.
309
1055
  */
310
1056
  declare function createStim(options: StimOptions): StimClient;
311
1057
  //#endregion
312
- export { type StimBuildOptions, type StimBuildResult, type StimClient, type StimDiagnostics, type StimDiagnosticsOptions, StimError, type StimOptions, type StimPlatform, type StimProgress, type StimRunOptions, type StimRunResult, type StimStopOptions, type StimStopResult, createStim };
1058
+ export { type StimBuildOptions, type StimBuildResult, type StimClient, type StimDiagnostics, type StimDiagnosticsOptions, type StimDoctorOptions, type StimDoctorReport, StimError, type StimGcMutationOptions, type StimGcMutationResult, type StimGcOptions, type StimGcReport, type StimLogsOptions, type StimMachineAccessOptions, type StimOptions, type StimPlan, type StimPlanOptions, type StimPlatform, type StimProgress, type StimReadOptions, type StimReloadOptions, type StimReloadResult, type StimRunOptions, type StimRunResult, type StimSettingWriteOptions, type StimSettingWriteResult, type StimSettings, type StimStartOptions, type StimStartResult, type StimStats, type StimStopOptions, type StimStopResult, type StimWorktreeRemoveOptions, type StimWorktreeRemoveResult, type StimWorktreeWarmOptions, type StimWorktreeWarmResult, createStim };