stim 1.11.0 → 1.12.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 (71) hide show
  1. package/dist/{activity-BtG4Va9l.mjs → activity-CCZJs__P.mjs} +4 -3
  2. package/dist/{android-C4zG2Tuc.mjs → android-75Sk2rIR.mjs} +25 -8
  3. package/dist/{android-C1q4l523.mjs → android-B7X-8H7h.mjs} +75 -32
  4. package/dist/{android-BA2i_KAV.mjs → android-BQiKJYK0.mjs} +1 -1
  5. package/dist/{android-cas-DfJkwCXW.mjs → android-cas-DzLPXiEn.mjs} +7 -7
  6. package/dist/{app-install-DHut6JnV.mjs → app-install-CsZi0SAT.mjs} +1 -1
  7. package/dist/{workspaces-COD2xCz-.mjs → budget-DbzW5VTD.mjs} +641 -32
  8. package/dist/{build-plan-CeAYgKAx.mjs → build-plan-CqntbR7b.mjs} +120 -35
  9. package/dist/{build-progress-CDwogz6R.mjs → build-progress-h60GPV27.mjs} +3 -3
  10. package/dist/{cache-manifest-Pubfp8wV.mjs → cache-manifest-DWPF4RKJ.mjs} +1 -1
  11. package/dist/cache-manifest.mjs +1 -1
  12. package/dist/cli.mjs +16 -16
  13. package/dist/collector-run.mjs +4 -4
  14. package/dist/{command-output-D5z2_bcF.mjs → command-output-BWCj5Vh-.mjs} +1 -1
  15. package/dist/{config-BEq0Qw_a.mjs → config-0jCcMM0E.mjs} +10 -1
  16. package/dist/{dependency-state-r9UesA9a.mjs → dependency-state-DNN0yfx6.mjs} +1 -1
  17. package/dist/{deps-OF7CD5Dx.mjs → deps-CO-_7UOm.mjs} +2 -2
  18. package/dist/{device-BwH2iI3O.mjs → device-9r9xRYDa.mjs} +7 -7
  19. package/dist/{device-lease-D83nqeMX.mjs → device-lease-B9LAXIUH.mjs} +5 -5
  20. package/dist/{device-pool-DHj7cdPy.mjs → device-pool-BoezJd-c.mjs} +4 -4
  21. package/dist/{device-remote-BQZSnnmE.mjs → device-remote-C0_o-tJH.mjs} +254 -579
  22. package/dist/{doctor-D8QdMRMf.mjs → doctor-LfDlbR-N.mjs} +19 -18
  23. package/dist/{error-diagnostics-UYFSQwRy.mjs → error-diagnostics-CCxjn31V.mjs} +7 -7
  24. package/dist/{gc-COZteyiq.mjs → gc-C4nQFcTX.mjs} +203 -39
  25. package/dist/{guide-NDvTmMi-.mjs → guide-BPBlh9ML.mjs} +189 -38
  26. package/dist/{guide-status-CWvti2Lg.mjs → guide-status-i9ogHt4v.mjs} +2 -2
  27. package/dist/{idle-NETbeNiQ.mjs → idle-S3tFZ53_.mjs} +7 -7
  28. package/dist/{in-use-DVhlSoyn.mjs → in-use-D9XYEgFD.mjs} +7 -7
  29. package/dist/{ios-CQLKpNfr.mjs → ios-CDzWL1mj.mjs} +30 -29
  30. package/dist/{ios-DArbmwer.mjs → ios-CZWOHTTc.mjs} +23 -19
  31. package/dist/{ios-device-CwDZo0X4.mjs → ios-device-D9cLxVr5.mjs} +1 -1
  32. package/dist/{launch-verify-CuPDGXdr.mjs → launch-verify-B2oR_kFN.mjs} +2 -2
  33. package/dist/{logs-B44a1UeU.mjs → logs-SzuYudOj.mjs} +6 -6
  34. package/dist/{merge-state-DDxS-XIZ.mjs → merge-state-ytFQCeh4.mjs} +38 -8
  35. package/dist/{metro-BWLOJ_Wr.mjs → metro-Dzo30hvJ.mjs} +1 -1
  36. package/dist/{named-ports-Dc7neAlc.mjs → named-ports-Dn1o61D9.mjs} +3 -3
  37. package/dist/{ownership-BiojdtAp.mjs → ownership-B8d4kXBx.mjs} +49 -16
  38. package/dist/{ownership-D2xbLVoz.mjs → ownership-Dqnrjrio.mjs} +2 -2
  39. package/dist/{ports-DwBaRFJs.mjs → ports-Dp_QTwTC.mjs} +3 -3
  40. package/dist/{project-BXZzOABt.mjs → project-B8rbutVC.mjs} +4 -72
  41. package/dist/{reload-By9Dwsrt.mjs → reload-nocmx8KB.mjs} +9 -9
  42. package/dist/remote-cache-BRsRZru5.mjs +526 -0
  43. package/dist/{server-bare-D_RK1RCj.mjs → server-bare-Gn3ssSdK.mjs} +1 -1
  44. package/dist/{server-expo-o6H5gcBc.mjs → server-expo-CeT1nIIk.mjs} +2 -2
  45. package/dist/server-expo-eWi9Coof.mjs +2 -0
  46. package/dist/{settings-B5oFZEri.mjs → settings-BlyDn2Oz.mjs} +2 -2
  47. package/dist/{settings-C0ugALSC.mjs → settings-bE-Gu3Ti.mjs} +23 -11
  48. package/dist/settings.schema.json +22 -2
  49. package/dist/{simslim-CIR3IYJO.mjs → simslim-COtEEP7x.mjs} +6 -5
  50. package/dist/{slot-launch-rggO1Esw.mjs → slot-launch-DIACGEfH.mjs} +4 -4
  51. package/dist/{spawn-claims-BJwXTMPt.mjs → spawn-claims-PT8aQpCa.mjs} +1 -1
  52. package/dist/{start-i8zc9VmS.mjs → start-BFstVBlx.mjs} +1 -1
  53. package/dist/{start-BSsf2tUs.mjs → start-BboE1HIS.mjs} +108 -17
  54. package/dist/{state-WGdIbi_d.mjs → state-DcDgzfu3.mjs} +15 -3
  55. package/dist/{stats-BAgJaLA4.mjs → stats-D8rUTPHd.mjs} +1 -1
  56. package/dist/{stats-DBYJ5bxL.mjs → stats-DiCtmluY.mjs} +4 -4
  57. package/dist/{status-Q-WDEGCB.mjs → status-BUASYyy_.mjs} +73 -28
  58. package/dist/{status-CitcBRsC.mjs → status-DI9Tjo7T.mjs} +41 -29
  59. package/dist/stim-desktop-D0xhpZt8.mjs +29 -0
  60. package/dist/{stop-rst5mL14.mjs → stop-BI7QY76M.mjs} +2 -2
  61. package/dist/{stop-DIhrvu0B.mjs → stop-Bn6v-GvS.mjs} +23 -16
  62. package/dist/supervisor-run.mjs +11 -11
  63. package/dist/{workspace-process-lock-Cx74RSDZ.mjs → workspace-process-lock-BvvJTfo_.mjs} +2 -2
  64. package/dist/{worktree-DhxDTK44.mjs → worktree-B5sTRskL.mjs} +1 -1
  65. package/dist/{worktree-KOjMX3zA.mjs → worktree-ChDL5fO1.mjs} +17 -16
  66. package/dist/{worktree-BlizKDpZ.mjs → worktree-DeBQSVtR.mjs} +3 -1
  67. package/dist/{xcode-B5SPD--o.mjs → xcode-BzplpQzc.mjs} +7 -7
  68. package/package.json +5 -5
  69. package/dist/budget-De3P2rq_.mjs +0 -620
  70. package/dist/native-run-D7yB_AsB.mjs +0 -143
  71. package/dist/server-expo-B-CCUJZj.mjs +0 -2
@@ -1,3 +1,3 @@
1
- import { t as resolveSupervisorTarget } from "./ownership-BiojdtAp.mjs";
2
- import { a as resolveCollectorTargets, c as stopWorkspaceNow, i as readSupervisorState, n as clearSupervisorState, o as runStop, r as readCollectorState, s as stopCommand, t as clearCollectorState } from "./stop-DIhrvu0B.mjs";
1
+ import { t as resolveSupervisorTarget } from "./ownership-B8d4kXBx.mjs";
2
+ import { a as resolveCollectorTargets, c as stopWorkspaceNow, i as readSupervisorState, n as clearSupervisorState, o as runStop, r as readCollectorState, s as stopCommand, t as clearCollectorState } from "./stop-Bn6v-GvS.mjs";
3
3
  export { clearCollectorState, clearSupervisorState, stopCommand as default, readCollectorState, readSupervisorState, resolveCollectorTargets, resolveSupervisorTarget, runStop, stopWorkspaceNow };
@@ -1,14 +1,14 @@
1
- import { B as parseDeviceSlotKey, D as process_identity_exports, H as projectDeviceSlots, T as withConfigLock, V as parseDeviceSlotOption, W as validateDeviceSlot, a as clearSupervisor, f as getProject, k as ownership_claim_exports, w as upsertProject, z as deviceSlotPlatforms } from "./config-BEq0Qw_a.mjs";
2
- import { O as workspaceDir, _ as withWorkspaceStateLock, c as signalProcessTree, i as pidExists, m as readWorkspaceState, p as clearWorkspaceStateKeys, s as resolveProjectMetro, t as killMetroTree, y as writeWorkspaceState } from "./metro-BWLOJ_Wr.mjs";
3
- import { o as findProjectRoot } from "./project-BXZzOABt.mjs";
4
- import { a as clearRemoteSession, i as clearManagedMetroTunnel, l as readRemoteSession, o as clearWorkspaceSupervisor, s as readMetroTunnel } from "./state-WGdIbi_d.mjs";
5
- import { t as withWorkspaceProcessLock } from "./workspace-process-lock-Cx74RSDZ.mjs";
6
- import { f as refuseNoProject, l as phaseLine, p as releasedLeaseFact, u as plural } from "./command-output-D5z2_bcF.mjs";
7
- import { u as releaseWorkspaceLeases } from "./device-lease-D83nqeMX.mjs";
8
- import { d as teardownOwnedAvd, f as teardownOwnedIosSim, i as stopTunnel, t as resolveSupervisorTarget } from "./ownership-BiojdtAp.mjs";
9
- import { n as verifyCollectorOwnership } from "./ownership-D2xbLVoz.mjs";
10
- import { i as endRecordedSession, z as resolveEasCliBin } from "./device-remote-BQZSnnmE.mjs";
11
- import { a as decideStopAction, c as nativeRunWaitNotice, i as clearNativeRunCancel, l as requestNativeRunCancel, n as NATIVE_RUN_WAIT_MS, o as describeNativeRunHolder, s as nativeRunHolder, t as NATIVE_RUN_LOCK } from "./native-run-D7yB_AsB.mjs";
1
+ import { A as ownership_claim_exports, B as deviceSlotPlatforms, E as withConfigLock, G as validateDeviceSlot, H as parseDeviceSlotOption, O as process_identity_exports, T as upsertProject, U as projectDeviceSlots, V as parseDeviceSlotKey, o as clearSupervisor, p as getProject } from "./config-0jCcMM0E.mjs";
2
+ import { O as workspaceDir, _ as withWorkspaceStateLock, c as signalProcessTree, i as pidExists, m as readWorkspaceState, p as clearWorkspaceStateKeys, s as resolveProjectMetro, t as killMetroTree, y as writeWorkspaceState } from "./metro-Dzo30hvJ.mjs";
3
+ import { i as findProjectRoot } from "./project-B8rbutVC.mjs";
4
+ import { a as clearRemoteSession, c as readMetroTunnel, i as clearManagedMetroTunnel, o as clearWorkspaceLaunches, s as clearWorkspaceSupervisor, u as readRemoteSession } from "./state-DcDgzfu3.mjs";
5
+ import { t as withWorkspaceProcessLock } from "./workspace-process-lock-BvvJTfo_.mjs";
6
+ import { f as refuseNoProject, l as phaseLine, p as releasedLeaseFact, u as plural } from "./command-output-BWCj5Vh-.mjs";
7
+ import { u as releaseWorkspaceLeases } from "./device-lease-B9LAXIUH.mjs";
8
+ import { d as teardownOwnedAvd, f as teardownOwnedIosSim, i as stopTunnel, t as resolveSupervisorTarget } from "./ownership-B8d4kXBx.mjs";
9
+ import { n as verifyCollectorOwnership } from "./ownership-Dqnrjrio.mjs";
10
+ import { f as resolveEasCliBin } from "./remote-cache-BRsRZru5.mjs";
11
+ import { _ as describeNativeRunHolder, b as requestNativeRunCancel, f as NATIVE_RUN_LOCK, g as decideStopAction, h as clearNativeRunCancel, i as endRecordedSession, p as NATIVE_RUN_WAIT_MS, v as nativeRunHolder, y as nativeRunWaitNotice } from "./device-remote-C0_o-tJH.mjs";
12
12
  import chalk from "chalk";
13
13
  //#region src/commands/stop.ts
14
14
  const DEFAULT_WAIT_MS = 1e4;
@@ -143,7 +143,10 @@ async function runStop(options) {
143
143
  clearCollectorState(projectRoot, expected);
144
144
  return !Object.keys(readCollectorState(projectRoot)).some((key) => parseDeviceSlotKey(key)?.slot === slot);
145
145
  }),
146
- clearState: () => true,
146
+ clearState: (projectRoot) => {
147
+ clearWorkspaceLaunches(projectRoot, slot);
148
+ return true;
149
+ },
147
150
  clearRegistration: async () => true,
148
151
  releaseLeases: (projectRoot) => releaseWorkspaceLeases(projectRoot, { slot })
149
152
  });
@@ -305,7 +308,7 @@ async function stopWorkspace({ root, project = void 0, state = void 0, collector
305
308
  };
306
309
  if (stillHolding) report(chalk.dim(phaseLine("device", "left alone (something is still running)")));
307
310
  else {
308
- outcomes.device = shutDownDevices(proj, {
311
+ outcomes.device = shutDownDevices(proj, root, {
309
312
  teardownIos,
310
313
  teardownAvd,
311
314
  report
@@ -579,7 +582,7 @@ function occupiedSkipReason(reason, holders) {
579
582
  const named = (holders || []).filter(Boolean);
580
583
  return named.length ? `${reason} -- held by UI-test runner ${named.join(", ")}` : `${reason} -- ${OCCUPANCY_HINT}`;
581
584
  }
582
- function shutDownDevices(project, { teardownIos, teardownAvd, report }) {
585
+ function shutDownDevices(project, workspace, { teardownIos, teardownAvd, report }) {
583
586
  const device = {
584
587
  ios: null,
585
588
  android: null
@@ -601,7 +604,8 @@ function shutDownDevices(project, { teardownIos, teardownAvd, report }) {
601
604
  report(chalk.dim(phaseLine("device", `${iosUdid} is not Stim-owned, leaving it running`)));
602
605
  } else device[iosKey] = reportDevice(iosUdid, teardownIos(iosUdid, {
603
606
  del: false,
604
- label: iosName
607
+ label: iosName,
608
+ workspace
605
609
  }), report, "ios");
606
610
  }
607
611
  const android = platforms.android;
@@ -614,7 +618,10 @@ function shutDownDevices(project, { teardownIos, teardownAvd, report }) {
614
618
  reason: "Stim does not own this device"
615
619
  };
616
620
  report(chalk.dim(phaseLine("device", `${android.avdName} is not Stim-owned, leaving it running`)));
617
- } else device[androidKey] = reportDevice(android.avdName, teardownAvd(android.avdName, { del: false }), report, "android");
621
+ } else device[androidKey] = reportDevice(android.avdName, teardownAvd(android.avdName, {
622
+ del: false,
623
+ workspace
624
+ }), report, "android");
618
625
  }
619
626
  }
620
627
  return device;
@@ -1,16 +1,16 @@
1
- import { B as parseDeviceSlotKey, C as setSupervisor, D as process_identity_exports, H as projectDeviceSlots, a as clearSupervisor, f as getProject } from "./config-BEq0Qw_a.mjs";
1
+ import { O as process_identity_exports, U as projectDeviceSlots, V as parseDeviceSlotKey, o as clearSupervisor, p as getProject, w as setSupervisor } from "./config-0jCcMM0E.mjs";
2
2
  import { r as createNdjsonWriter } from "./ndjson-CDY9IkVC.mjs";
3
- import { _ as withWorkspaceStateLock, j as workspaceLogsDir, m as readWorkspaceState$1, p as clearWorkspaceStateKeys, y as writeWorkspaceState } from "./metro-BWLOJ_Wr.mjs";
4
- import { a as detectIsExpo } from "./project-BXZzOABt.mjs";
3
+ import { _ as withWorkspaceStateLock, j as workspaceLogsDir, m as readWorkspaceState$1, p as clearWorkspaceStateKeys, y as writeWorkspaceState } from "./metro-Dzo30hvJ.mjs";
4
+ import { r as detectIsExpo } from "./project-B8rbutVC.mjs";
5
5
  import { t as describeError } from "./errors-B6W7FkxQ.mjs";
6
6
  import { t as relaunchWithLogFile } from "./detached-entry-DJHoca49.mjs";
7
- import { c as readPidFile, f as writePidFile, n as MODE_EXPO, o as clearWorkspaceSupervisor, r as clearExpoMetroTunnel, t as MODE_BARE } from "./state-WGdIbi_d.mjs";
8
- import { t as withWorkspaceProcessLock } from "./workspace-process-lock-Cx74RSDZ.mjs";
9
- import { a as parseLease, r as leaseIsExpired, s as parseWorkspaceLeases, t as deviceLeasePath } from "./device-lease-D83nqeMX.mjs";
10
- import { n as createActivityReader } from "./activity-BtG4Va9l.mjs";
11
- import { I as ownedAvdSerialResolver } from "./android-C4zG2Tuc.mjs";
12
- import { s as workspaceBuildInProgress } from "./idle-NETbeNiQ.mjs";
13
- import { n as withIdleWorkspace } from "./in-use-DVhlSoyn.mjs";
7
+ import { l as readPidFile, n as MODE_EXPO, p as writePidFile, r as clearExpoMetroTunnel, s as clearWorkspaceSupervisor, t as MODE_BARE } from "./state-DcDgzfu3.mjs";
8
+ import { t as withWorkspaceProcessLock } from "./workspace-process-lock-BvvJTfo_.mjs";
9
+ import { a as parseLease, r as leaseIsExpired, s as parseWorkspaceLeases, t as deviceLeasePath } from "./device-lease-B9LAXIUH.mjs";
10
+ import { n as createActivityReader } from "./activity-CCZJs__P.mjs";
11
+ import { L as ownedAvdSerialResolver } from "./android-75Sk2rIR.mjs";
12
+ import { s as workspaceBuildInProgress } from "./idle-S3tFZ53_.mjs";
13
+ import { n as withIdleWorkspace } from "./in-use-D9XYEgFD.mjs";
14
14
  import { existsSync, readFileSync, realpathSync, statSync } from "node:fs";
15
15
  import { LOG_ROTATE_BYTES } from "@stim-cli/core";
16
16
  import { IDLE_STOP_KEY } from "@stim-cli/core/state";
@@ -264,7 +264,7 @@ async function runSupervisor({ root, port, tunnel = false, resetCache = false, i
264
264
  return writer.write(entry);
265
265
  } });
266
266
  try {
267
- server = await (mode === "expo-child" ? startExpo || (await import("./server-expo-B-CCUJZj.mjs")).startExpoServer : startBare || (await import("./server-bare-D_RK1RCj.mjs")).startBareServer)({
267
+ server = await (mode === "expo-child" ? startExpo || (await import("./server-expo-eWi9Coof.mjs")).startExpoServer : startBare || (await import("./server-bare-Gn3ssSdK.mjs")).startBareServer)({
268
268
  root,
269
269
  port,
270
270
  logsDir,
@@ -1,5 +1,5 @@
1
- import { k as ownership_claim_exports } from "./config-BEq0Qw_a.mjs";
2
- import { n as declareSpawnsOn, o as stopDeclaringSpawnsOn } from "./spawn-claims-BJwXTMPt.mjs";
1
+ import { A as ownership_claim_exports } from "./config-0jCcMM0E.mjs";
2
+ import { n as declareSpawnsOn, o as stopDeclaringSpawnsOn } from "./spawn-claims-PT8aQpCa.mjs";
3
3
  import { join } from "node:path";
4
4
  //#region src/engine/workspace-process-lock.ts
5
5
  const DEFAULT_WAIT_MS = 6e4;
@@ -1,2 +1,2 @@
1
- import { a as reclaimKeys, c as removalBlockers, d as removeWorktreeTarget, f as worktreeCommand, i as porcelainPath, l as removalPath, n as excludePodChurn, o as registerRemove, r as matchWorktreeEntry, s as registerWarm, t as dependencyInstallCommand, u as removalRemedy } from "./worktree-KOjMX3zA.mjs";
1
+ import { a as reclaimKeys, c as removalBlockers, d as removeWorktreeTarget, f as worktreeCommand, i as porcelainPath, l as removalPath, n as excludePodChurn, o as registerRemove, r as matchWorktreeEntry, s as registerWarm, t as dependencyInstallCommand, u as removalRemedy } from "./worktree-ChDL5fO1.mjs";
2
2
  export { worktreeCommand as default, dependencyInstallCommand, excludePodChurn, matchWorktreeEntry, porcelainPath, reclaimKeys, registerRemove, registerWarm, removalBlockers, removalPath, removalRemedy, removeWorktreeTarget };
@@ -1,20 +1,21 @@
1
- import { D as process_identity_exports, H as projectDeviceSlots, O as acquireAvdClaim, b as removeProject, f as getProject, g as loadConfig, h as isPathPrefix, i as clearDevice, k as ownership_claim_exports, u as getConfigDir, w as upsertProject } from "./config-BEq0Qw_a.mjs";
1
+ import { A as ownership_claim_exports, O as process_identity_exports, T as upsertProject, U as projectDeviceSlots, _ as loadConfig, a as clearDevice, d as getConfigDir, g as isPathPrefix, k as acquireAvdClaim, p as getProject, x as removeProject } from "./config-0jCcMM0E.mjs";
2
2
  import { t as getExecutor } from "./exec-DK8KaVHK.mjs";
3
- import { O as workspaceDir, c as signalProcessTree, h as recordWorkspaceUse, i as pidExists, m as readWorkspaceState, s as resolveProjectMetro, t as killMetroTree } from "./metro-BWLOJ_Wr.mjs";
4
- import { C as sourceCheckoutOf, S as restoreFile, T as warmWorktreePaths, _ as readWorktreeExclude, b as resolveFullRef, d as hasUncommittedWork, f as isPodInstallChurn, g as podsOutOfSync, h as locallyKnownUpstream, i as depsOutOfSync, l as hasPopulatedSubmodules, m as listWorktrees, n as cloneIgnoredEntries, o as dirtyPaths, r as deleteBranch, s as gitCommonDir, t as branchExists, u as hasRemote, v as removeWorktree, w as unpushedCommits } from "./worktree-BlizKDpZ.mjs";
5
- import { o as findProjectRoot } from "./project-BXZzOABt.mjs";
6
- import { a as clearRemoteSession, i as clearManagedMetroTunnel, l as readRemoteSession, s as readMetroTunnel, u as readRemoteSessionId } from "./state-WGdIbi_d.mjs";
7
- import { a as formatElapsed, h as shortUdid, i as formatDuration, l as phaseLine, p as releasedLeaseFact, u as plural } from "./command-output-D5z2_bcF.mjs";
8
- import { u as releaseWorkspaceLeases } from "./device-lease-D83nqeMX.mjs";
9
- import { L as unknownSettingKeys, P as settingShapeErrors, a as SETTING_SHAPE_REMEDY, j as resolveSettings } from "./settings-B5oFZEri.mjs";
10
- import { d as teardownOwnedAvd, f as teardownOwnedIosSim, h as POOL_SETTING_REMEDY, i as stopTunnel, l as withManagedTunnelRemovalLock, s as withManagedRemoteWorktreeRemovalLock, t as resolveSupervisorTarget, y as parkedMaxSetting } from "./ownership-BiojdtAp.mjs";
11
- import { n as withIdleWorkspace, t as emptyWorkspaceDir } from "./in-use-DVhlSoyn.mjs";
12
- import { n as verifyCollectorOwnership } from "./ownership-D2xbLVoz.mjs";
13
- import { i as endRecordedSession, z as resolveEasCliBin } from "./device-remote-BQZSnnmE.mjs";
14
- import { h as podInstallCommand, n as HEARTBEAT_INTERVAL_MS } from "./xcode-B5SPD--o.mjs";
15
- import { n as hasInstalledDependencies, r as installedNpmTreeIsValid, t as dependencyState } from "./dependency-state-r9UesA9a.mjs";
16
- import { t as clearNamedPorts } from "./named-ports-Dc7neAlc.mjs";
17
- import { a as runPodInstall, i as runCaptured, n as podsAreStale, r as readPodState, t as DEPS_ERROR } from "./deps-OF7CD5Dx.mjs";
3
+ import { O as workspaceDir, c as signalProcessTree, h as recordWorkspaceUse, i as pidExists, m as readWorkspaceState, s as resolveProjectMetro, t as killMetroTree } from "./metro-Dzo30hvJ.mjs";
4
+ import { C as sourceCheckoutOf, S as restoreFile, T as warmWorktreePaths, _ as readWorktreeExclude, b as resolveFullRef, d as hasUncommittedWork, f as isPodInstallChurn, g as podsOutOfSync, h as locallyKnownUpstream, i as depsOutOfSync, l as hasPopulatedSubmodules, m as listWorktrees, n as cloneIgnoredEntries, o as dirtyPaths, r as deleteBranch, s as gitCommonDir, t as branchExists, u as hasRemote, v as removeWorktree, w as unpushedCommits } from "./worktree-DeBQSVtR.mjs";
5
+ import { i as findProjectRoot } from "./project-B8rbutVC.mjs";
6
+ import { a as clearRemoteSession, c as readMetroTunnel, d as readRemoteSessionId, i as clearManagedMetroTunnel, u as readRemoteSession } from "./state-DcDgzfu3.mjs";
7
+ import { a as formatElapsed, h as shortUdid, i as formatDuration, l as phaseLine, p as releasedLeaseFact, u as plural } from "./command-output-BWCj5Vh-.mjs";
8
+ import { u as releaseWorkspaceLeases } from "./device-lease-B9LAXIUH.mjs";
9
+ import { L as unknownSettingKeys, P as settingShapeErrors, a as SETTING_SHAPE_REMEDY, j as resolveSettings } from "./settings-BlyDn2Oz.mjs";
10
+ import { d as teardownOwnedAvd, f as teardownOwnedIosSim, h as POOL_SETTING_REMEDY, i as stopTunnel, l as withManagedTunnelRemovalLock, s as withManagedRemoteWorktreeRemovalLock, t as resolveSupervisorTarget, y as parkedMaxSetting } from "./ownership-B8d4kXBx.mjs";
11
+ import { n as withIdleWorkspace, t as emptyWorkspaceDir } from "./in-use-D9XYEgFD.mjs";
12
+ import { n as verifyCollectorOwnership } from "./ownership-Dqnrjrio.mjs";
13
+ import { f as resolveEasCliBin } from "./remote-cache-BRsRZru5.mjs";
14
+ import { i as endRecordedSession } from "./device-remote-C0_o-tJH.mjs";
15
+ import { h as podInstallCommand, n as HEARTBEAT_INTERVAL_MS } from "./xcode-BzplpQzc.mjs";
16
+ import { n as hasInstalledDependencies, r as installedNpmTreeIsValid, t as dependencyState } from "./dependency-state-DNN0yfx6.mjs";
17
+ import { t as clearNamedPorts } from "./named-ports-Dn1o61D9.mjs";
18
+ import { a as runPodInstall, i as runCaptured, n as podsAreStale, r as readPodState, t as DEPS_ERROR } from "./deps-CO-_7UOm.mjs";
18
19
  import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
19
20
  import { existsSync as existsSync$1, realpathSync as realpathSync$1 } from "fs";
20
21
  import { basename, dirname, isAbsolute, relative, resolve } from "path";
@@ -1,4 +1,4 @@
1
- import { g as loadConfig, u as getConfigDir } from "./config-BEq0Qw_a.mjs";
1
+ import { _ as loadConfig, d as getConfigDir } from "./config-0jCcMM0E.mjs";
2
2
  import { t as getExecutor } from "./exec-DK8KaVHK.mjs";
3
3
  import { accessSync, chmodSync, constants, lstatSync, mkdirSync, mkdtempSync, readdirSync, realpathSync, rmSync, statSync } from "node:fs";
4
4
  import { chmodSync as chmodSync$1, existsSync as existsSync$1, lstatSync as lstatSync$1, mkdirSync as mkdirSync$1, readFileSync as readFileSync$1, readdirSync as readdirSync$1, realpathSync as realpathSync$1, statSync as statSync$1, utimesSync } from "fs";
@@ -481,6 +481,7 @@ function dirtyFingerprintFiles(root) {
481
481
  }
482
482
  function hasUncommittedWork(dir) {
483
483
  const out = getExecutor().runFileQuiet("git", [
484
+ "--no-optional-locks",
484
485
  "-C",
485
486
  dir,
486
487
  "status",
@@ -491,6 +492,7 @@ function hasUncommittedWork(dir) {
491
492
  }
492
493
  function dirtyPaths(dir, { limit = 10 } = {}) {
493
494
  const out = getExecutor().runFileQuiet("git", [
495
+ "--no-optional-locks",
494
496
  "-C",
495
497
  dir,
496
498
  "status",
@@ -1,12 +1,12 @@
1
1
  import { t as getExecutor } from "./exec-DK8KaVHK.mjs";
2
- import { r as register } from "./cache-manifest-Pubfp8wV.mjs";
3
- import { D as workspaceDerivedData, w as sharedCompilationCache } from "./metro-BWLOJ_Wr.mjs";
4
- import { u as resolvePackageJson } from "./project-BXZzOABt.mjs";
5
- import { a as spawnDeclared } from "./spawn-claims-BJwXTMPt.mjs";
2
+ import { r as register } from "./cache-manifest-DWPF4RKJ.mjs";
3
+ import { D as workspaceDerivedData, w as sharedCompilationCache } from "./metro-Dzo30hvJ.mjs";
4
+ import { u as resolvePackageJson } from "./project-B8rbutVC.mjs";
5
+ import { a as spawnDeclared } from "./spawn-claims-PT8aQpCa.mjs";
6
6
  import { t as createLineReader } from "./process-output-Fpl8PYi8.mjs";
7
- import { a as formatElapsed, l as phaseLine } from "./command-output-D5z2_bcF.mjs";
8
- import { W as resolveOptimizations } from "./settings-B5oFZEri.mjs";
9
- import { t as cleanLine } from "./server-expo-o6H5gcBc.mjs";
7
+ import { a as formatElapsed, l as phaseLine } from "./command-output-BWCj5Vh-.mjs";
8
+ import { W as resolveOptimizations } from "./settings-BlyDn2Oz.mjs";
9
+ import { t as cleanLine } from "./server-expo-CeT1nIIk.mjs";
10
10
  import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
11
11
  import { basename, isAbsolute, join, relative, resolve, sep } from "node:path";
12
12
  import { createHash } from "node:crypto";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stim",
3
- "version": "1.11.0",
3
+ "version": "1.12.0",
4
4
  "description": "Stim: fast, isolated React Native environments for coding agents",
5
5
  "keywords": [
6
6
  "agent",
@@ -43,9 +43,9 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@expo/fingerprint": "^0.20.10",
46
- "@stim-cli/cache": "^1.11.0",
47
- "@stim-cli/core": "^1.11.0",
48
- "@stim-cli/metro": "^1.11.0",
46
+ "@stim-cli/cache": "^1.12.0",
47
+ "@stim-cli/core": "^1.12.0",
48
+ "@stim-cli/metro": "^1.12.0",
49
49
  "chalk": "^6.0.0",
50
50
  "commander": "^15.0.0",
51
51
  "cross-spawn": "^7.0.6",
@@ -53,7 +53,7 @@
53
53
  "ws": "^8.21.3"
54
54
  },
55
55
  "devDependencies": {
56
- "@stim-cli/expo-build-cache": "1.11.0",
56
+ "@stim-cli/expo-build-cache": "1.12.0",
57
57
  "@types/cross-spawn": "^6.0.6",
58
58
  "@types/which": "^3.0.4",
59
59
  "@types/ws": "^8.18.1",