stim 1.32.0 → 1.34.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 (173) hide show
  1. package/dist/{acquire-artifact-CI9fIokp.mjs → acquire-artifact-B0SWoVNt.mjs} +2 -2
  2. package/dist/{act-BfChMxcU.mjs → act-7f7wIvCQ.mjs} +22 -22
  3. package/dist/{activity-yjH7Q3zn.mjs → activity-DkS-Ir6V.mjs} +6 -6
  4. package/dist/{agent-device-usage-output-DO412bsG.mjs → agent-device-usage-output-BVdgKbfz.mjs} +5 -5
  5. package/dist/{android-BeeC15Ve.mjs → android-B2DSKg-A.mjs} +2 -2
  6. package/dist/{android-D56S_GX3.mjs → android-BU4uBX8I.mjs} +5 -5
  7. package/dist/{android-BNm5A40S.mjs → android-D7qjT2fq.mjs} +87 -53
  8. package/dist/{android-DsEj2CCs.mjs → android-Iq0M2t2d.mjs} +27 -15
  9. package/dist/{android-cas-CbumHXIq.mjs → android-cas-Dhcjkys1.mjs} +4 -4
  10. package/dist/android-cas-compiler.mjs +1 -1
  11. package/dist/android-image-DFk26aY6.mjs +254 -0
  12. package/dist/{android-project-CCEQyYJK.d.mts → android-project-DhO6el8N.d.mts} +2 -2
  13. package/dist/api.d.mts +2 -1
  14. package/dist/api.mjs +28 -28
  15. package/dist/{apk-signed-tail-B9Usseps.mjs → apk-signed-tail-CPpA-3vu.mjs} +2 -2
  16. package/dist/{artifact-k1x9Jrn0.mjs → artifact-CNnTZs3R.mjs} +34 -21
  17. package/dist/{artifact-C8Nvp07y.mjs → artifact-DmRtKFXW.mjs} +13 -13
  18. package/dist/{artifact-platform-BO2Uvk_A.mjs → artifact-platform-DqCWUieN.mjs} +1 -1
  19. package/dist/{auto-placement--nfdQ9rp.mjs → auto-placement-DA65VQH7.mjs} +11 -9
  20. package/dist/{browser-web-6RDAeH0z.mjs → browser-web-Dn_hgKZC.mjs} +15 -15
  21. package/dist/{build-VXX_dtl5.mjs → build-D7SuVoRX.mjs} +23 -23
  22. package/dist/build-artifact-cache-D7B6seMj.mjs +174 -0
  23. package/dist/build-artifact-cache.d.mts +25 -0
  24. package/dist/build-artifact-cache.mjs +2 -0
  25. package/dist/{build-cache-BsKim4V7.mjs → build-cache-Cqj4FGnX.mjs} +20 -8
  26. package/dist/{build-plan-BK34X2iY.mjs → build-plan-Ct1FiA3E.mjs} +7 -7
  27. package/dist/{cache-manifest-CfiEny4T.mjs → cache-manifest-8JX9S1QJ.mjs} +1 -1
  28. package/dist/cache-manifest.mjs +1 -1
  29. package/dist/{ccache-BrwGIxmV.mjs → ccache-ChBMXlBq.mjs} +35 -67
  30. package/dist/{cdp-C3svvXiE.mjs → cdp-C216kOAn.mjs} +1 -1
  31. package/dist/{chrome-DyDWurWG.mjs → chrome-C8sC5tdl.mjs} +1 -1
  32. package/dist/{cli-Jc7obreB.mjs → cli-DjdvQG5U.mjs} +20 -20
  33. package/dist/cli.mjs +1 -1
  34. package/dist/{client-lDmA-5jx.mjs → client-kU37gURU.mjs} +70 -13
  35. package/dist/collector-run.mjs +7 -7
  36. package/dist/{command-output-CfPW1bKP.mjs → command-output-DjExb_tZ.mjs} +1 -1
  37. package/dist/{config-D5qNWJEP.mjs → config-BW0fAtoK.mjs} +256 -246
  38. package/dist/{dependencies-DkZ8681S.mjs → dependencies-CZ7c8XX_.mjs} +39 -39
  39. package/dist/{dependency-state-DZVln1P9.mjs → dependency-state-mL5g4H6K.mjs} +2 -2
  40. package/dist/{detached-entry-BPlSaCwC.mjs → detached-entry-tfrgGVWb.mjs} +1 -1
  41. package/dist/{dev-client-eDZy6RoX.mjs → dev-client-D3wOllNd.mjs} +2 -2
  42. package/dist/{device-CeIikWac.mjs → device-CWPFAqs0.mjs} +13 -13
  43. package/dist/{device-CTozKhU0.mjs → device-DH5yf6TU.mjs} +11 -11
  44. package/dist/{device-android-zgD9We85.mjs → device-android-ChfF5I9A.mjs} +10 -10
  45. package/dist/{device-capacity-Bki6B-7h.mjs → device-capacity-CHC3dKWg.mjs} +9 -9
  46. package/dist/device-host-worker.mjs +58 -17
  47. package/dist/{device-ios-TE5ejeXx.mjs → device-ios-B3-Ah--R.mjs} +9 -9
  48. package/dist/{device-lease-run-DeNGjJZM.mjs → device-lease-run-i3FNX4OE.mjs} +5 -5
  49. package/dist/{device-pool-mjyUYaau.mjs → device-pool-EZziQ0uS.mjs} +3 -3
  50. package/dist/{device-provision-j_B7G0e6.mjs → device-provision-CfpEy-Vm.mjs} +10 -10
  51. package/dist/{doctor-sSLtn-j1.mjs → doctor-B5uEZiKp.mjs} +30 -17
  52. package/dist/{doctor-CNZuvTSe.mjs → doctor-CGBsS_68.mjs} +1 -1
  53. package/dist/{doctor-BlrcoQ7B.mjs → doctor-dwRboaXx.mjs} +54 -25
  54. package/dist/{doctor-fingerprint-o7ZI9YLn.mjs → doctor-fingerprint-DqWvIhMb.mjs} +1 -1
  55. package/dist/doctor-fingerprint.mjs +1 -1
  56. package/dist/{doctor-watchman-CCuboyj1.mjs → doctor-watchman-r7M9UPi0.mjs} +5 -5
  57. package/dist/{eas-build-CaG-Sfs9.mjs → eas-build-BpHIt_M3.mjs} +4 -4
  58. package/dist/{eas-fallback-BpX1lpco.mjs → eas-fallback-CNPcjq3K.mjs} +6 -6
  59. package/dist/{eas-session-ledger-B-nTfdfk.mjs → eas-session-ledger-CXwagcQ7.mjs} +6 -6
  60. package/dist/{error-diagnostics-q56Im4D8.mjs → error-diagnostics-Ym2mjmJ0.mjs} +10 -10
  61. package/dist/{exec-aULwtNly.mjs → exec-CGuDzt40.mjs} +103 -103
  62. package/dist/{gc-By2Kc-Ek.mjs → gc-B464w_a5.mjs} +2 -2
  63. package/dist/{gc-Dv6nb9nf.mjs → gc-C7YxKNci.mjs} +25 -54
  64. package/dist/{guide-CwpsGWTJ.mjs → guide-BFW-cB7R.mjs} +141 -44
  65. package/dist/{hosted-android-c5nPJA6S.mjs → hosted-android-B7yfqXEy.mjs} +4 -4
  66. package/dist/{hosted-client-Hs-fD4L3.mjs → hosted-client-CQuzZwAu.mjs} +6 -5
  67. package/dist/{hosted-logs-BteXG8rm.mjs → hosted-logs-DfYCqrrR.mjs} +7 -7
  68. package/dist/{hosted-logs-sync-B8bjLEMs.mjs → hosted-logs-sync-Dlpa2mQF.mjs} +5 -5
  69. package/dist/{hosted-macos-B4byscei.mjs → hosted-macos-JKefapEm.mjs} +6 -6
  70. package/dist/{hosted-native-Bh9IJ_t5.mjs → hosted-native-B7OFt5gB.mjs} +14 -10
  71. package/dist/{idle-shutdown-BaeCo4ps.mjs → idle-shutdown-DPD8oV36.mjs} +6 -6
  72. package/dist/{ios-CdAV4-1E.mjs → ios-BdZdNsAj.mjs} +6 -6
  73. package/dist/{ios-D3oK9-O4.mjs → ios-DSBs9c6d.mjs} +28 -28
  74. package/dist/{ios-CsRVik64.mjs → ios-Qam0bT9n.mjs} +1 -1
  75. package/dist/{ios-device-CiBA-er9.mjs → ios-device-DLdEDWJj.mjs} +1 -1
  76. package/dist/{ios-device-D7Gi3e1I.mjs → ios-device-Drplrgzo.mjs} +3 -3
  77. package/dist/{ios-project-DDQlX_jX.mjs → ios-project-DoTQYghg.mjs} +7 -7
  78. package/dist/{ios-D1XKSITX.mjs → ios-sUPbWqEh.mjs} +8 -8
  79. package/dist/ios-signing-R34vbrNU.mjs +202 -0
  80. package/dist/{ios-state-BEIJRJ7P.mjs → ios-state-CWsBysyN.mjs} +1 -1
  81. package/dist/{js-swap-C8N5DXHl.mjs → js-swap-DrokhOfo.mjs} +6 -6
  82. package/dist/{launch-DxpvL6il.mjs → launch-Cy-MWEZc.mjs} +20 -20
  83. package/dist/{lightened-Df6II_XI.mjs → lightened-ALwQcQtV.mjs} +5 -5
  84. package/dist/{logs-zv3ge7c6.mjs → logs-DWT7jGpF.mjs} +6 -6
  85. package/dist/{logs-CuWJWF88.mjs → logs-DuED-01Z.mjs} +7 -7
  86. package/dist/{macos-C6U-4Iip.mjs → macos-CtBtA_hW.mjs} +22 -22
  87. package/dist/{macos-CbRZheLw.mjs → macos-kWGcfLzx.mjs} +1 -1
  88. package/dist/macos-run.mjs +1 -1
  89. package/dist/maintenance-run.mjs +6 -6
  90. package/dist/{metro-mKHEMO-a.mjs → metro-B5PVz0Wv.mjs} +4 -4
  91. package/dist/{metro-request-DODHNXCN.mjs → metro-request-2LmFpC1z.mjs} +2 -2
  92. package/dist/{named-ports-B0hCk2v-.mjs → named-ports-CA0nB9Yw.mjs} +3 -3
  93. package/dist/{native-android-9dVFqvTT.mjs → native-android-tISP2EVp.mjs} +29 -19
  94. package/dist/{native-gradle-artifact-inputs-BlY97pt8.mjs → native-gradle-artifact-inputs-DVoeZkrw.mjs} +5 -5
  95. package/dist/{native-runtime-DQfxW5Au.mjs → native-runtime-CNgxeOCG.mjs} +6 -6
  96. package/dist/{native-source-D1AzWiuP.mjs → native-source-ChAGj7R1.mjs} +1 -1
  97. package/dist/{native-xcode-inputs-tDuUvSU8.mjs → native-xcode-inputs-DGzkhpu4.mjs} +3 -3
  98. package/dist/{native-xcode-ios-CG-PD-7g.mjs → native-xcode-ios-B9nsfId2.mjs} +17 -17
  99. package/dist/offload-worker.d.mts +8 -1
  100. package/dist/offload-worker.mjs +62 -23
  101. package/dist/{operation-exec-Dp4FuIGR.mjs → operation-exec-DKlBcKAL.mjs} +1 -1
  102. package/dist/{ownership-CCfiBfOP.mjs → ownership-hC7xvvxF.mjs} +3 -3
  103. package/dist/{page-CQJlcj3x.mjs → page-Dj8IqvGM.mjs} +2 -2
  104. package/dist/{phone-reverses-CnNwdz9A.mjs → phone-reverses-Bo0EzJ-P.mjs} +4 -4
  105. package/dist/{placement-log-CRL0IY-k.mjs → placement-log-BsGvKLtU.mjs} +1 -1
  106. package/dist/{plan-placement-2imvnlWP.mjs → plan-placement-Am0IjuxB.mjs} +6 -6
  107. package/dist/{ports-CKktj5lV.mjs → ports-CNzg1LYD.mjs} +3 -3
  108. package/dist/{prebuild-CyNrUWgV.mjs → prebuild-BfJII57G.mjs} +12 -12
  109. package/dist/{project-Crtcbfl0.mjs → project-DU3jjnBE.mjs} +16 -16
  110. package/dist/{pull-request-BzLmzAIQ.mjs → pull-request-BpMTNkMB.mjs} +2 -2
  111. package/dist/pull-requests.mjs +1 -1
  112. package/dist/{react-native-android-Cabe2YER.mjs → react-native-android-3dZiJv-4.mjs} +37 -33
  113. package/dist/{react-native-build-DhWBUV_H.mjs → react-native-build-CuvNPt-q.mjs} +10 -10
  114. package/dist/{react-native-doctor-D-twmBon.mjs → react-native-doctor-a35BwMUO.mjs} +6 -6
  115. package/dist/{react-native-ios-u_ley41B.mjs → react-native-ios-CqnReM1t.mjs} +22 -17
  116. package/dist/{recordings-BWnIlhZH.mjs → recordings-AKZfsW2W.mjs} +1 -1
  117. package/dist/{registration-BwCe64PH.mjs → registration-DKjJGQ6p.mjs} +1 -1
  118. package/dist/{reload-D2TpUlns.mjs → reload-CC3sNo10.mjs} +17 -17
  119. package/dist/{reload-f9hvEHE9.mjs → reload-YPnvXGlB.mjs} +1 -1
  120. package/dist/{remote-BsBAjlD2.mjs → remote-BfaIHnhM.mjs} +9 -9
  121. package/dist/{result-EOsWV6sp.mjs → result-H-AxY7Ud.mjs} +24 -20
  122. package/dist/{run-2CHAJ9Oj.mjs → run-N-BbRxnC.mjs} +2 -2
  123. package/dist/{selection-C4ZQz_ER.mjs → selection-CH-MUVGD.mjs} +5 -4
  124. package/dist/{server-bare-CFyVFZXJ.mjs → server-bare-BTlICuaX.mjs} +2 -2
  125. package/dist/{server-command-BMyKtnjH.mjs → server-command-Bn_gOObU.mjs} +5 -5
  126. package/dist/server-expo-B59N16uT.mjs +2 -0
  127. package/dist/{server-expo-BLxcN2x2.mjs → server-expo-CUJ2fuv1.mjs} +3 -3
  128. package/dist/{settings-C6UTYW2K.mjs → settings-B5IBDfTx.mjs} +4 -4
  129. package/dist/{settings-jeS0WmUF.mjs → settings-DoWHJopy.mjs} +2 -2
  130. package/dist/{settings-payload-CrX933Xi.mjs → settings-payload-Bxw3hid5.mjs} +5 -5
  131. package/dist/{settings-write-DMcT23Kl.mjs → settings-write-C6d7EC54.mjs} +6 -6
  132. package/dist/settings.schema.json +38 -0
  133. package/dist/{simslim-93xmPh-d.mjs → simslim-DKdJx0LL.mjs} +2 -2
  134. package/dist/{slot-launch-CSpQcFZw.mjs → slot-launch-kq0-7w9C.mjs} +6 -6
  135. package/dist/{stage-Cf9uSM1a.mjs → stage-CBfMTUK3.mjs} +2 -2
  136. package/dist/{start-CquYgzVf.mjs → start-Diu8q6_U.mjs} +1 -1
  137. package/dist/{start-CLN_r9EG.mjs → start-WTMumMHi.mjs} +12 -12
  138. package/dist/{state-CM_HvvkS.mjs → state-CtmYTRWm.mjs} +4 -4
  139. package/dist/{state-CiflgxTP.mjs → state-DSOUqO-o.mjs} +2 -2
  140. package/dist/{stats-BVEZuSlg.mjs → stats-D4cW247z.mjs} +5 -5
  141. package/dist/{stats-report-B86Cv7Uc.mjs → stats-report-BVRCqwWA.mjs} +1 -1
  142. package/dist/{status-Bhdy07v0.mjs → status-B-oeWS0Z.mjs} +1 -1
  143. package/dist/{status-D0ruTmPl.mjs → status-CEwxo-PS.mjs} +37 -28
  144. package/dist/{status-GQ-JqvRi.mjs → status-DTFhDnd1.mjs} +1 -1
  145. package/dist/{status-watch-DSu_hhg6.mjs → status-watch-D63R5nSI.mjs} +5 -5
  146. package/dist/status-worker.mjs +1 -1
  147. package/dist/{stim-desktop-1XxET4S8.mjs → stim-desktop-_WTria-r.mjs} +2 -2
  148. package/dist/{stop-RZqER_Ww.mjs → stop-Dm9ON6Os.mjs} +2 -2
  149. package/dist/{stop-B616ZyTv.mjs → stop-HL2RvhrE.mjs} +5 -5
  150. package/dist/{stop-W4DK8qZq.mjs → stop-vX4w3_8V.mjs} +16 -16
  151. package/dist/supervisor-run.mjs +16 -16
  152. package/dist/{support-S_5nkkzs.mjs → support-BNe1_Hg7.mjs} +18 -8
  153. package/dist/{support-NxnD8QXd.mjs → support-ivsfDj0v.mjs} +9 -9
  154. package/dist/{swiftpm-artifact-inputs-yp8D5LE4.mjs → swiftpm-artifact-inputs-uq5oV7xR.mjs} +4 -4
  155. package/dist/{swiftpm-macos-Gtq9bNQb.mjs → swiftpm-macos-ClF203_2.mjs} +11 -11
  156. package/dist/{toolchain-B2bN8jEo.mjs → toolchain-CECahBDa.mjs} +1 -1
  157. package/dist/{toolchain-Bnm8vUCV.mjs → toolchain-CYonNjd_.mjs} +429 -20
  158. package/dist/{trigger-CfnOfpDd.mjs → trigger-BtB4kbe0.mjs} +2 -2
  159. package/dist/trigger-D8B7QR0q.mjs +2 -0
  160. package/dist/{warm-progress-_aTMvkIH.mjs → warm-progress-q11Vdvhh.mjs} +6 -6
  161. package/dist/{web-BdWG8b5_.mjs → web-BdaMBr2O.mjs} +9 -9
  162. package/dist/web-CIpHpGp8.mjs +2 -0
  163. package/dist/web-run.mjs +8 -8
  164. package/dist/windows-report.mjs +1 -1
  165. package/dist/{workspace-state-3bF4TB8P.mjs → workspace-state-BdZ-QgmB.mjs} +3 -3
  166. package/dist/{workspaces-C59v9bpD.mjs → workspaces-B9v5V7Es.mjs} +14 -14
  167. package/dist/{worktree-CinoSsGy.mjs → worktree-C3N86KpI.mjs} +77 -31
  168. package/dist/{worktree-K9F50fD_.mjs → worktree-C4MBOMz7.mjs} +1 -1
  169. package/package.json +12 -7
  170. package/dist/ios-signing-BJzvDPfU.mjs +0 -489
  171. package/dist/server-expo-DwR3eD-a.mjs +0 -2
  172. package/dist/trigger-DBZ-GBrl.mjs +0 -2
  173. package/dist/web-DwuluWJt.mjs +0 -2
@@ -1,4 +1,4 @@
1
- import { t as getExecutor } from "./exec-aULwtNly.mjs";
1
+ import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
2
  //#region src/collector/ios-device.ts
3
3
  const CONSOLE_ENV = { OS_ACTIVITY_DT_MODE: "enable" };
4
4
  const DEV_MENU_LAUNCH_ARGS = [
@@ -1,6 +1,6 @@
1
- import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { $t as INSTALL_ERROR, rn as appProcessFromPid } from "./ccache-BrwGIxmV.mjs";
3
- import { n as TOOL_ERROR_PREFIX } from "./ios-device-CiBA-er9.mjs";
1
+ import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
+ import { $t as INSTALL_ERROR, rn as appProcessFromPid } from "./ccache-ChBMXlBq.mjs";
3
+ import { n as TOOL_ERROR_PREFIX } from "./ios-device-DLdEDWJj.mjs";
4
4
  import { mkdtempSync, readFileSync, rmSync } from "node:fs";
5
5
  import { tmpdir } from "node:os";
6
6
  import { join } from "node:path";
@@ -1,10 +1,10 @@
1
- import { w as workspaceAgentDeviceDir } from "./workspace-state-3bF4TB8P.mjs";
2
- import { i as formatDuration, l as phaseLine } from "./command-output-CfPW1bKP.mjs";
3
- import { a as workspaceLinkLine } from "./stim-desktop-1XxET4S8.mjs";
4
- import { Mn as isEasAuthFailureText, On as UPLOAD_TIMEOUT_MS, jn as easAuthNote, kn as cacheLevel } from "./ccache-BrwGIxmV.mjs";
5
- import { X as recordFinishedBuild } from "./workspaces-C59v9bpD.mjs";
6
- import { A as COMPILATION_CACHE_NOT_RUN, F as compilationCacheActivityLine } from "./toolchain-Bnm8vUCV.mjs";
7
- import { i as deviceLabel } from "./support-NxnD8QXd.mjs";
1
+ import { w as workspaceAgentDeviceDir } from "./workspace-state-BdZ-QgmB.mjs";
2
+ import { i as formatDuration, l as phaseLine } from "./command-output-DjExb_tZ.mjs";
3
+ import { a as workspaceLinkLine } from "./stim-desktop-_WTria-r.mjs";
4
+ import { En as cacheLevel, On as easAuthNote, Tn as UPLOAD_TIMEOUT_MS, kn as isEasAuthFailureText } from "./ccache-ChBMXlBq.mjs";
5
+ import { X as recordFinishedBuild } from "./workspaces-B9v5V7Es.mjs";
6
+ import { A as COMPILATION_CACHE_NOT_RUN, F as compilationCacheActivityLine } from "./toolchain-CYonNjd_.mjs";
7
+ import { i as deviceLabel } from "./support-ivsfDj0v.mjs";
8
8
  import { buildDiagnostics } from "@stim-cli/core/state";
9
9
  import chalk from "chalk";
10
10
  //#region src/commands/ios/result.ts
@@ -1,9 +1,9 @@
1
- import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-CfPW1bKP.mjs";
2
- import { xn as schemesFromInfoPlist, yn as pickDevClientScheme } from "./ccache-BrwGIxmV.mjs";
3
- import { f as podAction, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, s as iosConfigurationSetting, t as appNameFromPath, u as isReleaseConfiguration, v as resolveRuntime } from "./support-NxnD8QXd.mjs";
4
- import { n as ensureWorkspaceStorageSafely } from "./native-runtime-DQfxW5Au.mjs";
5
- import { t as devClientScheme } from "./dev-client-eDZy6RoX.mjs";
6
- import { c as writeLastBuild, i as iosFacts, n as cacheDescription, o as lastBuildRecord } from "./ios-project-DDQlX_jX.mjs";
7
- import { d as replaceCollector, u as collectorEntry } from "./dependencies-DkZ8681S.mjs";
8
- import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-D3oK9-O4.mjs";
1
+ import { h as shortUdid, i as formatDuration, l as phaseLine, m as shortHash } from "./command-output-DjExb_tZ.mjs";
2
+ import { Q as pickDevClientScheme, et as schemesFromInfoPlist } from "./toolchain-CYonNjd_.mjs";
3
+ import { f as podAction, h as resolveDeviceType, i as deviceLabel, m as resolveConfiguration, n as buildLogFile, s as iosConfigurationSetting, t as appNameFromPath, u as isReleaseConfiguration, v as resolveRuntime } from "./support-ivsfDj0v.mjs";
4
+ import { n as ensureWorkspaceStorageSafely } from "./native-runtime-CNgxeOCG.mjs";
5
+ import { t as devClientScheme } from "./dev-client-D3wOllNd.mjs";
6
+ import { c as writeLastBuild, i as iosFacts, n as cacheDescription, o as lastBuildRecord } from "./ios-project-DoTQYghg.mjs";
7
+ import { d as replaceCollector, u as collectorEntry } from "./dependencies-CZ7c8XX_.mjs";
8
+ import { n as registerIos, r as runIosOperation, t as iosCommand } from "./ios-DSBs9c6d.mjs";
9
9
  export { appNameFromPath, buildLogFile, cacheDescription, collectorEntry, iosCommand as default, devClientScheme, deviceLabel, ensureWorkspaceStorageSafely, formatDuration, iosConfigurationSetting, iosFacts, isReleaseConfiguration, lastBuildRecord, phaseLine, pickDevClientScheme, podAction, registerIos, replaceCollector, resolveConfiguration, resolveDeviceType, resolveRuntime, runIosOperation, schemesFromInfoPlist, shortHash, shortUdid, writeLastBuild };
@@ -0,0 +1,202 @@
1
+ import { d as throwIfCancelled, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
+ import { a as killOnAbort, r as childEnvironment } from "./operation-exec-DKlBcKAL.mjs";
3
+ import { at as profileGate, it as parseSigningIdentities, ot as signingGate, rt as parseProvisioningProfilePlist, tt as SIGNING_CODES } from "./toolchain-CYonNjd_.mjs";
4
+ import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
5
+ import { tmpdir } from "node:os";
6
+ import { join } from "node:path";
7
+ //#region src/engine/ios-signing.ts
8
+ const EMBEDDED_PROFILE = "embedded.mobileprovision";
9
+ const SIGNING_TIMEOUT_MS = 12e4;
10
+ function lastLines(text, count = 5) {
11
+ return String(text ?? "").split(/\r?\n/).map((line) => line.trimEnd()).filter((line) => line.trim() !== "").slice(-count);
12
+ }
13
+ function errorText(error) {
14
+ const withOutput = error;
15
+ const stderr = String(withOutput?.stderr ?? "").trim();
16
+ const stdout = String(withOutput?.stdout ?? "").trim();
17
+ return stderr || stdout || String(withOutput?.message ?? error);
18
+ }
19
+ async function signingCommand(file, args, { exec, env, signal }) {
20
+ throwIfCancelled(signal, "iOS signing");
21
+ try {
22
+ const output = await (exec || getExecutor()).runFileAsync(file, args, {
23
+ timeoutMs: SIGNING_TIMEOUT_MS,
24
+ ...env ? childEnvironment(env) : {},
25
+ onSpawn: killOnAbort(signal)
26
+ });
27
+ throwIfCancelled(signal, "iOS signing");
28
+ return output;
29
+ } catch (error) {
30
+ throwIfCancelled(signal, "iOS signing");
31
+ throw error;
32
+ }
33
+ }
34
+ async function readEmbeddedProfile(appPath, options = {}) {
35
+ throwIfCancelled(options.signal, "iOS signing");
36
+ const path = join(appPath, EMBEDDED_PROFILE);
37
+ if (!existsSync(path)) return {
38
+ present: false,
39
+ profile: null
40
+ };
41
+ const plist = await decodeProvisioningProfile(path, options);
42
+ return {
43
+ present: true,
44
+ profile: plist === null ? null : parseProvisioningProfilePlist(plist)
45
+ };
46
+ }
47
+ async function decodeProvisioningProfile(path, options = {}) {
48
+ try {
49
+ return await signingCommand("/usr/bin/openssl", [
50
+ "smime",
51
+ "-verify",
52
+ "-noverify",
53
+ "-inform",
54
+ "DER",
55
+ "-in",
56
+ path
57
+ ], options);
58
+ } catch {
59
+ throwIfCancelled(options.signal, "iOS signing");
60
+ return null;
61
+ }
62
+ }
63
+ async function findSigningIdentities(options = {}) {
64
+ return await probeSigningIdentities(options) ?? [];
65
+ }
66
+ /** The keychain's code signing identities, or null when `security find-identity` itself failed. */
67
+ async function probeSigningIdentities(options = {}) {
68
+ try {
69
+ return parseSigningIdentities(await signingCommand("security", [
70
+ "find-identity",
71
+ "-v",
72
+ "-p",
73
+ "codesigning"
74
+ ], options));
75
+ } catch {
76
+ throwIfCancelled(options.signal, "iOS signing");
77
+ return null;
78
+ }
79
+ }
80
+ async function gateProfileForDevice(options) {
81
+ const read = await readEmbeddedProfile(options.appPath, options);
82
+ return profileGate({
83
+ profilePresent: read.present,
84
+ profile: read.profile,
85
+ identities: [],
86
+ udid: options.udid,
87
+ configuration: options.configuration ?? null,
88
+ ...options.now === void 0 ? {} : { now: options.now }
89
+ });
90
+ }
91
+ async function gateAppForDevice(options) {
92
+ const read = await readEmbeddedProfile(options.appPath, options);
93
+ return signingGate({
94
+ profilePresent: read.present,
95
+ profile: read.profile,
96
+ identities: read.present ? await findSigningIdentities(options) : [],
97
+ udid: options.udid,
98
+ configuration: options.configuration ?? null,
99
+ pinnedName: options.pinnedName ?? null,
100
+ pinnedSha1: options.pinnedSha1 ?? null,
101
+ ...options.now === void 0 ? {} : { now: options.now }
102
+ });
103
+ }
104
+ async function extractEntitlements(appPath, options) {
105
+ try {
106
+ return String(await signingCommand("codesign", [
107
+ "-d",
108
+ "--entitlements",
109
+ "-",
110
+ "--xml",
111
+ appPath
112
+ ], options)).trim();
113
+ } catch {
114
+ throwIfCancelled(options.signal, "iOS signing");
115
+ return "";
116
+ }
117
+ }
118
+ async function resealBundle({ appPath, identity, ...options }) {
119
+ const signAs = identity.sha1 || identity.name;
120
+ let mode = "preserve-metadata";
121
+ let preserveError = null;
122
+ try {
123
+ await signingCommand("codesign", [
124
+ "--force",
125
+ "--sign",
126
+ signAs,
127
+ "--preserve-metadata=identifier,entitlements,flags,runtime",
128
+ appPath
129
+ ], options);
130
+ } catch (error) {
131
+ throwIfCancelled(options.signal, "iOS signing");
132
+ preserveError = error;
133
+ }
134
+ let tempDir = null;
135
+ if (preserveError) {
136
+ const entitlements = await extractEntitlements(appPath, options);
137
+ const args = [
138
+ "--force",
139
+ "--sign",
140
+ signAs
141
+ ];
142
+ if (entitlements !== "") {
143
+ tempDir = mkdtempSync(join(tmpdir(), "stim-entitlements-"));
144
+ const plist = join(tempDir, "entitlements.plist");
145
+ writeFileSync(plist, `${entitlements}\n`, "utf-8");
146
+ args.push("--entitlements", plist);
147
+ mode = "entitlements";
148
+ } else mode = "no-entitlements";
149
+ args.push(appPath);
150
+ try {
151
+ await signingCommand("codesign", args, options);
152
+ } catch (error) {
153
+ throwIfCancelled(options.signal, "iOS signing");
154
+ return {
155
+ ok: false,
156
+ code: SIGNING_CODES.codesignFailed,
157
+ reason: `codesign could not re-seal ${appPath} with "${identity.name}": ${errorText(error)}`,
158
+ remedy: `Unlock the login keychain (\`security unlock-keychain\`) and confirm exactly one identity matches "${identity.name}".`,
159
+ lastLines: [...lastLines(errorText(preserveError)), ...lastLines(errorText(error))]
160
+ };
161
+ } finally {
162
+ if (tempDir) rmSync(tempDir, {
163
+ recursive: true,
164
+ force: true
165
+ });
166
+ }
167
+ }
168
+ try {
169
+ await signingCommand("codesign", [
170
+ "--verify",
171
+ "--strict",
172
+ appPath
173
+ ], options);
174
+ } catch (error) {
175
+ throwIfCancelled(options.signal, "iOS signing");
176
+ return {
177
+ ok: false,
178
+ code: SIGNING_CODES.codesignFailed,
179
+ reason: `codesign --verify --strict rejected ${appPath} after re-sealing it with "${identity.name}": ${errorText(error)}`,
180
+ remedy: "The bundle signed but did not seal. Delete the cached artifact with `stim gc --delete` and build fresh, then retry.",
181
+ lastLines: lastLines(errorText(error))
182
+ };
183
+ }
184
+ return {
185
+ ok: true,
186
+ identity,
187
+ mode
188
+ };
189
+ }
190
+ async function sealAppForDevice(options) {
191
+ const gate = await gateAppForDevice(options);
192
+ if (!gate.ok) return {
193
+ ...gate,
194
+ lastLines: []
195
+ };
196
+ return resealBundle({
197
+ ...options,
198
+ identity: gate.identity
199
+ });
200
+ }
201
+ //#endregion
202
+ export { sealAppForDevice as a, probeSigningIdentities as i, findSigningIdentities as n, gateProfileForDevice as r, decodeProvisioningProfile as t };
@@ -1,4 +1,4 @@
1
- import { l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-3bF4TB8P.mjs";
1
+ import { l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1 } from "./workspace-state-BdZ-QgmB.mjs";
2
2
  import { HOSTED_METRO_REQUESTS_KEY, hostedMetroRequests, hostedNativeRecords, isJsonObject, parseHostedNativePlacement, unreadableHostedNative } from "@stim-cli/core/state";
3
3
  //#region src/device-host/ios-state.ts
4
4
  function readHostedNative(root, platform, slot) {
@@ -1,10 +1,10 @@
1
- import { _ as spawnDeclared, b as operationState, c as throwIfCancelled, t as getExecutor } from "./exec-aULwtNly.mjs";
1
+ import { C as operationState, b as spawnDeclared, d as throwIfCancelled, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
2
  import { r as waitForChild, t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
3
- import { a as killOnAbort, t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
4
- import { an as makeTemporaryDirectory, on as removeTemporaryEntry } from "./settings-C6UTYW2K.mjs";
5
- import { Bn as bundleInvocation } from "./ccache-BrwGIxmV.mjs";
6
- import { K as tailLines, M as HEARTBEAT_INTERVAL_MS, W as startBuildHeartbeat } from "./toolchain-Bnm8vUCV.mjs";
7
- import { s as expoTelemetryEnv, t as cleanLine } from "./server-expo-BLxcN2x2.mjs";
3
+ import { a as killOnAbort, t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
4
+ import { an as makeTemporaryDirectory, on as removeTemporaryEntry } from "./settings-B5IBDfTx.mjs";
5
+ import { Ln as bundleInvocation } from "./ccache-ChBMXlBq.mjs";
6
+ import { K as tailLines, M as HEARTBEAT_INTERVAL_MS, W as startBuildHeartbeat } from "./toolchain-CYonNjd_.mjs";
7
+ import { s as expoTelemetryEnv, t as cleanLine } from "./server-expo-CUJ2fuv1.mjs";
8
8
  import { randomUUID } from "node:crypto";
9
9
  import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs";
10
10
  import { basename, join } from "node:path";
@@ -1,24 +1,24 @@
1
- import { x as withDrainingCancellation } from "./exec-aULwtNly.mjs";
2
- import { k as workspaceLogsDir } from "./workspace-state-3bF4TB8P.mjs";
3
- import { D as upsertProject, F as formatBytes, H as deviceSlotKey, T as setDevice, U as deviceSlotPlatforms, V as deviceSlotFileKey, k as withConfigLockAsync, v as loadConfig, w as saveConfig } from "./config-D5qNWJEP.mjs";
4
- import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-CfPW1bKP.mjs";
5
- import { L as workspaceDevServerMode } from "./project-Crtcbfl0.mjs";
6
- import { o as workspaceLinks } from "./stim-desktop-1XxET4S8.mjs";
7
- import { ct as trimAndroidCaches, i as androidDataFreeBytes, rt as resetAdoptedAvd, u as androidToolCwd } from "./android-DsEj2CCs.mjs";
8
- import { c as pidExists, f as signalProcessTree } from "./metro-mKHEMO-a.mjs";
9
- import { Bt as RELEASE_VERIFY_WAIT_MS, Gt as unattributedLaunchLines, It as LAUNCH_BUNDLING, Kt as unverifiedLaunchLines, Lt as LAUNCH_FATAL, Rt as LAUNCH_UNVERIFIED, Vt as VERIFY_TIMEOUT_MS, Zt as ADB_INSTALL_TIMEOUT_MS, gn as restartedAppNote, nn as androidDevClientUrl, tn as androidAppProcess, un as installConflictKind } from "./ccache-BrwGIxmV.mjs";
10
- import { pt as teardownOwnedAvd } from "./workspaces-C59v9bpD.mjs";
11
- import { x as providerUploadOutcome } from "./build-cache-BsKim4V7.mjs";
12
- import { t as recordPhoneReverse } from "./phone-reverses-CnNwdz9A.mjs";
13
- import { n as verifyCollectorOwnership, r as readCollectors } from "./ownership-CCfiBfOP.mjs";
14
- import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-CSpQcFZw.mjs";
1
+ import { w as withDrainingCancellation } from "./exec-CGuDzt40.mjs";
2
+ import { k as workspaceLogsDir } from "./workspace-state-BdZ-QgmB.mjs";
3
+ import { _ as stepTimer, c as launchErrorReport, i as formatDuration, l as phaseLine, n as appReadinessMessage, v as launchErrorPreview } from "./command-output-DjExb_tZ.mjs";
4
+ import { D as upsertProject, T as setDevice, dt as deviceSlotKey, ft as deviceSlotPlatforms, k as withConfigLockAsync, rt as formatBytes, ut as deviceSlotFileKey, v as loadConfig, w as saveConfig } from "./config-BW0fAtoK.mjs";
5
+ import { L as workspaceDevServerMode } from "./project-DU3jjnBE.mjs";
6
+ import { o as workspaceLinks } from "./stim-desktop-_WTria-r.mjs";
7
+ import { ct as trimAndroidCaches, i as androidDataFreeBytes, rt as resetAdoptedAvd, u as androidToolCwd } from "./android-Iq0M2t2d.mjs";
8
+ import { c as pidExists, f as signalProcessTree } from "./metro-B5PVz0Wv.mjs";
9
+ import { Bt as RELEASE_VERIFY_WAIT_MS, Gt as unattributedLaunchLines, It as LAUNCH_BUNDLING, Kt as unverifiedLaunchLines, Lt as LAUNCH_FATAL, Rt as LAUNCH_UNVERIFIED, Vt as VERIFY_TIMEOUT_MS, Zt as ADB_INSTALL_TIMEOUT_MS, gn as restartedAppNote, nn as androidDevClientUrl, tn as androidAppProcess, un as installConflictKind } from "./ccache-ChBMXlBq.mjs";
10
+ import { pt as teardownOwnedAvd } from "./workspaces-B9v5V7Es.mjs";
11
+ import { S as providerUploadOutcome } from "./build-cache-Cqj4FGnX.mjs";
12
+ import { t as recordPhoneReverse } from "./phone-reverses-Bo0EzJ-P.mjs";
13
+ import { n as verifyCollectorOwnership, r as readCollectors } from "./ownership-hC7xvvxF.mjs";
14
+ import { n as nativeRunCommand, r as siblingPlatformSlots, t as launchSlotScope } from "./slot-launch-kq0-7w9C.mjs";
15
15
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
16
- import { c as lostRefusal, s as lostLine, t as DEBUG_VERIFY_STEP_MS } from "./device-lease-run-DeNGjJZM.mjs";
17
- import { a as captureNativeCrashes, r as androidCrashClockOffset, s as printNativeCrashReport, t as errorDiagnostics } from "./error-diagnostics-q56Im4D8.mjs";
18
- import { f as settleFingerprintCheck } from "./prebuild-CyNrUWgV.mjs";
19
- import { i as launchOutcomeRecord } from "./native-runtime-DQfxW5Au.mjs";
20
- import { a as PLATFORM, b as noDeviceDiagnostic, h as displayPath, n as LAUNCH_FAILED, r as NO_DEVICE, t as INSTALL_FAILED } from "./support-S_5nkkzs.mjs";
21
- import { a as persistLastBuild, n as finishAndroidUpload, s as reportAndroidResult } from "./result-EOsWV6sp.mjs";
16
+ import { c as lostRefusal, s as lostLine, t as DEBUG_VERIFY_STEP_MS } from "./device-lease-run-i3FNX4OE.mjs";
17
+ import { a as captureNativeCrashes, r as androidCrashClockOffset, s as printNativeCrashReport, t as errorDiagnostics } from "./error-diagnostics-Ym2mjmJ0.mjs";
18
+ import { f as settleFingerprintCheck } from "./prebuild-BfJII57G.mjs";
19
+ import { i as launchOutcomeRecord } from "./native-runtime-CNgxeOCG.mjs";
20
+ import { a as PLATFORM, b as noDeviceDiagnostic, h as displayPath, n as LAUNCH_FAILED, r as NO_DEVICE, t as INSTALL_FAILED } from "./support-BNe1_Hg7.mjs";
21
+ import { a as persistLastBuild, n as finishAndroidUpload, s as reportAndroidResult } from "./result-H-AxY7Ud.mjs";
22
22
  import { mkdirSync, openSync, statSync } from "node:fs";
23
23
  import { basename, join } from "node:path";
24
24
  import { ambientEnv } from "@stim-cli/core";
@@ -1,9 +1,9 @@
1
- import { l as WorkspaceProcessCleanupError } from "./exec-aULwtNly.mjs";
2
- import { c as withWorkspaceStateLock } from "./workspace-state-3bF4TB8P.mjs";
3
- import { l as phaseLine } from "./command-output-CfPW1bKP.mjs";
4
- import { Jt as warmWorktreePaths, Lt as podsOutOfSync, Q as resolveSettings, Rt as readWorktreeExclude, kt as listCarryableIgnoredEntries, vt as depsOutOfSync } from "./settings-C6UTYW2K.mjs";
1
+ import { f as WorkspaceProcessCleanupError } from "./exec-CGuDzt40.mjs";
2
+ import { c as withWorkspaceStateLock } from "./workspace-state-BdZ-QgmB.mjs";
3
+ import { l as phaseLine } from "./command-output-DjExb_tZ.mjs";
4
+ import { Jt as warmWorktreePaths, Lt as podsOutOfSync, Q as resolveSettings, Rt as readWorktreeExclude, kt as listCarryableIgnoredEntries, vt as depsOutOfSync } from "./settings-B5IBDfTx.mjs";
5
5
  import { t as canonicalPath } from "./paths-BsJMoPP2.mjs";
6
- import { m as warmWorktreeTarget } from "./worktree-CinoSsGy.mjs";
6
+ import { m as warmWorktreeTarget } from "./worktree-C3N86KpI.mjs";
7
7
  import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
8
8
  import { basename, dirname, join, relative } from "node:path";
9
9
  import { isJsonObject, readJsonObject, workspaceLightenedFile, workspaceMetadataFile } from "@stim-cli/core/state";
@@ -1,9 +1,9 @@
1
- import { S as process_identity_exports } from "./exec-aULwtNly.mjs";
2
- import { k as workspaceLogsDir$1 } from "./workspace-state-3bF4TB8P.mjs";
3
- import { K as projectDeviceSlots, v as loadConfig$1 } from "./config-D5qNWJEP.mjs";
4
- import { f as readAgentDeviceRecordsAsync, n as agentDeviceLiveness, o as envDir } from "./activity-yjH7Q3zn.mjs";
5
- import { o as captureWorkspaceCrashes } from "./error-diagnostics-q56Im4D8.mjs";
6
- import { n as followHostedLogs, r as syncHostedLogs } from "./hosted-logs-sync-B8bjLEMs.mjs";
1
+ import { T as process_identity_exports } from "./exec-CGuDzt40.mjs";
2
+ import { k as workspaceLogsDir$1 } from "./workspace-state-BdZ-QgmB.mjs";
3
+ import { ht as projectDeviceSlots, v as loadConfig$1 } from "./config-BW0fAtoK.mjs";
4
+ import { f as readAgentDeviceRecordsAsync, n as agentDeviceLiveness, o as envDir } from "./activity-DkS-Ir6V.mjs";
5
+ import { o as captureWorkspaceCrashes } from "./error-diagnostics-Ym2mjmJ0.mjs";
6
+ import { n as followHostedLogs, r as syncHostedLogs } from "./hosted-logs-sync-Dlpa2mQF.mjs";
7
7
  import { readdirSync, statSync, watch } from "node:fs";
8
8
  import { homedir } from "node:os";
9
9
  import { dirname, join, relative, resolve, sep } from "node:path";
@@ -1,11 +1,11 @@
1
- import { i as recordWorkspaceUse, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-3bF4TB8P.mjs";
2
- import { G as parseDeviceSlotOption, _ as isPathPrefix$1, v as loadConfig$1 } from "./config-D5qNWJEP.mjs";
3
- import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-CfPW1bKP.mjs";
4
- import { n as findCommandWorkspace } from "./project-Crtcbfl0.mjs";
1
+ import { i as recordWorkspaceUse, k as workspaceLogsDir$1, r as readWorkspaceState$1 } from "./workspace-state-BdZ-QgmB.mjs";
2
+ import { f as refuseNoProject, v as launchErrorPreview } from "./command-output-DjExb_tZ.mjs";
3
+ import { _ as isPathPrefix$1, mt as parseDeviceSlotOption, v as loadConfig$1 } from "./config-BW0fAtoK.mjs";
4
+ import { n as findCommandWorkspace } from "./project-DU3jjnBE.mjs";
5
5
  import { n as SOURCES$1, t as LEVELS$1 } from "./ndjson-CrjIsGzw.mjs";
6
- import { i as followAgentActions, n as openWorkspaceLogs } from "./logs-zv3ge7c6.mjs";
7
- import { t as errorDiagnostics } from "./error-diagnostics-q56Im4D8.mjs";
8
- import { n as followHostedLogs } from "./hosted-logs-sync-B8bjLEMs.mjs";
6
+ import { i as followAgentActions, n as openWorkspaceLogs } from "./logs-DWT7jGpF.mjs";
7
+ import { t as errorDiagnostics } from "./error-diagnostics-Ym2mjmJ0.mjs";
8
+ import { n as followHostedLogs } from "./hosted-logs-sync-Dlpa2mQF.mjs";
9
9
  import { t as watchStdoutReader } from "./stdout-reader-C8yjre1x.mjs";
10
10
  import { realpathSync } from "node:fs";
11
11
  import { relative, sep } from "node:path";
@@ -1,26 +1,26 @@
1
- import { _ as spawnDeclared, c as throwIfCancelled, t as getExecutor, u as withWorkspaceProcessLock, x as withDrainingCancellation } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, a as recordWorkspaceUseAsync, f as writeWorkspaceStateAsync, k as workspaceLogsDir$1, v as ensureWorkspaceStorageAsync, w as workspaceAgentDeviceDir } from "./workspace-state-3bF4TB8P.mjs";
3
- import { D as upsertProject, k as withConfigLockAsync$1, u as getConcurrencyLimits } from "./config-D5qNWJEP.mjs";
4
- import { l as phaseLine } from "./command-output-CfPW1bKP.mjs";
5
- import { Z as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, it as settingValueAt, rt as settingShapeErrors } from "./settings-C6UTYW2K.mjs";
6
- import { f as projectRegistry, i as findProjectRoot$1, s as ownedDeviceLabel } from "./project-Crtcbfl0.mjs";
7
- import { i as macosProcess, n as macosDir, o as requiredMacosRecord, r as macosLogFile } from "./state-CiflgxTP.mjs";
1
+ import { b as spawnDeclared, d as throwIfCancelled, p as withWorkspaceProcessLock, t as getExecutor, w as withDrainingCancellation } from "./exec-CGuDzt40.mjs";
2
+ import { E as workspaceDir, a as recordWorkspaceUseAsync, f as writeWorkspaceStateAsync, k as workspaceLogsDir$1, v as ensureWorkspaceStorageAsync, w as workspaceAgentDeviceDir } from "./workspace-state-BdZ-QgmB.mjs";
3
+ import { l as phaseLine } from "./command-output-DjExb_tZ.mjs";
4
+ import { D as upsertProject, k as withConfigLockAsync$1, u as getConcurrencyLimits } from "./config-BW0fAtoK.mjs";
5
+ import { Z as resolveProjectSettingsAsync, a as SETTING_SHAPE_REMEDY, it as settingValueAt, rt as settingShapeErrors } from "./settings-B5IBDfTx.mjs";
6
+ import { f as projectRegistry, i as findProjectRoot$1, s as ownedDeviceLabel } from "./project-DU3jjnBE.mjs";
7
+ import { i as macosProcess, n as macosDir, o as requiredMacosRecord, r as macosLogFile } from "./state-DSOUqO-o.mjs";
8
8
  import { i as createNdjsonWriter } from "./ndjson-CrjIsGzw.mjs";
9
- import { En as runProcessOperation, Tn as processContext } from "./ccache-BrwGIxmV.mjs";
10
- import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, St as acquireBuildSlot, Tt as releaseBuildSlot, X as recordFinishedBuild, Y as recordBuildPhase, tt as errorRemedy } from "./workspaces-C59v9bpD.mjs";
11
- import { ct as withNativeBuildRun, st as runCancellationSignal } from "./toolchain-Bnm8vUCV.mjs";
12
- import { O as sanitizeDeviceLabel } from "./ios-CdAV4-1E.mjs";
13
- import { S as setRemoteLogSink, c as offloadPlacement, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText } from "./client-lDmA-5jx.mjs";
14
- import { d as resolveBuildPlacement, l as requireLocalBuild, n as automaticBuild, o as namedBuildMachine, s as parseBuildMachineOption, t as OffloadRefusal } from "./selection-C4ZQz_ER.mjs";
15
- import { l as connectHost } from "./hosted-client-Hs-fD4L3.mjs";
16
- import { t as placeHostedMacos } from "./hosted-macos-B4byscei.mjs";
17
- import { i as stopMacosAppHeld, t as stopBundleInstances } from "./stop-B616ZyTv.mjs";
9
+ import { Cn as runProcessOperation, Sn as processContext } from "./ccache-ChBMXlBq.mjs";
10
+ import { $ as tapBuildLog, H as NO_BUILD_PROGRESS, Q as startBuildProgress, St as acquireBuildSlot, Tt as releaseBuildSlot, X as recordFinishedBuild, Y as recordBuildPhase, tt as errorRemedy } from "./workspaces-B9v5V7Es.mjs";
11
+ import { _t as runCancellationSignal, vt as withNativeBuildRun } from "./toolchain-CYonNjd_.mjs";
12
+ import { O as sanitizeDeviceLabel } from "./ios-BdZdNsAj.mjs";
13
+ import { C as setRemoteLogSink, c as offloadPlacement, i as closeOffload, l as placementLoad, n as buildPlacementCandidates, o as offloadBuild, r as chooseBuildMachine, u as remotePhaseText } from "./client-kU37gURU.mjs";
14
+ import { d as resolveBuildPlacement, l as requireLocalBuild, n as automaticBuild, o as namedBuildMachine, s as parseBuildMachineOption, t as OffloadRefusal } from "./selection-CH-MUVGD.mjs";
15
+ import { u as connectHost } from "./hosted-client-CQuzZwAu.mjs";
16
+ import { t as placeHostedMacos } from "./hosted-macos-JKefapEm.mjs";
17
+ import { i as stopMacosAppHeld, t as stopBundleInstances } from "./stop-HL2RvhrE.mjs";
18
18
  import { t as spawnEntry } from "./spawn-entry-jw19m8Nl.mjs";
19
- import { t as buildPlacementRecord } from "./placement-log-CRL0IY-k.mjs";
20
- import { n as devicePlacementLine, t as automaticDevicePlacement } from "./auto-placement--nfdQ9rp.mjs";
21
- import { t as reidentifyBundle } from "./stage-Cf9uSM1a.mjs";
22
- import { t as validateMacosArtifactPlatform } from "./artifact-platform-BO2Uvk_A.mjs";
23
- import { t as waitForMacosRegistration } from "./registration-BwCe64PH.mjs";
19
+ import { t as buildPlacementRecord } from "./placement-log-BsGvKLtU.mjs";
20
+ import { n as devicePlacementLine, t as automaticDevicePlacement } from "./auto-placement-DA65VQH7.mjs";
21
+ import { t as reidentifyBundle } from "./stage-CBfMTUK3.mjs";
22
+ import { t as validateMacosArtifactPlatform } from "./artifact-platform-DqCWUieN.mjs";
23
+ import { t as waitForMacosRegistration } from "./registration-DKjJGQ6p.mjs";
24
24
  import { createHash, randomUUID } from "node:crypto";
25
25
  import { closeSync, existsSync, openSync, promises, realpathSync, renameSync } from "node:fs";
26
26
  import { join } from "node:path";
@@ -344,7 +344,7 @@ async function planMacos(context, root, buildMachineFlag) {
344
344
  if (selected.failure) throw Object.assign(new Error(selected.failure.message), selected.failure);
345
345
  const macos = settings.macos;
346
346
  if (!macos?.product || !macos.infoPlist) throw Object.assign(/* @__PURE__ */ new Error("Set macos.product and macos.infoPlist explicitly in .stim.json. See stim guide macos."), { code: "STIM_BAD_ARG" });
347
- const { swiftpmMacosProject } = await import("./swiftpm-macos-Gtq9bNQb.mjs");
347
+ const { swiftpmMacosProject } = await import("./swiftpm-macos-ClF203_2.mjs");
348
348
  const recipe = await swiftpmMacosProject(root).prepare(context, settings);
349
349
  let identity = null;
350
350
  let cacheHit = false;
@@ -1,2 +1,2 @@
1
- import { n as runMacos, r as waitForLaunchServices, t as macosCommand } from "./macos-C6U-4Iip.mjs";
1
+ import { n as runMacos, r as waitForLaunchServices, t as macosCommand } from "./macos-CtBtA_hW.mjs";
2
2
  export { macosCommand as default, runMacos, waitForLaunchServices };
@@ -1,2 +1,2 @@
1
- import { n as runMacosSupervisor, t as logLines } from "./run-2CHAJ9Oj.mjs";
1
+ import { n as runMacosSupervisor, t as logLines } from "./run-N-BbRxnC.mjs";
2
2
  export { logLines, runMacosSupervisor };
@@ -1,10 +1,10 @@
1
- import { F as formatBytes } from "./config-D5qNWJEP.mjs";
2
- import { A as diskPressureLevel, I as maintenanceItem, L as openGcLog, M as levelStillShort, N as lowestFree, R as maintenanceLogger, _ as resolveBudget, j as levelFloors, mt as deviceSweepIsScoped } from "./ccache-BrwGIxmV.mjs";
3
- import { I as memoryCulpritsUnder, V as memoryCulpritAdvice } from "./ios-CdAV4-1E.mjs";
1
+ import { rt as formatBytes } from "./config-BW0fAtoK.mjs";
2
+ import { A as diskPressureLevel, I as maintenanceItem, L as openGcLog, M as levelStillShort, N as lowestFree, R as maintenanceLogger, _ as resolveBudget, j as levelFloors, mt as deviceSweepIsScoped } from "./ccache-ChBMXlBq.mjs";
3
+ import { I as memoryCulpritsUnder, V as memoryCulpritAdvice } from "./ios-BdZdNsAj.mjs";
4
4
  import { t as resolveMaintenanceSettings } from "./settings-D9LtQaUw.mjs";
5
- import { C as sizeScanDeferred, S as measureSizes, b as measurePressure, v as measureDisk } from "./worktree-CinoSsGy.mjs";
6
- import { t as relaunchWithLogFile } from "./detached-entry-BPlSaCwC.mjs";
7
- import { i as plannedMaintenance, n as diskRecovered, o as triggeringRoot, r as executeAction, v as measureOwnedDevices } from "./act-BfChMxcU.mjs";
5
+ import { C as sizeScanDeferred, S as measureSizes, b as measurePressure, v as measureDisk } from "./worktree-C3N86KpI.mjs";
6
+ import { t as relaunchWithLogFile } from "./detached-entry-tfrgGVWb.mjs";
7
+ import { i as plannedMaintenance, n as diskRecovered, o as triggeringRoot, r as executeAction, v as measureOwnedDevices } from "./act-7f7wIvCQ.mjs";
8
8
  import { r as due, t as capChildLog } from "./attempt-ClyJlZPT.mjs";
9
9
  import { releaseClaim, tryAcquireClaim } from "@stim-cli/core/ownership-claim";
10
10
  import { randomBytes } from "node:crypto";
@@ -1,7 +1,7 @@
1
- import { S as process_identity_exports, l as WorkspaceProcessCleanupError, t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { r as readWorkspaceState } from "./workspace-state-3bF4TB8P.mjs";
3
- import { I as isOnMountedVolume, L as listMountedVolumes, S as releaseMetroPort, k as withConfigLockAsync, n as allMetroPorts, r as claimMetroPort, v as loadConfig } from "./config-D5qNWJEP.mjs";
4
- import { t as runOperationFile } from "./operation-exec-Dp4FuIGR.mjs";
1
+ import { T as process_identity_exports, f as WorkspaceProcessCleanupError, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
+ import { r as readWorkspaceState } from "./workspace-state-BdZ-QgmB.mjs";
3
+ import { S as releaseMetroPort, at as isOnMountedVolume, k as withConfigLockAsync, n as allMetroPorts, ot as listMountedVolumes, r as claimMetroPort, v as loadConfig } from "./config-BW0fAtoK.mjs";
4
+ import { t as runOperationFile } from "./operation-exec-DKlBcKAL.mjs";
5
5
  import { sep } from "path";
6
6
  import { existsSync, readlinkSync, realpathSync } from "fs";
7
7
  import { readFile } from "node:fs/promises";
@@ -1,5 +1,5 @@
1
- import { S as process_identity_exports, c as throwIfCancelled, s as cancelledError } from "./exec-aULwtNly.mjs";
2
- import { j as workspaceStateFile$1, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-3bF4TB8P.mjs";
1
+ import { T as process_identity_exports, d as throwIfCancelled, u as cancelledError } from "./exec-CGuDzt40.mjs";
2
+ import { j as workspaceStateFile$1, l as withWorkspaceStateLockAsync, o as updateWorkspaceState, r as readWorkspaceState$1, s as updateWorkspaceStateAsync } from "./workspace-state-BdZ-QgmB.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
4
  import { statSync, watch } from "node:fs";
5
5
  import { HOSTED_METRO_REQUESTS_KEY, hostedMetroLinks, hostedMetroRequests, isJsonObject } from "@stim-cli/core/state";
@@ -1,6 +1,6 @@
1
- import { S as process_identity_exports, t as getExecutor, u as withWorkspaceProcessLock } from "./exec-aULwtNly.mjs";
2
- import { c as ensureConfig, d as getConfigDir, k as withConfigLockAsync, m as getProject, v as loadConfig, w as saveConfig } from "./config-D5qNWJEP.mjs";
3
- import { f as signalProcessTree, m as createPortProbe, s as parseNetstatPids } from "./metro-mKHEMO-a.mjs";
1
+ import { T as process_identity_exports, p as withWorkspaceProcessLock, t as getExecutor } from "./exec-CGuDzt40.mjs";
2
+ import { c as ensureConfig, d as getConfigDir, k as withConfigLockAsync, m as getProject, v as loadConfig, w as saveConfig } from "./config-BW0fAtoK.mjs";
3
+ import { f as signalProcessTree, m as createPortProbe, s as parseNetstatPids } from "./metro-B5PVz0Wv.mjs";
4
4
  import { realpathSync } from "node:fs";
5
5
  //#region src/named-ports.ts
6
6
  const FIRST_PORT = 8900;
@@ -1,20 +1,21 @@
1
- import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { E as workspaceDir, y as sharedBuildCache } from "./workspace-state-3bF4TB8P.mjs";
3
- import { J as validateDeviceSlot, U as deviceSlotPlatforms, m as getProject } from "./config-D5qNWJEP.mjs";
4
- import { it as settingValueAt } from "./settings-C6UTYW2K.mjs";
5
- import { H as ownedAvdDeviceProfile, J as ownedAvdSystemImage, O as findBuildTool, Q as pickDefaultSystemImage, U as ownedAvdDirectory, l as androidSystemImageAbi, o as androidHome, z as listInstalledSystemImages } from "./android-DsEj2CCs.mjs";
6
- import { s as resolveCcache } from "./ccache-BrwGIxmV.mjs";
7
- import { r as register } from "./cache-manifest-CfiEny4T.mjs";
8
- import { lt as statsProjectKey } from "./workspaces-C59v9bpD.mjs";
9
- import { r as androidToolchainAsync, st as runCancellationSignal } from "./toolchain-Bnm8vUCV.mjs";
10
- import { C as resolveBuild, s as entryDir, t as artifactIn } from "./build-cache-BsKim4V7.mjs";
11
- import { h as gradleOffloadInputs, y as nativeGradleTransfer } from "./client-lDmA-5jx.mjs";
12
- import { d as buildGradle, l as androidSdkRefusal } from "./react-native-build-DhWBUV_H.mjs";
13
- import { s as explainBuildMiss, u as skippedMissReason } from "./prebuild-CyNrUWgV.mjs";
14
- import { u as resolveAndroidRunPlan } from "./result-EOsWV6sp.mjs";
15
- import { n as androidProcessRuntime } from "./launch-DxpvL6il.mjs";
16
- import { n as planFlagRefusal, r as planPayload } from "./build-plan-BK34X2iY.mjs";
17
- import { a as nativeGradleWorkerArtifactIdentity, n as gradleArtifactInputs, r as nativeGradleArtifactSnapshot, t as NATIVE_GRADLE_CACHE_LIMIT } from "./native-gradle-artifact-inputs-BlY97pt8.mjs";
1
+ import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
+ import { E as workspaceDir, y as sharedBuildCache } from "./workspace-state-BdZ-QgmB.mjs";
3
+ import { _t as validateDeviceSlot, ft as deviceSlotPlatforms, m as getProject } from "./config-BW0fAtoK.mjs";
4
+ import { it as settingValueAt } from "./settings-B5IBDfTx.mjs";
5
+ import { H as ownedAvdDeviceProfile, J as ownedAvdSystemImage, O as findBuildTool, U as ownedAvdDirectory, l as androidSystemImageAbi, o as androidHome, z as listInstalledSystemImages } from "./android-Iq0M2t2d.mjs";
6
+ import { s as resolveCcache } from "./ccache-ChBMXlBq.mjs";
7
+ import { r as register } from "./cache-manifest-8JX9S1QJ.mjs";
8
+ import { lt as statsProjectKey } from "./workspaces-B9v5V7Es.mjs";
9
+ import { _t as runCancellationSignal, r as androidToolchainAsync } from "./toolchain-CYonNjd_.mjs";
10
+ import { c as entryDir, t as artifactIn, w as resolveBuild } from "./build-cache-Cqj4FGnX.mjs";
11
+ import { b as nativeGradleTransfer, g as gradleOffloadInputs } from "./client-kU37gURU.mjs";
12
+ import { d as buildGradle, l as androidSdkRefusal } from "./react-native-build-CuvNPt-q.mjs";
13
+ import { n as decideSystemImage, t as androidImageInstallPolicy } from "./android-image-DFk26aY6.mjs";
14
+ import { s as explainBuildMiss, u as skippedMissReason } from "./prebuild-BfJII57G.mjs";
15
+ import { u as resolveAndroidRunPlan } from "./result-H-AxY7Ud.mjs";
16
+ import { n as androidProcessRuntime } from "./launch-Cy-MWEZc.mjs";
17
+ import { n as planFlagRefusal, r as planPayload } from "./build-plan-Ct1FiA3E.mjs";
18
+ import { a as nativeGradleWorkerArtifactIdentity, n as gradleArtifactInputs, r as nativeGradleArtifactSnapshot, t as NATIVE_GRADLE_CACHE_LIMIT } from "./native-gradle-artifact-inputs-DVoeZkrw.mjs";
18
19
  import { createHash } from "node:crypto";
19
20
  import { createReadStream, createWriteStream, existsSync, readFileSync, statSync } from "node:fs";
20
21
  import { tmpdir } from "node:os";
@@ -311,8 +312,17 @@ async function planNativeAndroid(root, options, resolved, operation) {
311
312
  message: "The legacy emulator assignment does not establish a build ABI for native planning.",
312
313
  remedy: "Run stim android without --plan to reconcile the assignment, or use --slot <name> for an owned emulator."
313
314
  } };
314
- const image = reuseRecorded ? recordedImage : pickDefaultSystemImage(listInstalledSystemImages(), target.systemImage ? { systemImage: target.systemImage } : {})?.pkg;
315
- abi = androidSystemImageAbi(image);
315
+ const decided = reuseRecorded ? null : decideSystemImage({
316
+ requested: target.systemImage,
317
+ installed: listInstalledSystemImages(),
318
+ policy: androidImageInstallPolicy(settings)
319
+ });
320
+ if (decided?.kind === "refuse") return { refusal: {
321
+ code: decided.code,
322
+ message: decided.message,
323
+ remedy: decided.remedy
324
+ } };
325
+ abi = androidSystemImageAbi(decided ? decided.pkg : recordedImage);
316
326
  if (!abi) throw new Error("No installed emulator image identifies the native Android build ABI.");
317
327
  }
318
328
  const snapshot = await nativeGradleArtifactSnapshot(root, declared, build, abi, env, signal);
@@ -1,8 +1,8 @@
1
- import { t as getExecutor } from "./exec-aULwtNly.mjs";
2
- import { r as childEnvironment } from "./operation-exec-Dp4FuIGR.mjs";
3
- import { o as androidHome } from "./android-DsEj2CCs.mjs";
4
- import { n as buildCacheKey } from "./build-cache-BsKim4V7.mjs";
5
- import { _ as nativeGradleLocalSourceDigest, h as gradleOffloadInputs } from "./client-lDmA-5jx.mjs";
1
+ import { t as getExecutor } from "./exec-CGuDzt40.mjs";
2
+ import { r as childEnvironment } from "./operation-exec-DKlBcKAL.mjs";
3
+ import { o as androidHome } from "./android-Iq0M2t2d.mjs";
4
+ import { n as buildCacheKey } from "./build-cache-Cqj4FGnX.mjs";
5
+ import { g as gradleOffloadInputs, v as nativeGradleLocalSourceDigest } from "./client-kU37gURU.mjs";
6
6
  import { n as fingerprintNativeInputs } from "./native-inputs-TRTTTRxt.mjs";
7
7
  import { createHash } from "node:crypto";
8
8
  import { homedir } from "node:os";
@@ -1,9 +1,9 @@
1
- import { r as readWorkspaceState$1, v as ensureWorkspaceStorageAsync } from "./workspace-state-3bF4TB8P.mjs";
2
- import { l as phaseLine } from "./command-output-CfPW1bKP.mjs";
3
- import { N as metroPortSetting } from "./settings-C6UTYW2K.mjs";
4
- import { d as resolveProjectMetro } from "./metro-mKHEMO-a.mjs";
5
- import { It as LAUNCH_BUNDLING, Rt as LAUNCH_UNVERIFIED } from "./ccache-BrwGIxmV.mjs";
6
- import { c as startDevServer } from "./start-CLN_r9EG.mjs";
1
+ import { r as readWorkspaceState$1, v as ensureWorkspaceStorageAsync } from "./workspace-state-BdZ-QgmB.mjs";
2
+ import { l as phaseLine } from "./command-output-DjExb_tZ.mjs";
3
+ import { N as metroPortSetting } from "./settings-B5IBDfTx.mjs";
4
+ import { d as resolveProjectMetro } from "./metro-B5PVz0Wv.mjs";
5
+ import { It as LAUNCH_BUNDLING, Rt as LAUNCH_UNVERIFIED } from "./ccache-ChBMXlBq.mjs";
6
+ import { c as startDevServer } from "./start-WTMumMHi.mjs";
7
7
  import { readIdleStop } from "@stim-cli/core/state";
8
8
  import chalk from "chalk";
9
9
  //#region src/commands/native-runtime.ts