@swmansion/argent 0.30.2-next.20 → 0.30.2-next.21

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.
package/dist/cli-cmds.mjs CHANGED
@@ -35594,7 +35594,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
35594
35594
  var SESSION_ID2 = randomUUID5();
35595
35595
  function readCliVersion() {
35596
35596
  if (true) {
35597
- return "0.30.2-next.20";
35597
+ return "0.30.2-next.21";
35598
35598
  }
35599
35599
  return "0.0.0";
35600
35600
  }
@@ -16900,7 +16900,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
16900
16900
  var SESSION_ID = randomUUID4();
16901
16901
  function readCliVersion() {
16902
16902
  if (true) {
16903
- return "0.30.2-next.20";
16903
+ return "0.30.2-next.21";
16904
16904
  }
16905
16905
  return "0.0.0";
16906
16906
  }
@@ -83679,6 +83679,7 @@ __export(adb_exports, {
83679
83679
  listAndroidDevices: () => listAndroidDevices,
83680
83680
  listAvds: () => listAvds,
83681
83681
  parseAdbDevices: () => parseAdbDevices,
83682
+ readEmulatorConsoleAvdName: () => readEmulatorConsoleAvdName,
83682
83683
  resolveAvdPath: () => resolveAvdPath,
83683
83684
  resolveEmulatorOrThrow: () => resolveEmulatorOrThrow,
83684
83685
  runAdb: () => runAdb,
@@ -83846,6 +83847,21 @@ async function readAvdName(serial) {
83846
83847
  ]);
83847
83848
  return modern.trim() || legacy.trim() || null;
83848
83849
  }
83850
+ async function readEmulatorConsoleAvdName(serial, options = {}) {
83851
+ try {
83852
+ const { stdout } = await runAdb(["-s", serial, "emu", "avd", "name"], {
83853
+ timeoutMs: options.timeoutMs ?? 2e3
83854
+ });
83855
+ const lines = stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
83856
+ const name = lines.find((line) => line !== "OK" && !line.startsWith("KO"));
83857
+ if (name && lines.includes("OK")) return { status: "ok", avdName: name };
83858
+ return { status: "unknown" };
83859
+ } catch (err) {
83860
+ const message = err instanceof Error ? err.message : String(err);
83861
+ if (/Connection refused/i.test(message)) return { status: "unreachable" };
83862
+ return { status: "unknown" };
83863
+ }
83864
+ }
83849
83865
  async function readRuntimeKind(serial) {
83850
83866
  const features = await adbShell(serial, "pm list features", {
83851
83867
  timeoutMs: ENRICH_TIMEOUT_MS
@@ -100945,7 +100961,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
100945
100961
  var SESSION_ID = (0, import_node_crypto3.randomUUID)();
100946
100962
  function readCliVersion() {
100947
100963
  if (true) {
100948
- return "0.30.2-next.20";
100964
+ return "0.30.2-next.21";
100949
100965
  }
100950
100966
  return "0.0.0";
100951
100967
  }
@@ -102556,7 +102572,7 @@ var import_node_path8 = __toESM(require("node:path"));
102556
102572
  var import_semver2 = __toESM(require_semver2());
102557
102573
 
102558
102574
  // ../tool-server/package.json
102559
- var version2 = "0.30.1";
102575
+ var version2 = "0.31.0";
102560
102576
 
102561
102577
  // ../tool-server/src/utils/update-checker.ts
102562
102578
  var import_update_core = __toESM(require_dist7());
@@ -136960,17 +136976,54 @@ function clearCachedProfilerPaths(port, deviceId) {
136960
136976
  }
136961
136977
 
136962
136978
  // ../tool-server/src/tools/devices/boot-device.ts
136963
- var import_node_child_process27 = require("node:child_process");
136979
+ var import_node_child_process28 = require("node:child_process");
136964
136980
  var import_node_fs12 = require("node:fs");
136965
136981
  var import_promises12 = require("node:fs/promises");
136966
136982
  var import_node_os11 = require("node:os");
136967
136983
  var import_node_path17 = require("node:path");
136968
- var import_node_util20 = require("node:util");
136984
+ var import_node_util21 = require("node:util");
136969
136985
  init_zod();
136970
136986
  init_src();
136971
136987
  init_src2();
136972
136988
  init_adb();
136973
136989
 
136990
+ // ../tool-server/src/utils/emulator-process.ts
136991
+ var import_node_child_process26 = require("node:child_process");
136992
+ var import_node_util20 = require("node:util");
136993
+ var execFileAsync20 = (0, import_node_util20.promisify)(import_node_child_process26.execFile);
136994
+ var EMULATOR_PROCESS_RE = /(?:^|\/)(?:qemu-system-[\w-]+|emulator|emulator64-[\w-]+)\s/;
136995
+ function escapeRegExp(value) {
136996
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
136997
+ }
136998
+ function parseEmulatorPidsForAvd(psOutput, avdName) {
136999
+ const avdArg = new RegExp(`(?:^|\\s)-avd\\s+${escapeRegExp(avdName)}(?:\\s|$)`);
137000
+ const pids = [];
137001
+ for (const line of psOutput.split("\n")) {
137002
+ const m = line.match(/^\s*(\d+)\s+(.*)$/);
137003
+ if (!m) continue;
137004
+ const argv = m[2];
137005
+ if (!EMULATOR_PROCESS_RE.test(argv) || !avdArg.test(argv)) continue;
137006
+ pids.push(parseInt(m[1], 10));
137007
+ }
137008
+ return pids;
137009
+ }
137010
+ async function listEmulatorPidsForAvd(avdName) {
137011
+ if (process.platform === "win32") return [];
137012
+ try {
137013
+ const { stdout } = await execFileAsync20(PS_BIN, [...PS_ARGS_WITH_PID], {
137014
+ timeout: 5e3,
137015
+ maxBuffer: 16 * 1024 * 1024
137016
+ });
137017
+ return parseEmulatorPidsForAvd(stdout, avdName);
137018
+ } catch (err) {
137019
+ process.stderr.write(
137020
+ `[emulator-process] ps probe failed; assuming no emulator runs "${avdName}": ${String(err)}
137021
+ `
137022
+ );
137023
+ return [];
137024
+ }
137025
+ }
137026
+
136974
137027
  // ../tool-server/src/utils/linux-preflight.ts
136975
137028
  var fs33 = __toESM(require("node:fs"));
136976
137029
  var import_node_os10 = require("node:os");
@@ -137456,7 +137509,7 @@ async function harmonyDumpLayout(connectKey, localPath, timeoutMs = UITEST_TIMEO
137456
137509
  }
137457
137510
 
137458
137511
  // ../tool-server/src/tools/devices/boot-electron.ts
137459
- var import_node_child_process26 = require("node:child_process");
137512
+ var import_node_child_process27 = require("node:child_process");
137460
137513
  var fs34 = __toESM(require("node:fs"));
137461
137514
  var path29 = __toESM(require("node:path"));
137462
137515
  init_src2();
@@ -137652,7 +137705,7 @@ async function bootElectronApp(options) {
137652
137705
  ];
137653
137706
  let child;
137654
137707
  try {
137655
- child = (0, import_node_child_process26.spawn)(launcher.command, args, {
137708
+ child = (0, import_node_child_process27.spawn)(launcher.command, args, {
137656
137709
  detached: true,
137657
137710
  // stdout is discarded, not piped: nothing reads it, and an unread pipe
137658
137711
  // blocks the child's writes once the OS buffer fills. The
@@ -137778,7 +137831,7 @@ async function bootElectronApp(options) {
137778
137831
  }
137779
137832
 
137780
137833
  // ../tool-server/src/tools/devices/boot-device.ts
137781
- var execFileAsync20 = (0, import_node_util20.promisify)(import_node_child_process27.execFile);
137834
+ var execFileAsync21 = (0, import_node_util21.promisify)(import_node_child_process28.execFile);
137782
137835
  var zodSchema9 = external_exports.object({
137783
137836
  udid: external_exports.string().optional().describe(
137784
137837
  "iOS: simulator UDID to boot (from `list-devices`). Provide exactly one of `udid`, `avdName`, `vvdImage`, <flag:harmonyos>`harmonyInstance`, </flag:harmonyos>or `electronAppPath`."
@@ -137889,7 +137942,7 @@ var BOOT_POLL_INTERVALS_MS = {
137889
137942
  earlyExit: 500,
137890
137943
  // createEarlyExitRacer: re-check the crash latch during a blocking adb call
137891
137944
  serialGone: 500
137892
- // awaitEmulatorsGone: re-scan adb devices for a killed emulator
137945
+ // awaitEmulatorsGone, awaitOwnEmulatorSettled: re-check for a dying emulator
137893
137946
  };
137894
137947
  var EMULATOR_GONE_BUDGET_MS = 3e4;
137895
137948
  var FRAME_PROBE = "screencap -p 2>/dev/null | wc -c | awk '$1>20000{print 1;exit} {print 0}'";
@@ -137994,6 +138047,48 @@ async function awaitEmulatorsGone(serials) {
137994
138047
  await new Promise((r) => setTimeout(r, BOOT_POLL_INTERVALS_MS.serialGone));
137995
138048
  }
137996
138049
  }
138050
+ function isRunningAvd(device, avdName) {
138051
+ return device.isEmulator && device.avdName === avdName && device.state === "device";
138052
+ }
138053
+ async function awaitOwnEmulatorSettled(avdName, deadline) {
138054
+ let healthy = null;
138055
+ let listing = null;
138056
+ while (Date.now() < deadline) {
138057
+ if (healthy) return healthy;
138058
+ if ((await listEmulatorPidsForAvd(avdName)).length === 0) return null;
138059
+ listing ??= listAndroidDevices().then((devices) => {
138060
+ if (devices.some((d) => isRunningAvd(d, avdName))) healthy = devices;
138061
+ }).catch(() => {
138062
+ }).finally(() => {
138063
+ listing = null;
138064
+ });
138065
+ await new Promise(
138066
+ (r) => setTimeout(r, Math.min(BOOT_POLL_INTERVALS_MS.serialGone, deadline - Date.now()))
138067
+ );
138068
+ }
138069
+ return healthy;
138070
+ }
138071
+ async function dropUnreachableSerials(devices, serialsBefore) {
138072
+ await Promise.all(
138073
+ devices.filter((d) => d.isEmulator && !(d.state === "device" && d.avdName !== null)).map(async (d) => {
138074
+ if ((await readEmulatorConsoleAvdName(d.serial)).status === "unreachable") {
138075
+ serialsBefore.delete(d.serial);
138076
+ }
138077
+ })
138078
+ );
138079
+ }
138080
+ async function pickOwnSerial(avdName, newSerials) {
138081
+ const names = await Promise.all(newSerials.map((s) => readEmulatorConsoleAvdName(s)));
138082
+ const own2 = newSerials.find((_, i) => {
138083
+ const answer = names[i];
138084
+ return answer.status === "ok" && answer.avdName === avdName;
138085
+ });
138086
+ if (own2) return own2;
138087
+ const unnamed = newSerials.filter((_, i) => names[i].status !== "ok");
138088
+ if (unnamed.length === 0) return null;
138089
+ if (unnamed.length === 1) return unnamed[0];
138090
+ return findSerialByAvdName(avdName, Date.now() + 3e3);
138091
+ }
137997
138092
  async function bootIos(udid, registry2, force, headless) {
137998
138093
  if (process.platform !== "darwin") {
137999
138094
  throw new FailureError(
@@ -138013,7 +138108,7 @@ async function bootIos(udid, registry2, force, headless) {
138013
138108
  const deviceSet = await deviceSetForUdid(udid);
138014
138109
  const prefix = simctlPrefix(deviceSet);
138015
138110
  if (force && simState === "Booted") {
138016
- await execFileAsync20("xcrun", [...prefix, "shutdown", udid]);
138111
+ await execFileAsync21("xcrun", [...prefix, "shutdown", udid]);
138017
138112
  }
138018
138113
  const needsPreBoot = simState === "Shutdown" || force && simState === "Booted";
138019
138114
  if (needsPreBoot) {
@@ -138024,13 +138119,13 @@ async function bootIos(udid, registry2, force, headless) {
138024
138119
  );
138025
138120
  });
138026
138121
  }
138027
- await execFileAsync20("xcrun", [...prefix, "boot", udid]).catch((err) => {
138122
+ await execFileAsync21("xcrun", [...prefix, "boot", udid]).catch((err) => {
138028
138123
  const message = err instanceof Error ? err.message : String(err);
138029
138124
  if (!message.includes("Unable to boot device in current state: Booted")) {
138030
138125
  throw err;
138031
138126
  }
138032
138127
  });
138033
- await execFileAsync20("xcrun", [...prefix, "bootstatus", udid, "-b"]);
138128
+ await execFileAsync21("xcrun", [...prefix, "bootstatus", udid, "-b"]);
138034
138129
  if (isTvOs && needsPreBoot) {
138035
138130
  await registry2.disposeService(`${TV_CONTROL_NAMESPACE}:${udid}`).catch((err) => {
138036
138131
  if (err instanceof ServiceNotFoundError) return;
@@ -138058,7 +138153,7 @@ async function bootIos(udid, registry2, force, headless) {
138058
138153
  return buildInitFailedResult(udid, initFailure);
138059
138154
  }
138060
138155
  if (!deviceSet) {
138061
- await execFileAsync20("defaults", [
138156
+ await execFileAsync21("defaults", [
138062
138157
  "write",
138063
138158
  "com.apple.iphonesimulator",
138064
138159
  "CurrentDeviceUDID",
@@ -138074,17 +138169,17 @@ async function bootIos(udid, registry2, force, headless) {
138074
138169
  }
138075
138170
  async function openSimulatorWindow(udid) {
138076
138171
  const timeout = 5e3;
138077
- const { stdout } = await execFileAsync20("xcode-select", ["-p"], { timeout });
138172
+ const { stdout } = await execFileAsync21("xcode-select", ["-p"], { timeout });
138078
138173
  const developerDir2 = (0, import_node_fs12.realpathSync)(stdout.trim());
138079
138174
  const simulatorApp = (0, import_node_path17.join)(developerDir2, "Applications", "Simulator.app");
138080
138175
  if ((0, import_node_fs12.existsSync)(simulatorApp)) {
138081
- await execFileAsync20("open", ["-a", simulatorApp], { timeout });
138176
+ await execFileAsync21("open", ["-a", simulatorApp], { timeout });
138082
138177
  return;
138083
138178
  }
138084
138179
  const deviceHubApp = (0, import_node_path17.join)(developerDir2, "..", "Applications", "DeviceHub.app");
138085
138180
  if ((0, import_node_fs12.existsSync)(deviceHubApp)) {
138086
138181
  const url2 = `devices://device/open?id=${encodeURIComponent(udid)}`;
138087
- await execFileAsync20("open", ["-a", deviceHubApp, url2], { timeout });
138182
+ await execFileAsync21("open", ["-a", deviceHubApp, url2], { timeout });
138088
138183
  }
138089
138184
  }
138090
138185
  async function bootIosRemote(id, registry2, force) {
@@ -138129,7 +138224,7 @@ async function attemptBoot(params) {
138129
138224
  emulatorLogFd = (0, import_node_fs12.openSync)(logPath, "w");
138130
138225
  stdio = ["ignore", emulatorLogFd, emulatorLogFd];
138131
138226
  }
138132
- const child = (0, import_node_child_process27.spawn)(params.emulatorBinary, params.emulatorArgs, {
138227
+ const child = (0, import_node_child_process28.spawn)(params.emulatorBinary, params.emulatorArgs, {
138133
138228
  detached: true,
138134
138229
  stdio
138135
138230
  });
@@ -138168,13 +138263,9 @@ async function attemptBoot(params) {
138168
138263
  if (launchError) throw launchError;
138169
138264
  const newSerials = await listNewEmulatorSerials(params.serialsBefore);
138170
138265
  if (newSerials.length >= 1) {
138171
- if (newSerials.length === 1) {
138172
- serial = newSerials[0];
138173
- break;
138174
- }
138175
- const byAvd = await findSerialByAvdName(params.avdName, Date.now() + 3e3);
138176
- if (byAvd) {
138177
- serial = byAvd;
138266
+ const own2 = await pickOwnSerial(params.avdName, newSerials);
138267
+ if (own2) {
138268
+ serial = own2;
138178
138269
  break;
138179
138270
  }
138180
138271
  }
@@ -138343,15 +138434,20 @@ async function bootAndroidImpl(params) {
138343
138434
  await runAdb(["start-server"], { timeoutMs: 1e4 }).catch(() => {
138344
138435
  });
138345
138436
  const existingDevices = await listAndroidDevices().catch(() => []);
138437
+ if (!existingDevices.some((d) => isRunningAvd(d, params.avdName))) {
138438
+ const settled = await awaitOwnEmulatorSettled(
138439
+ params.avdName,
138440
+ Math.min(overallDeadline, Date.now() + EMULATOR_GONE_BUDGET_MS)
138441
+ );
138442
+ if (settled) existingDevices.splice(0, existingDevices.length, ...settled);
138443
+ }
138346
138444
  let hotBootFailureReason;
138347
138445
  const dropKilledEmulator = async (serial) => {
138348
138446
  await awaitEmulatorsGone([serial]);
138349
138447
  const refreshed = await listAndroidDevices().catch(() => existingDevices);
138350
138448
  existingDevices.splice(0, existingDevices.length, ...refreshed);
138351
138449
  };
138352
- const alreadyRunning = existingDevices.find(
138353
- (d) => d.isEmulator && d.avdName === params.avdName && d.state === "device"
138354
- );
138450
+ const alreadyRunning = existingDevices.find((d) => isRunningAvd(d, params.avdName));
138355
138451
  if (alreadyRunning) {
138356
138452
  if (params.force) {
138357
138453
  await killEmulatorQuietly(alreadyRunning.serial);
@@ -138373,6 +138469,7 @@ async function bootAndroidImpl(params) {
138373
138469
  }
138374
138470
  }
138375
138471
  const serialsBefore = new Set(existingDevices.map((d) => d.serial));
138472
+ await dropUnreachableSerials(existingDevices, serialsBefore);
138376
138473
  const crashReportArgs = await emulatorSupportsFlag("-crash-report-mode") ? ["-crash-report-mode", "never"] : [];
138377
138474
  const hasSnapshot = await hasDefaultBootSnapshot(params.avdName);
138378
138475
  if (!hasSnapshot) {
@@ -138671,7 +138768,7 @@ async function startHarmonyEmulator(instanceName) {
138671
138768
  } catch {
138672
138769
  logFd = null;
138673
138770
  }
138674
- const child = (0, import_node_child_process27.spawn)(bin, ["-start", instanceName], {
138771
+ const child = (0, import_node_child_process28.spawn)(bin, ["-start", instanceName], {
138675
138772
  detached: true,
138676
138773
  stdio: logFd === null ? "ignore" : ["ignore", logFd, logFd]
138677
138774
  });
@@ -139187,11 +139284,11 @@ var BUNDLE_ID_PATTERN = /^[A-Za-z0-9_][A-Za-z0-9._-]*$/;
139187
139284
  var BUNDLE_ID_MESSAGE = "bundleId may only contain letters, digits, '.', '_' and '-', and may not start with '-' or '.'";
139188
139285
 
139189
139286
  // ../tool-server/src/tools/launch-app/platforms/ios.ts
139190
- var import_node_child_process28 = require("node:child_process");
139191
- var import_node_util21 = require("node:util");
139287
+ var import_node_child_process29 = require("node:child_process");
139288
+ var import_node_util22 = require("node:util");
139192
139289
  init_src2();
139193
139290
  init_external_devices();
139194
- var execFileAsync21 = (0, import_node_util21.promisify)(import_node_child_process28.execFile);
139291
+ var execFileAsync22 = (0, import_node_util22.promisify)(import_node_child_process29.execFile);
139195
139292
  function makeIosImpl(registry2) {
139196
139293
  return {
139197
139294
  requires: ["xcrun"],
@@ -139207,7 +139304,7 @@ function makeIosImpl(registry2) {
139207
139304
  }
139208
139305
  if (params.launchArgs?.length) {
139209
139306
  try {
139210
- await execFileAsync21(
139307
+ await execFileAsync22(
139211
139308
  "xcrun",
139212
139309
  await simctlArgsForUdid(params.udid, ["terminate", params.udid, params.bundleId])
139213
139310
  );
@@ -139215,7 +139312,7 @@ function makeIosImpl(registry2) {
139215
139312
  }
139216
139313
  }
139217
139314
  try {
139218
- await execFileAsync21(
139315
+ await execFileAsync22(
139219
139316
  "xcrun",
139220
139317
  await simctlArgsForUdid(params.udid, [
139221
139318
  "launch",
@@ -139684,11 +139781,11 @@ init_zod();
139684
139781
  init_device_info();
139685
139782
 
139686
139783
  // ../tool-server/src/tools/restart-app/platforms/ios.ts
139687
- var import_node_child_process29 = require("node:child_process");
139688
- var import_node_util22 = require("node:util");
139784
+ var import_node_child_process30 = require("node:child_process");
139785
+ var import_node_util23 = require("node:util");
139689
139786
  init_src2();
139690
139787
  init_external_devices();
139691
- var execFileAsync22 = (0, import_node_util22.promisify)(import_node_child_process29.execFile);
139788
+ var execFileAsync23 = (0, import_node_util23.promisify)(import_node_child_process30.execFile);
139692
139789
  function makeIosImpl2(registry2) {
139693
139790
  return {
139694
139791
  requires: ["xcrun"],
@@ -139704,11 +139801,11 @@ function makeIosImpl2(registry2) {
139704
139801
  if (blocked) return blocked;
139705
139802
  }
139706
139803
  try {
139707
- await execFileAsync22("xcrun", await simctlArgsForUdid(udid, ["terminate", udid, bundleId]));
139804
+ await execFileAsync23("xcrun", await simctlArgsForUdid(udid, ["terminate", udid, bundleId]));
139708
139805
  } catch {
139709
139806
  }
139710
139807
  try {
139711
- await execFileAsync22(
139808
+ await execFileAsync23(
139712
139809
  "xcrun",
139713
139810
  await simctlArgsForUdid(udid, ["launch", udid, bundleId, ...params.launchArgs ?? []])
139714
139811
  );
@@ -139911,11 +140008,11 @@ Returns { restarted, bundleId }. Fails if the app is not installed.`,
139911
140008
  }
139912
140009
 
139913
140010
  // ../tool-server/src/tools/terminate-app/index.ts
139914
- var import_node_child_process30 = require("node:child_process");
139915
- var import_node_util23 = require("node:util");
140011
+ var import_node_child_process31 = require("node:child_process");
140012
+ var import_node_util24 = require("node:util");
139916
140013
  init_zod();
139917
140014
  init_adb();
139918
- var execFileAsync23 = (0, import_node_util23.promisify)(import_node_child_process30.execFile);
140015
+ var execFileAsync24 = (0, import_node_util24.promisify)(import_node_child_process31.execFile);
139919
140016
  var zodSchema12 = external_exports.object({
139920
140017
  udid: external_exports.string().min(1).describe("Target device id from `list-devices`."),
139921
140018
  bundleId: external_exports.string().min(1).regex(BUNDLE_ID_PATTERN, BUNDLE_ID_MESSAGE).describe("App identifier. iOS: bundle id. Android: package name.")
@@ -139958,7 +140055,7 @@ Succeeds when the app is not running or not installed.`,
139958
140055
  requires: ["xcrun"],
139959
140056
  handler: async (_services, { udid, bundleId }) => {
139960
140057
  const args = await simctlArgsForUdid(udid, ["terminate", udid, bundleId]);
139961
- const terminated = await tolerateNotRunning(execFileAsync23("xcrun", args));
140058
+ const terminated = await tolerateNotRunning(execFileAsync24("xcrun", args));
139962
140059
  return { terminated, bundleId };
139963
140060
  }
139964
140061
  },
@@ -139990,16 +140087,16 @@ Succeeds when the app is not running or not installed.`,
139990
140087
  init_zod();
139991
140088
 
139992
140089
  // ../tool-server/src/tools/reinstall-app/platforms/ios.ts
139993
- var import_node_child_process32 = require("node:child_process");
139994
- var import_node_util25 = require("node:util");
140090
+ var import_node_child_process33 = require("node:child_process");
140091
+ var import_node_util26 = require("node:util");
139995
140092
  var import_node_path19 = require("node:path");
139996
140093
  init_src2();
139997
140094
 
139998
140095
  // ../tool-server/src/tools/reinstall-app/validate-app.ts
139999
- var import_node_child_process31 = require("node:child_process");
140096
+ var import_node_child_process32 = require("node:child_process");
140000
140097
  var import_promises14 = require("node:fs/promises");
140001
140098
  var import_node_path18 = require("node:path");
140002
- var import_node_util24 = require("node:util");
140099
+ var import_node_util25 = require("node:util");
140003
140100
  init_capability();
140004
140101
 
140005
140102
  // ../tool-server/src/utils/apk-package.ts
@@ -140098,7 +140195,7 @@ function readStringPool(xml, chunk) {
140098
140195
  }
140099
140196
 
140100
140197
  // ../tool-server/src/tools/reinstall-app/validate-app.ts
140101
- var execFileAsync24 = (0, import_node_util24.promisify)(import_node_child_process31.execFile);
140198
+ var execFileAsync25 = (0, import_node_util25.promisify)(import_node_child_process32.execFile);
140102
140199
  async function requirePath(absolute, kind, what) {
140103
140200
  const info = await (0, import_promises14.stat)(absolute).catch(() => null);
140104
140201
  if (!info) {
@@ -140122,7 +140219,7 @@ async function assertIosAppBundle(absolute, bundleId, { readBundleId = true } =
140122
140219
  );
140123
140220
  }
140124
140221
  if (!readBundleId) return;
140125
- const actual = await execFileAsync24("plutil", [
140222
+ const actual = await execFileAsync25("plutil", [
140126
140223
  "-extract",
140127
140224
  "CFBundleIdentifier",
140128
140225
  "raw",
@@ -140175,7 +140272,7 @@ async function assertHap(absolute, bundleName) {
140175
140272
  }
140176
140273
 
140177
140274
  // ../tool-server/src/tools/reinstall-app/platforms/ios.ts
140178
- var execFileAsync25 = (0, import_node_util25.promisify)(import_node_child_process32.execFile);
140275
+ var execFileAsync26 = (0, import_node_util26.promisify)(import_node_child_process33.execFile);
140179
140276
  var iosImpl = {
140180
140277
  requires: ["xcrun"],
140181
140278
  handler: async (_services, params) => {
@@ -140184,11 +140281,11 @@ var iosImpl = {
140184
140281
  await assertIosAppBundle(absolute, bundleId);
140185
140282
  const { nativeId, prefix } = await simctlTargetForUdid(udid);
140186
140283
  try {
140187
- await execFileAsync25("xcrun", [...prefix, "uninstall", nativeId, bundleId]);
140284
+ await execFileAsync26("xcrun", [...prefix, "uninstall", nativeId, bundleId]);
140188
140285
  } catch {
140189
140286
  }
140190
140287
  try {
140191
- await execFileAsync25("xcrun", [...prefix, "install", nativeId, absolute]);
140288
+ await execFileAsync26("xcrun", [...prefix, "install", nativeId, absolute]);
140192
140289
  } catch (err) {
140193
140290
  throw new FailureError(
140194
140291
  `Failed to install iOS app bundle on ${udid}.`,
@@ -140415,11 +140512,11 @@ var PERMISSION_NAMES = [
140415
140512
  ];
140416
140513
 
140417
140514
  // ../tool-server/src/tools/settings-permissions/platforms/ios.ts
140418
- var import_node_child_process33 = require("node:child_process");
140419
- var import_node_util26 = require("node:util");
140515
+ var import_node_child_process34 = require("node:child_process");
140516
+ var import_node_util27 = require("node:util");
140420
140517
  init_src2();
140421
140518
  init_capability();
140422
- var execFileAsync26 = (0, import_node_util26.promisify)(import_node_child_process33.execFile);
140519
+ var execFileAsync27 = (0, import_node_util27.promisify)(import_node_child_process34.execFile);
140423
140520
  var SIMCTL_ACTION = {
140424
140521
  grant: "grant",
140425
140522
  deny: "revoke",
@@ -140444,7 +140541,7 @@ var NON_TCC_GRANT_NEEDS_INSTALL = /* @__PURE__ */ new Set([
140444
140541
  ]);
140445
140542
  var localBackend = {
140446
140543
  async run(udid, simctlAction, service, bundleId) {
140447
- await execFileAsync26(
140544
+ await execFileAsync27(
140448
140545
  "xcrun",
140449
140546
  await simctlArgsForUdid(udid, ["privacy", udid, simctlAction, service, bundleId]),
140450
140547
  { timeout: 3e4 }
@@ -140452,7 +140549,7 @@ var localBackend = {
140452
140549
  },
140453
140550
  async isInstalled(udid, bundleId) {
140454
140551
  try {
140455
- await execFileAsync26(
140552
+ await execFileAsync27(
140456
140553
  "xcrun",
140457
140554
  await simctlArgsForUdid(udid, ["get_app_container", udid, bundleId]),
140458
140555
  { timeout: 15e3 }
@@ -140736,8 +140833,8 @@ init_zod();
140736
140833
  init_device_info();
140737
140834
 
140738
140835
  // ../tool-server/src/tools/open-url/platforms/ios.ts
140739
- var import_node_child_process34 = require("node:child_process");
140740
- var import_node_util27 = require("node:util");
140836
+ var import_node_child_process35 = require("node:child_process");
140837
+ var import_node_util28 = require("node:util");
140741
140838
  init_src2();
140742
140839
 
140743
140840
  // ../tool-server/src/tools/open-url/deep-link-note.ts
@@ -140747,12 +140844,12 @@ function httpDeepLinkNote(url2) {
140747
140844
  }
140748
140845
 
140749
140846
  // ../tool-server/src/tools/open-url/platforms/ios.ts
140750
- var execFileAsync27 = (0, import_node_util27.promisify)(import_node_child_process34.execFile);
140847
+ var execFileAsync28 = (0, import_node_util28.promisify)(import_node_child_process35.execFile);
140751
140848
  var iosImpl3 = {
140752
140849
  requires: ["xcrun"],
140753
140850
  handler: async (_services, params) => {
140754
140851
  try {
140755
- await execFileAsync27(
140852
+ await execFileAsync28(
140756
140853
  "xcrun",
140757
140854
  await simctlArgsForUdid(params.udid, ["openurl", params.udid, params.url])
140758
140855
  );
@@ -140929,8 +141026,8 @@ Returns { opened, url, note? }. note carries the deep-linking caveat when a web
140929
141026
  };
140930
141027
 
140931
141028
  // ../tool-server/src/tools/screenshot/index.ts
140932
- var import_node_child_process35 = require("node:child_process");
140933
- var import_node_util28 = require("node:util");
141029
+ var import_node_child_process36 = require("node:child_process");
141030
+ var import_node_util29 = require("node:util");
140934
141031
  var os13 = __toESM(require("node:os"));
140935
141032
  var path30 = __toESM(require("node:path"));
140936
141033
  init_zod();
@@ -141555,7 +141652,7 @@ async function captureHarmonyScreenshotPng(opts) {
141555
141652
  // ../tool-server/src/tools/screenshot/index.ts
141556
141653
  init_capability();
141557
141654
  var fs36 = __toESM(require("node:fs/promises"));
141558
- var execFileAsync28 = (0, import_node_util28.promisify)(import_node_child_process35.execFile);
141655
+ var execFileAsync29 = (0, import_node_util29.promisify)(import_node_child_process36.execFile);
141559
141656
  var zodSchema16 = external_exports.object({
141560
141657
  udid: external_exports.string().describe(
141561
141658
  "Target device id from `list-devices` (iOS UDID, Android serial, Apple TV UDID, Vega serial, <flag:harmonyos>HarmonyOS id, </flag:harmonyos>or Chromium id)."
@@ -141597,11 +141694,11 @@ async function tvScreenshot(udid, scale, signal) {
141597
141694
  os13.tmpdir(),
141598
141695
  `argent-tv-screenshot-${udid.slice(0, 8)}-${process.hrtime.bigint()}.png`
141599
141696
  );
141600
- await execFileAsync28("xcrun", await simctlArgsForUdid(udid, ["io", udid, "screenshot", file2]), {
141697
+ await execFileAsync29("xcrun", await simctlArgsForUdid(udid, ["io", udid, "screenshot", file2]), {
141601
141698
  signal
141602
141699
  });
141603
141700
  if (scale === void 0 || scale < 1) {
141604
- await execFileAsync28("sips", ["-Z", String(await tvTargetLongSide(file2, scale)), file2], {
141701
+ await execFileAsync29("sips", ["-Z", String(await tvTargetLongSide(file2, scale)), file2], {
141605
141702
  signal
141606
141703
  }).catch(() => {
141607
141704
  });
@@ -141611,7 +141708,7 @@ async function tvScreenshot(udid, scale, signal) {
141611
141708
  async function tvTargetLongSide(file2, scale) {
141612
141709
  let longSide = 3840;
141613
141710
  try {
141614
- const { stdout } = await execFileAsync28("sips", ["-g", "pixelWidth", "-g", "pixelHeight", file2]);
141711
+ const { stdout } = await execFileAsync29("sips", ["-g", "pixelWidth", "-g", "pixelHeight", file2]);
141615
141712
  const width = Number(/pixelWidth:\s*(\d+)/.exec(stdout)?.[1]);
141616
141713
  const height = Number(/pixelHeight:\s*(\d+)/.exec(stdout)?.[1]);
141617
141714
  if (Number.isFinite(width) && Number.isFinite(height) && width > 0 && height > 0) {
@@ -141646,7 +141743,7 @@ async function downscalePngInPlace(file2, scale, signal) {
141646
141743
  if (scale >= 1) {
141647
141744
  return;
141648
141745
  }
141649
- await execFileAsync28("sips", ["-Z", String(await tvTargetLongSide(file2, scale)), file2], {
141746
+ await execFileAsync29("sips", ["-Z", String(await tvTargetLongSide(file2, scale)), file2], {
141650
141747
  signal
141651
141748
  }).catch(() => {
141652
141749
  });
@@ -143991,13 +144088,13 @@ var shakeZodSchema = external_exports.object({
143991
144088
  });
143992
144089
 
143993
144090
  // ../tool-server/src/tools/shake/platforms/ios.ts
143994
- var import_node_child_process37 = require("node:child_process");
143995
- var import_node_util29 = require("node:util");
144091
+ var import_node_child_process38 = require("node:child_process");
144092
+ var import_node_util30 = require("node:util");
143996
144093
  init_src2();
143997
144094
  init_capability();
143998
144095
 
143999
144096
  // ../tool-server/src/utils/window-shake.ts
144000
- var import_node_child_process36 = require("node:child_process");
144097
+ var import_node_child_process37 = require("node:child_process");
144001
144098
  init_src();
144002
144099
  var MICROINTERACTIONS_FLAG = "microinteractions";
144003
144100
  var AMPLITUDE = 22;
@@ -144104,7 +144201,7 @@ end run
144104
144201
  }
144105
144202
  function runOsascript(script) {
144106
144203
  return new Promise((resolve16, reject) => {
144107
- const child = (0, import_node_child_process36.execFile)(
144204
+ const child = (0, import_node_child_process37.execFile)(
144108
144205
  "/usr/bin/osascript",
144109
144206
  ["-"],
144110
144207
  { timeout: OSASCRIPT_TIMEOUT_MS },
@@ -144197,7 +144294,7 @@ async function prepareHostWindowShake(target) {
144197
144294
  }
144198
144295
 
144199
144296
  // ../tool-server/src/tools/shake/platforms/ios.ts
144200
- var execFileAsync29 = (0, import_node_util29.promisify)(import_node_child_process37.execFile);
144297
+ var execFileAsync30 = (0, import_node_util30.promisify)(import_node_child_process38.execFile);
144201
144298
  var SHAKE_NOTIFICATION = "com.apple.UIKit.SimulatorShake";
144202
144299
  var SHAKE_INTERVAL_MS = 400;
144203
144300
  var sleep11 = (ms) => new Promise((r) => setTimeout(r, ms));
@@ -144239,7 +144336,7 @@ var iosImpl4 = {
144239
144336
  if (i > 0) await sleep11(SHAKE_INTERVAL_MS);
144240
144337
  shaker.begin();
144241
144338
  try {
144242
- await execFileAsync29("xcrun", args, { timeout: 15e3 });
144339
+ await execFileAsync30("xcrun", args, { timeout: 15e3 });
144243
144340
  } catch (err) {
144244
144341
  const error63 = err instanceof Error ? err : new Error(String(err));
144245
144342
  throw shakeFailure(udid, error63.message, error63);
@@ -155003,10 +155100,10 @@ function classifyStaleness({
155003
155100
 
155004
155101
  // ../tool-server/src/utils/debugger/runtime-device.ts
155005
155102
  var import_node_crypto12 = require("node:crypto");
155006
- var import_node_child_process38 = require("node:child_process");
155007
- var import_node_util30 = require("node:util");
155103
+ var import_node_child_process39 = require("node:child_process");
155104
+ var import_node_util31 = require("node:util");
155008
155105
  init_adb();
155009
- var execFileAsync30 = (0, import_node_util30.promisify)(import_node_child_process38.execFile);
155106
+ var execFileAsync31 = (0, import_node_util31.promisify)(import_node_child_process39.execFile);
155010
155107
  var LOG_READ_TIMEOUT_MS = 5e3;
155011
155108
  var RETRY_DELAY_MS = 300;
155012
155109
  async function findRuntimeDevice(cdp) {
@@ -155080,7 +155177,7 @@ async function simulatorLogHolds(udid, marker) {
155080
155177
  "--predicate",
155081
155178
  `eventMessage CONTAINS ${JSON.stringify(marker)} AND process != "log"`
155082
155179
  ]);
155083
- const { stdout } = await execFileAsync30("xcrun", args, {
155180
+ const { stdout } = await execFileAsync31("xcrun", args, {
155084
155181
  timeout: LOG_READ_TIMEOUT_MS,
155085
155182
  killSignal: SIMCTL_KILL_SIGNAL,
155086
155183
  encoding: "utf-8"
@@ -158421,8 +158518,8 @@ var import_util14 = require("util");
158421
158518
  var DEFAULT_EXEC_TIMEOUT_MS = 6e4;
158422
158519
  var DEFAULT_EXEC_MAX_BUFFER = 256 * 1024 * 1024;
158423
158520
  async function execFileAsyncWithTimeout(file2, args, options = {}) {
158424
- const execFileAsync35 = (0, import_util14.promisify)(import_child_process2.execFile);
158425
- const { stdout, stderr } = await execFileAsync35(file2, args, {
158521
+ const execFileAsync36 = (0, import_util14.promisify)(import_child_process2.execFile);
158522
+ const { stdout, stderr } = await execFileAsync36(file2, args, {
158426
158523
  encoding: "utf-8",
158427
158524
  ...options,
158428
158525
  // Applied after ...options so a caller cannot weaken the guards; maxBuffer
@@ -162475,7 +162572,7 @@ var WATERMARK_PNG_HEIGHT = 277;
162475
162572
  var WATERMARK_PNG_BASE64 = "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";
162476
162573
 
162477
162574
  // ../tool-server/src/tools/screen-recording/watermark.ts
162478
- var execFileAsync31 = (0, import_util15.promisify)(import_child_process6.execFile);
162575
+ var execFileAsync32 = (0, import_util15.promisify)(import_child_process6.execFile);
162479
162576
  var OUTPUT_FPS = 30;
162480
162577
  var FFMPEG_FALLBACK_PATHS = [
162481
162578
  "/opt/homebrew/bin/ffmpeg",
@@ -162492,7 +162589,7 @@ var MASK_DARK_MAX_LUMA = 90;
162492
162589
  var MASK_LIGHT_MIN_LUMA = 165;
162493
162590
  async function resolveBinary(name, fallbacks) {
162494
162591
  try {
162495
- await execFileAsync31("/bin/sh", ["-c", `command -v ${name}`], { timeout: 2e3 });
162592
+ await execFileAsync32("/bin/sh", ["-c", `command -v ${name}`], { timeout: 2e3 });
162496
162593
  return name;
162497
162594
  } catch {
162498
162595
  }
@@ -165303,7 +165400,7 @@ Returns { stopped } - the URNs of the services that were actually live and got s
165303
165400
 
165304
165401
  // ../tool-server/src/tools/simulator/stop-metro.ts
165305
165402
  init_zod();
165306
- var import_node_child_process39 = require("node:child_process");
165403
+ var import_node_child_process40 = require("node:child_process");
165307
165404
  function parseNetstatListeningPids(netstatOutput, port) {
165308
165405
  const pids = /* @__PURE__ */ new Set();
165309
165406
  for (const line of netstatOutput.split(/\r?\n/)) {
@@ -165319,7 +165416,7 @@ function parseNetstatListeningPids(netstatOutput, port) {
165319
165416
  }
165320
165417
  function listeningPids(port) {
165321
165418
  if (process.platform === "win32") {
165322
- const output3 = (0, import_node_child_process39.execFileSync)("netstat", ["-ano"], {
165419
+ const output3 = (0, import_node_child_process40.execFileSync)("netstat", ["-ano"], {
165323
165420
  encoding: "utf-8",
165324
165421
  timeout: 5e3,
165325
165422
  // `netstat -ano` dumps every socket on the host; overflowing Node's
@@ -165328,7 +165425,7 @@ function listeningPids(port) {
165328
165425
  });
165329
165426
  return parseNetstatListeningPids(output3, port);
165330
165427
  }
165331
- const output2 = (0, import_node_child_process39.execFileSync)("lsof", ["-ti", `tcp:${port}`, "-sTCP:LISTEN"], {
165428
+ const output2 = (0, import_node_child_process40.execFileSync)("lsof", ["-ti", `tcp:${port}`, "-sTCP:LISTEN"], {
165332
165429
  encoding: "utf-8",
165333
165430
  timeout: 5e3
165334
165431
  }).trim();
@@ -171085,7 +171182,7 @@ var import_node_url4 = require("node:url");
171085
171182
  init_src2();
171086
171183
 
171087
171184
  // ../tool-server/src/tools/flows/script/flow-script-executor.ts
171088
- var import_node_child_process40 = require("node:child_process");
171185
+ var import_node_child_process41 = require("node:child_process");
171089
171186
  var fs59 = __toESM(require("node:fs"));
171090
171187
  var os17 = __toESM(require("node:os"));
171091
171188
  var path45 = __toESM(require("node:path"));
@@ -171470,7 +171567,7 @@ var FlowScriptExecutor = class {
171470
171567
  detached: process.platform !== "win32",
171471
171568
  windowsHide: process.platform === "win32"
171472
171569
  };
171473
- child = (0, import_node_child_process40.fork)(scriptPath, [], forkOptions);
171570
+ child = (0, import_node_child_process41.fork)(scriptPath, [], forkOptions);
171474
171571
  } catch (err) {
171475
171572
  return emptyResult(
171476
171573
  { kind: "spawn", message: `Could not start the script process: ${errorMessage(err)}` },
@@ -171914,7 +172011,7 @@ async function stopProcessTree(child, graceMs) {
171914
172011
  if (process.platform === "win32") {
171915
172012
  if (hasExited(child)) return;
171916
172013
  tryKill(() => {
171917
- const killer = (0, import_node_child_process40.spawn)("taskkill", ["/pid", String(pid), "/t", "/f"], {
172014
+ const killer = (0, import_node_child_process41.spawn)("taskkill", ["/pid", String(pid), "/t", "/f"], {
171918
172015
  windowsHide: true,
171919
172016
  stdio: "ignore"
171920
172017
  });
@@ -172636,7 +172733,7 @@ init_src2();
172636
172733
  // ../tool-server/src/tools/screenshot-diff/screenshot-diff-ocr.ts
172637
172734
  var import_child_process8 = require("child_process");
172638
172735
  var import_util16 = require("util");
172639
- var execFileAsync32 = (0, import_util16.promisify)(import_child_process8.execFile);
172736
+ var execFileAsync33 = (0, import_util16.promisify)(import_child_process8.execFile);
172640
172737
  var OCR_TIMEOUT_MS = 1e4;
172641
172738
  var OCR_MAX_BUFFER_BYTES = 32 * 1024 * 1024;
172642
172739
  var TESSERACT_BINARY = "tesseract";
@@ -172681,7 +172778,7 @@ async function extractOcrTextBlocks(imagePath) {
172681
172778
  }
172682
172779
  }
172683
172780
  async function recognizeTsv(imagePath) {
172684
- const { stdout } = await execFileAsync32(
172781
+ const { stdout } = await execFileAsync33(
172685
172782
  TESSERACT_BINARY,
172686
172783
  [
172687
172784
  imagePath,
@@ -174963,11 +175060,11 @@ async function runSnapshot(env, opts) {
174963
175060
  }
174964
175061
 
174965
175062
  // ../tool-server/src/utils/status-bar.ts
174966
- var import_node_child_process41 = require("node:child_process");
174967
- var import_node_util31 = require("node:util");
175063
+ var import_node_child_process42 = require("node:child_process");
175064
+ var import_node_util32 = require("node:util");
174968
175065
  init_adb();
174969
175066
  init_device_info();
174970
- var execFileAsync33 = (0, import_node_util31.promisify)(import_node_child_process41.execFile);
175067
+ var execFileAsync34 = (0, import_node_util32.promisify)(import_node_child_process42.execFile);
174971
175068
  var DEMO_BROADCAST = "am broadcast -a com.android.systemui.demo";
174972
175069
  var IOS_STATUS_BAR_OVERRIDE = [
174973
175070
  "override",
@@ -174991,7 +175088,7 @@ async function pinStatusBar(device, signal) {
174991
175088
  if (isIosPhysicalDevice(device)) return false;
174992
175089
  try {
174993
175090
  if (device.platform === "ios") {
174994
- await execFileAsync33(
175091
+ await execFileAsync34(
174995
175092
  "xcrun",
174996
175093
  await simctlArgsForUdid(device.id, ["status_bar", device.id, ...IOS_STATUS_BAR_OVERRIDE])
174997
175094
  );
@@ -175027,7 +175124,7 @@ async function pinStatusBar(device, signal) {
175027
175124
  async function restoreStatusBar(device) {
175028
175125
  try {
175029
175126
  if (device.platform === "ios") {
175030
- await execFileAsync33(
175127
+ await execFileAsync34(
175031
175128
  "xcrun",
175032
175129
  await simctlArgsForUdid(device.id, ["status_bar", device.id, "clear"])
175033
175130
  );
@@ -176636,7 +176733,7 @@ init_zod();
176636
176733
  // ../tool-server/src/utils/workspace-reader.ts
176637
176734
  var import_promises19 = require("node:fs/promises");
176638
176735
  var import_node_path29 = require("node:path");
176639
- var import_node_child_process42 = require("node:child_process");
176736
+ var import_node_child_process43 = require("node:child_process");
176640
176737
  var import_dotenv2 = __toESM(require_dist());
176641
176738
  async function exists2(path54) {
176642
176739
  try {
@@ -176680,7 +176777,7 @@ async function listDir(path54) {
176680
176777
  var COMMAND_TIMEOUT_MS = 3e3;
176681
176778
  function runVersionCommand(cmd, args, cwd) {
176682
176779
  return new Promise((resolve16) => {
176683
- const child = (0, import_node_child_process42.execFile)(cmd, args, { cwd, timeout: COMMAND_TIMEOUT_MS }, (err, stdout) => {
176780
+ const child = (0, import_node_child_process43.execFile)(cmd, args, { cwd, timeout: COMMAND_TIMEOUT_MS }, (err, stdout) => {
176684
176781
  if (err) {
176685
176782
  resolve16(null);
176686
176783
  return;
@@ -176970,7 +177067,7 @@ Fails if the workspacePath is not an absolute path or the directory cannot be ac
176970
177067
  };
176971
177068
 
176972
177069
  // ../tool-server/src/tools/system/update-argent.ts
176973
- var import_node_child_process43 = require("node:child_process");
177070
+ var import_node_child_process44 = require("node:child_process");
176974
177071
  var fs66 = __toESM(require("node:fs"));
176975
177072
  var path50 = __toESM(require("node:path"));
176976
177073
  init_zod();
@@ -177105,7 +177202,7 @@ var updateArgentTool = {
177105
177202
  if (spawnRoot) updateArgs.push("--project-root", spawnRoot);
177106
177203
  const cmd = cliEntry ? process.execPath : "argent";
177107
177204
  const args = cliEntry ? [cliEntry, ...updateArgs] : updateArgs;
177108
- const child = (0, import_node_child_process43.spawn)(cmd, args, {
177205
+ const child = (0, import_node_child_process44.spawn)(cmd, args, {
177109
177206
  detached: true,
177110
177207
  stdio: "ignore",
177111
177208
  env: { ...process.env, ARGENT_UPDATE_TRIGGER: "mcp_update" }
@@ -178175,13 +178272,13 @@ function probeArgentToolServer(host, port, timeoutMs = 500) {
178175
178272
 
178176
178273
  // ../tool-server/src/utils/simulator-watcher.ts
178177
178274
  var fs68 = __toESM(require("node:fs"));
178178
- var import_node_child_process44 = require("node:child_process");
178179
- var import_node_util32 = require("node:util");
178275
+ var import_node_child_process45 = require("node:child_process");
178276
+ var import_node_util33 = require("node:util");
178180
178277
  init_external_devices();
178181
- var execFileAsync34 = (0, import_node_util32.promisify)(import_node_child_process44.execFile);
178278
+ var execFileAsync35 = (0, import_node_util33.promisify)(import_node_child_process45.execFile);
178182
178279
  var POLL_INTERVAL_MS2 = 1e4;
178183
178280
  async function getBootedUdidsInSet(deviceSet) {
178184
- const { stdout } = await execFileAsync34("xcrun", [
178281
+ const { stdout } = await execFileAsync35("xcrun", [
178185
178282
  ...simctlPrefix(deviceSet),
178186
178283
  "list",
178187
178284
  "devices",
@@ -178300,7 +178397,7 @@ function startSimulatorWatcher(registry2) {
178300
178397
  }
178301
178398
 
178302
178399
  // ../tool-server/src/utils/preview-window.ts
178303
- var import_node_child_process45 = require("node:child_process");
178400
+ var import_node_child_process46 = require("node:child_process");
178304
178401
  var fs69 = __toESM(require("node:fs"));
178305
178402
  var os20 = __toESM(require("node:os"));
178306
178403
  var path52 = __toESM(require("node:path"));
@@ -178332,10 +178429,10 @@ function ensureLensAppBundle(electronBin) {
178332
178429
  fs69.copyFileSync(path52.join(realContents, "Info.plist"), plist);
178333
178430
  const setPlist = (entry, value) => {
178334
178431
  try {
178335
- (0, import_node_child_process45.execFileSync)("/usr/libexec/PlistBuddy", ["-c", `Set :${entry} ${value}`, plist]);
178432
+ (0, import_node_child_process46.execFileSync)("/usr/libexec/PlistBuddy", ["-c", `Set :${entry} ${value}`, plist]);
178336
178433
  } catch {
178337
178434
  try {
178338
- (0, import_node_child_process45.execFileSync)("/usr/libexec/PlistBuddy", ["-c", `Add :${entry} string ${value}`, plist]);
178435
+ (0, import_node_child_process46.execFileSync)("/usr/libexec/PlistBuddy", ["-c", `Add :${entry} string ${value}`, plist]);
178339
178436
  } catch {
178340
178437
  }
178341
178438
  }
@@ -178394,7 +178491,7 @@ function createPreviewWindowManager(opts = {}) {
178394
178491
  const wrapperBin = ensureLensAppBundle(electronBin);
178395
178492
  const launchBin = wrapperBin ?? electronBin;
178396
178493
  const launchArgs = wrapperBin ? ["--no-sandbox", mainScript] : [mainScript];
178397
- const next = (0, import_node_child_process45.spawn)(launchBin, launchArgs, {
178494
+ const next = (0, import_node_child_process46.spawn)(launchBin, launchArgs, {
178398
178495
  // Strips ELECTRON_RUN_AS_NODE, which an Electron-based MCP host leaves in
178399
178496
  // our env, so the child boots as a GUI app instead of bare Node.
178400
178497
  env: electronGuiChildEnv({ ARGENT_PREVIEW_URL: url2 }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swmansion/argent",
3
- "version": "0.30.2-next.20",
3
+ "version": "0.30.2-next.21",
4
4
  "mcpName": "io.github.software-mansion/argent",
5
5
  "description": "MCP server for iOS Simulator and Android Emulator control",
6
6
  "license": "Apache-2.0",