@swmansion/argent 0.16.1-next.9 → 0.16.2-next.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.
package/dist/cli.js CHANGED
@@ -81,6 +81,7 @@ Commands:
81
81
  enable Enable a feature flag (global by default, --scope project for project)
82
82
  disable Disable a feature flag (global by default, --scope project for project)
83
83
  flags Show current feature-flag state
84
+ config Manage configuration (list / get / set / unset, project & global)
84
85
  telemetry Manage opt-out telemetry (status / enable / disable)
85
86
 
86
87
  Options:
@@ -146,6 +147,8 @@ async function main() {
146
147
  return (await loadCli()).disable(rest);
147
148
  case "flags":
148
149
  return (await loadCli()).flags(rest);
150
+ case "config":
151
+ return (await loadCli()).config(rest);
149
152
  case "telemetry":
150
153
  return (await loadCli()).telemetry(rest);
151
154
  case "--version":
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -16120,6 +16120,7 @@ var FAILURE_CODES = {
16120
16120
  NATIVE_DEVTOOLS_RPC_TIMEOUT: "NATIVE_DEVTOOLS_RPC_TIMEOUT",
16121
16121
  NATIVE_DEVTOOLS_RPC_ERROR: "NATIVE_DEVTOOLS_RPC_ERROR",
16122
16122
  NATIVE_DEVTOOLS_SERVICE_DISPOSED: "NATIVE_DEVTOOLS_SERVICE_DISPOSED",
16123
+ NATIVE_DEVTOOLS_SOCKET_BIND_FAILED: "NATIVE_DEVTOOLS_SOCKET_BIND_FAILED",
16123
16124
  NATIVE_TARGET_NO_CONNECTED_APPS: "NATIVE_TARGET_NO_CONNECTED_APPS",
16124
16125
  NATIVE_TARGET_SINGLE_APP_NOT_FOREGROUND: "NATIVE_TARGET_SINGLE_APP_NOT_FOREGROUND",
16125
16126
  NATIVE_TARGET_MULTIPLE_APPS_AMBIGUOUS: "NATIVE_TARGET_MULTIPLE_APPS_AMBIGUOUS",
@@ -17027,7 +17028,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
17027
17028
  var SESSION_ID = randomUUID3();
17028
17029
  function readCliVersion() {
17029
17030
  if (true) {
17030
- return "0.16.0";
17031
+ return "0.16.1";
17031
17032
  }
17032
17033
  return "0.0.0";
17033
17034
  }
@@ -17071,6 +17072,21 @@ import * as path4 from "node:path";
17071
17072
  import * as fs from "node:fs";
17072
17073
  import * as path from "node:path";
17073
17074
  import { homedir } from "node:os";
17075
+ var PROJECT_MARKERS = [".argent", ".git", "package.json"];
17076
+ function findProjectRoot(startDir) {
17077
+ let current = path.resolve(startDir);
17078
+ while (true) {
17079
+ for (const marker of PROJECT_MARKERS) {
17080
+ if (fs.existsSync(path.join(current, marker))) return current;
17081
+ }
17082
+ const parent = path.dirname(current);
17083
+ if (parent === current) return null;
17084
+ current = parent;
17085
+ }
17086
+ }
17087
+ function resolveProjectRoot(startDir) {
17088
+ return findProjectRoot(startDir) ?? path.resolve(startDir);
17089
+ }
17074
17090
 
17075
17091
  // ../configuration-core/src/paths.ts
17076
17092
  import * as os from "node:os";
@@ -17084,19 +17100,26 @@ function argentHomeDir() {
17084
17100
  const home = process.platform === "win32" ? nonEmpty(process.env.USERPROFILE) ?? os.homedir() : nonEmpty(process.env.HOME) ?? os.homedir();
17085
17101
  return path2.join(home, ".argent");
17086
17102
  }
17087
- function configFilePath() {
17088
- return path2.join(argentHomeDir(), "config.json");
17103
+ function configDir(scope = "global", options = {}) {
17104
+ if (scope === "global") {
17105
+ return options.homeDir ? path2.join(options.homeDir, ".argent") : argentHomeDir();
17106
+ }
17107
+ const cwd = options.cwd ?? process.cwd();
17108
+ return path2.join(resolveProjectRoot(cwd), ".argent");
17109
+ }
17110
+ function configFilePath(scope = "global", options = {}) {
17111
+ return path2.join(configDir(scope, options), "config.json");
17089
17112
  }
17090
17113
 
17091
17114
  // ../configuration-core/src/config.ts
17092
17115
  import * as crypto from "node:crypto";
17093
17116
  import * as fs2 from "node:fs";
17094
17117
  import * as path3 from "node:path";
17095
- function readConfigObject() {
17118
+ function readConfigObject(scope = "global", options = {}) {
17096
17119
  try {
17097
- const raw = fs2.readFileSync(configFilePath(), "utf8");
17120
+ const raw = fs2.readFileSync(configFilePath(scope, options), "utf8");
17098
17121
  const json = JSON.parse(raw);
17099
- if (json && typeof json === "object") {
17122
+ if (json && typeof json === "object" && !Array.isArray(json)) {
17100
17123
  return json;
17101
17124
  }
17102
17125
  } catch {
@@ -17109,8 +17132,8 @@ var LOCK_RETRY_MS = 25;
17109
17132
  function sleepSync(ms) {
17110
17133
  Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
17111
17134
  }
17112
- function acquireConfigLock() {
17113
- const lockPath = configFilePath() + ".lock";
17135
+ function acquireConfigLock(finalPath) {
17136
+ const lockPath = finalPath + ".lock";
17114
17137
  const deadline = Date.now() + LOCK_MAX_WAIT_MS;
17115
17138
  for (; ; ) {
17116
17139
  try {
@@ -17145,14 +17168,15 @@ function releaseConfigLock(lock) {
17145
17168
  } catch {
17146
17169
  }
17147
17170
  }
17148
- function updateConfig(mutate) {
17149
- fs2.mkdirSync(argentHomeDir(), { recursive: true });
17150
- const lock = acquireConfigLock();
17171
+ function updateConfig(mutate, scope = "global", options = {}) {
17172
+ const dir = configDir(scope, options);
17173
+ fs2.mkdirSync(dir, { recursive: true });
17174
+ const finalPath = configFilePath(scope, options);
17175
+ const lock = acquireConfigLock(finalPath);
17151
17176
  try {
17152
- const next = readConfigObject();
17177
+ const next = readConfigObject(scope, options);
17153
17178
  mutate(next);
17154
- const finalPath = configFilePath();
17155
- const tmpPath = path3.join(argentHomeDir(), `.config.tmp.${process.pid}.${crypto.randomUUID()}`);
17179
+ const tmpPath = path3.join(dir, `.config.tmp.${process.pid}.${crypto.randomUUID()}`);
17156
17180
  const fd = fs2.openSync(tmpPath, "wx", 384);
17157
17181
  try {
17158
17182
  fs2.writeSync(fd, JSON.stringify(next, null, 2) + "\n");
@@ -17652,6 +17652,7 @@ var FAILURE_CODES = {
17652
17652
  NATIVE_DEVTOOLS_RPC_TIMEOUT: "NATIVE_DEVTOOLS_RPC_TIMEOUT",
17653
17653
  NATIVE_DEVTOOLS_RPC_ERROR: "NATIVE_DEVTOOLS_RPC_ERROR",
17654
17654
  NATIVE_DEVTOOLS_SERVICE_DISPOSED: "NATIVE_DEVTOOLS_SERVICE_DISPOSED",
17655
+ NATIVE_DEVTOOLS_SOCKET_BIND_FAILED: "NATIVE_DEVTOOLS_SOCKET_BIND_FAILED",
17655
17656
  NATIVE_TARGET_NO_CONNECTED_APPS: "NATIVE_TARGET_NO_CONNECTED_APPS",
17656
17657
  NATIVE_TARGET_SINGLE_APP_NOT_FOREGROUND: "NATIVE_TARGET_SINGLE_APP_NOT_FOREGROUND",
17657
17658
  NATIVE_TARGET_MULTIPLE_APPS_AMBIGUOUS: "NATIVE_TARGET_MULTIPLE_APPS_AMBIGUOUS",
@@ -18500,18 +18501,20 @@ import * as fs2 from "node:fs";
18500
18501
  import * as path4 from "node:path";
18501
18502
  import { homedir as homedir3 } from "node:os";
18502
18503
  var PROJECT_MARKERS = [".argent", ".git", "package.json"];
18503
- function resolveProjectRoot(startDir) {
18504
- const initial = path4.resolve(startDir);
18505
- let current = initial;
18504
+ function findProjectRoot(startDir) {
18505
+ let current = path4.resolve(startDir);
18506
18506
  while (true) {
18507
18507
  for (const marker of PROJECT_MARKERS) {
18508
18508
  if (fs2.existsSync(path4.join(current, marker))) return current;
18509
18509
  }
18510
18510
  const parent = path4.dirname(current);
18511
- if (parent === current) return initial;
18511
+ if (parent === current) return null;
18512
18512
  current = parent;
18513
18513
  }
18514
18514
  }
18515
+ function resolveProjectRoot(startDir) {
18516
+ return findProjectRoot(startDir) ?? path4.resolve(startDir);
18517
+ }
18515
18518
  function getFlagsPath(scope, options = {}) {
18516
18519
  const home = options.homeDir ?? homedir3();
18517
18520
  if (scope === "global") {
@@ -18565,19 +18568,26 @@ function argentHomeDir() {
18565
18568
  const home = process.platform === "win32" ? nonEmpty(process.env.USERPROFILE) ?? os.homedir() : nonEmpty(process.env.HOME) ?? os.homedir();
18566
18569
  return path5.join(home, ".argent");
18567
18570
  }
18568
- function configFilePath() {
18569
- return path5.join(argentHomeDir(), "config.json");
18571
+ function configDir(scope = "global", options = {}) {
18572
+ if (scope === "global") {
18573
+ return options.homeDir ? path5.join(options.homeDir, ".argent") : argentHomeDir();
18574
+ }
18575
+ const cwd = options.cwd ?? process.cwd();
18576
+ return path5.join(resolveProjectRoot(cwd), ".argent");
18577
+ }
18578
+ function configFilePath(scope = "global", options = {}) {
18579
+ return path5.join(configDir(scope, options), "config.json");
18570
18580
  }
18571
18581
 
18572
18582
  // ../configuration-core/src/config.ts
18573
18583
  import * as crypto from "node:crypto";
18574
18584
  import * as fs3 from "node:fs";
18575
18585
  import * as path6 from "node:path";
18576
- function readConfigObject() {
18586
+ function readConfigObject(scope = "global", options = {}) {
18577
18587
  try {
18578
- const raw = fs3.readFileSync(configFilePath(), "utf8");
18588
+ const raw = fs3.readFileSync(configFilePath(scope, options), "utf8");
18579
18589
  const json = JSON.parse(raw);
18580
- if (json && typeof json === "object") {
18590
+ if (json && typeof json === "object" && !Array.isArray(json)) {
18581
18591
  return json;
18582
18592
  }
18583
18593
  } catch {
@@ -18590,8 +18600,8 @@ var LOCK_RETRY_MS = 25;
18590
18600
  function sleepSync(ms) {
18591
18601
  Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
18592
18602
  }
18593
- function acquireConfigLock() {
18594
- const lockPath = configFilePath() + ".lock";
18603
+ function acquireConfigLock(finalPath) {
18604
+ const lockPath = finalPath + ".lock";
18595
18605
  const deadline = Date.now() + LOCK_MAX_WAIT_MS;
18596
18606
  for (; ; ) {
18597
18607
  try {
@@ -18626,14 +18636,15 @@ function releaseConfigLock(lock) {
18626
18636
  } catch {
18627
18637
  }
18628
18638
  }
18629
- function updateConfig(mutate) {
18630
- fs3.mkdirSync(argentHomeDir(), { recursive: true });
18631
- const lock = acquireConfigLock();
18639
+ function updateConfig(mutate, scope = "global", options = {}) {
18640
+ const dir = configDir(scope, options);
18641
+ fs3.mkdirSync(dir, { recursive: true });
18642
+ const finalPath = configFilePath(scope, options);
18643
+ const lock = acquireConfigLock(finalPath);
18632
18644
  try {
18633
- const next = readConfigObject();
18645
+ const next = readConfigObject(scope, options);
18634
18646
  mutate(next);
18635
- const finalPath = configFilePath();
18636
- const tmpPath = path6.join(argentHomeDir(), `.config.tmp.${process.pid}.${crypto.randomUUID()}`);
18647
+ const tmpPath = path6.join(dir, `.config.tmp.${process.pid}.${crypto.randomUUID()}`);
18637
18648
  const fd = fs3.openSync(tmpPath, "wx", 384);
18638
18649
  try {
18639
18650
  fs3.writeSync(fd, JSON.stringify(next, null, 2) + "\n");
@@ -293,6 +293,7 @@ var init_failure_codes = __esm({
293
293
  NATIVE_DEVTOOLS_RPC_TIMEOUT: "NATIVE_DEVTOOLS_RPC_TIMEOUT",
294
294
  NATIVE_DEVTOOLS_RPC_ERROR: "NATIVE_DEVTOOLS_RPC_ERROR",
295
295
  NATIVE_DEVTOOLS_SERVICE_DISPOSED: "NATIVE_DEVTOOLS_SERVICE_DISPOSED",
296
+ NATIVE_DEVTOOLS_SOCKET_BIND_FAILED: "NATIVE_DEVTOOLS_SOCKET_BIND_FAILED",
296
297
  NATIVE_TARGET_NO_CONNECTED_APPS: "NATIVE_TARGET_NO_CONNECTED_APPS",
297
298
  NATIVE_TARGET_SINGLE_APP_NOT_FOREGROUND: "NATIVE_TARGET_SINGLE_APP_NOT_FOREGROUND",
298
299
  NATIVE_TARGET_MULTIPLE_APPS_AMBIGUOUS: "NATIVE_TARGET_MULTIPLE_APPS_AMBIGUOUS",
@@ -98705,18 +98706,20 @@ var fs = __toESM(require("node:fs"), 1);
98705
98706
  var path = __toESM(require("node:path"), 1);
98706
98707
  var import_node_os = require("node:os");
98707
98708
  var PROJECT_MARKERS = [".argent", ".git", "package.json"];
98708
- function resolveProjectRoot(startDir) {
98709
- const initial = path.resolve(startDir);
98710
- let current = initial;
98709
+ function findProjectRoot(startDir) {
98710
+ let current = path.resolve(startDir);
98711
98711
  while (true) {
98712
98712
  for (const marker of PROJECT_MARKERS) {
98713
98713
  if (fs.existsSync(path.join(current, marker))) return current;
98714
98714
  }
98715
98715
  const parent = path.dirname(current);
98716
- if (parent === current) return initial;
98716
+ if (parent === current) return null;
98717
98717
  current = parent;
98718
98718
  }
98719
98719
  }
98720
+ function resolveProjectRoot(startDir) {
98721
+ return findProjectRoot(startDir) ?? path.resolve(startDir);
98722
+ }
98720
98723
  function getFlagsPath(scope, options = {}) {
98721
98724
  const home = options.homeDir ?? (0, import_node_os.homedir)();
98722
98725
  if (scope === "global") {
@@ -98770,8 +98773,15 @@ function argentHomeDir() {
98770
98773
  const home = process.platform === "win32" ? nonEmpty(process.env.USERPROFILE) ?? os.homedir() : nonEmpty(process.env.HOME) ?? os.homedir();
98771
98774
  return path2.join(home, ".argent");
98772
98775
  }
98773
- function configFilePath() {
98774
- return path2.join(argentHomeDir(), "config.json");
98776
+ function configDir(scope = "global", options = {}) {
98777
+ if (scope === "global") {
98778
+ return options.homeDir ? path2.join(options.homeDir, ".argent") : argentHomeDir();
98779
+ }
98780
+ const cwd = options.cwd ?? process.cwd();
98781
+ return path2.join(resolveProjectRoot(cwd), ".argent");
98782
+ }
98783
+ function configFilePath(scope = "global", options = {}) {
98784
+ return path2.join(configDir(scope, options), "config.json");
98775
98785
  }
98776
98786
 
98777
98787
  // ../tool-server/src/index.ts
@@ -104399,7 +104409,7 @@ var _CI_VENDOR_COUNT_FOR_TEST = vendors_default.length;
104399
104409
  var SESSION_ID = (0, import_node_crypto3.randomUUID)();
104400
104410
  function readCliVersion() {
104401
104411
  if (true) {
104402
- return "0.16.0";
104412
+ return "0.16.1";
104403
104413
  }
104404
104414
  return "0.0.0";
104405
104415
  }
@@ -104704,22 +104714,46 @@ function requireDylibIn(dir, name) {
104704
104714
  }
104705
104715
  return p;
104706
104716
  }
104717
+ function requireTcpArtifact(dir, name, kind, envVar) {
104718
+ const p = path5.join(dir, name);
104719
+ if (!fs3.existsSync(p)) {
104720
+ throw new Error(
104721
+ `TCP-transport ${kind} not found: ${p}. This ${kind} is required to drive an ios-remote (sim-remote) device over the QUIC tunnel. It ships in the argent package under bin/tcp/ and dylibs/tcp/ (platform-neutral); if you are running a local build, produce it with \`npm run build:ios-binaries:tcp\`. To point the lookup at a directory that already contains it, set ${envVar}=<dir>.`
104722
+ );
104723
+ }
104724
+ return p;
104725
+ }
104707
104726
  var bootstrapDylibPath = () => {
104708
104727
  requireDarwin("bootstrapDylibPath");
104709
104728
  return requireDylibIn(DYLIB_DIR, "libArgentInjectionBootstrap.dylib");
104710
104729
  };
104711
104730
  var bootstrapDylibPathTcp = () => {
104712
- return requireDylibIn(DYLIB_TCP_DIR, "libArgentInjectionBootstrap.dylib");
104731
+ return requireTcpArtifact(
104732
+ DYLIB_TCP_DIR,
104733
+ "libArgentInjectionBootstrap.dylib",
104734
+ "dylib",
104735
+ "ARGENT_NATIVE_DEVTOOLS_TCP_DIR"
104736
+ );
104713
104737
  };
104714
104738
  var bootstrapDylibPathTvos = () => {
104715
104739
  requireDarwin("bootstrapDylibPathTvos");
104716
104740
  return requireDylibIn(DYLIB_TVOS_DIR, "libArgentInjectionBootstrap.dylib");
104717
104741
  };
104718
104742
  var nativeDevtoolsDylibPathTcp = () => {
104719
- return requireDylibIn(DYLIB_TCP_DIR, "libNativeDevtoolsIos.dylib");
104743
+ return requireTcpArtifact(
104744
+ DYLIB_TCP_DIR,
104745
+ "libNativeDevtoolsIos.dylib",
104746
+ "dylib",
104747
+ "ARGENT_NATIVE_DEVTOOLS_TCP_DIR"
104748
+ );
104720
104749
  };
104721
104750
  var keyboardPatchDylibPathTcp = () => {
104722
- return requireDylibIn(DYLIB_TCP_DIR, "libKeyboardPatch.dylib");
104751
+ return requireTcpArtifact(
104752
+ DYLIB_TCP_DIR,
104753
+ "libKeyboardPatch.dylib",
104754
+ "dylib",
104755
+ "ARGENT_NATIVE_DEVTOOLS_TCP_DIR"
104756
+ );
104723
104757
  };
104724
104758
  function tcpInjectionDylibs() {
104725
104759
  return [
@@ -104737,8 +104771,8 @@ function hostPlatformKey() {
104737
104771
  function platformBinDir() {
104738
104772
  return path5.join(BIN_DIR, hostPlatformKey());
104739
104773
  }
104740
- function platformTcpBinDir() {
104741
- return process.env.ARGENT_SIMULATOR_SERVER_TCP_DIR ?? path5.join(platformBinDir(), "tcp");
104774
+ function tcpBinDir() {
104775
+ return process.env.ARGENT_SIMULATOR_SERVER_TCP_DIR ?? path5.join(BIN_DIR, "tcp");
104742
104776
  }
104743
104777
  function simulatorServerBinaryPath() {
104744
104778
  const p = path5.join(platformBinDir(), "simulator-server");
@@ -104766,7 +104800,7 @@ function axServiceBinaryPath() {
104766
104800
  return requireBinIn(platformBinDir(), "ax-service");
104767
104801
  }
104768
104802
  function axServiceBinaryPathTcp() {
104769
- return requireBinIn(platformTcpBinDir(), "ax-service");
104803
+ return requireTcpArtifact(tcpBinDir(), "ax-service", "binary", "ARGENT_SIMULATOR_SERVER_TCP_DIR");
104770
104804
  }
104771
104805
  function tvosAxServiceBinaryPath() {
104772
104806
  requireDarwin("tvos-ax-service");
@@ -105776,7 +105810,7 @@ var import_node_path4 = __toESM(require("node:path"));
105776
105810
  var import_semver = __toESM(require_semver2());
105777
105811
 
105778
105812
  // ../tool-server/package.json
105779
- var version3 = "0.16.0";
105813
+ var version3 = "0.16.1";
105780
105814
 
105781
105815
  // ../tool-server/src/utils/update-checker.ts
105782
105816
  var import_update_core = __toESM(require_dist4());
@@ -106143,6 +106177,7 @@ async function simctlSpawn(udid, opts) {
106143
106177
  const cmd = ["spawn", stripRemotePrefix(udid)];
106144
106178
  if (opts.binPath) cmd.push("--bin", opts.binPath);
106145
106179
  if (opts.detach) cmd.push("--detach");
106180
+ cmd.push("--json");
106146
106181
  const args = opts.args ?? [];
106147
106182
  if (args.length > 0) cmd.push("--", ...args);
106148
106183
  const { stdout } = await run(cmd, { timeoutMs: 6e4 });
@@ -116810,6 +116845,43 @@ function nativeDevtoolsRef(device, { transport = "unix" } = {}) {
116810
116845
  function getNativeDevtoolsSocketPath(udid) {
116811
116846
  return `/tmp/argent-nd-${udid.slice(0, 8)}.sock`;
116812
116847
  }
116848
+ function bindNativeDevtoolsUnixSocket(server, socketPath) {
116849
+ return new Promise((resolve7, reject) => {
116850
+ let retried = false;
116851
+ const onListening = () => {
116852
+ server.off("error", onError);
116853
+ resolve7();
116854
+ };
116855
+ const onError = (err) => {
116856
+ if ((err.code === "EADDRINUSE" || err.code === "EEXIST") && !retried) {
116857
+ retried = true;
116858
+ try {
116859
+ fs13.unlinkSync(socketPath);
116860
+ } catch {
116861
+ }
116862
+ server.listen(socketPath);
116863
+ return;
116864
+ }
116865
+ server.off("listening", onListening);
116866
+ server.off("error", onError);
116867
+ server.close();
116868
+ reject(
116869
+ new FailureError(
116870
+ `native-devtools failed to bind unix socket ${socketPath}: ${err.code ?? err.message}`,
116871
+ {
116872
+ error_code: FAILURE_CODES.NATIVE_DEVTOOLS_SOCKET_BIND_FAILED,
116873
+ failure_stage: "native_devtools_socket_bind",
116874
+ failure_area: "tool_server",
116875
+ error_kind: "network"
116876
+ }
116877
+ )
116878
+ );
116879
+ };
116880
+ server.on("error", onError);
116881
+ server.once("listening", onListening);
116882
+ server.listen(socketPath);
116883
+ });
116884
+ }
116813
116885
  var nativeDevtoolsBlueprint = {
116814
116886
  namespace: NATIVE_DEVTOOLS_NAMESPACE,
116815
116887
  getURN(device) {
@@ -117020,7 +117092,7 @@ var nativeDevtoolsBlueprint = {
117020
117092
  });
117021
117093
  await host.startProxy(udid, endpoint.port);
117022
117094
  } else {
117023
- server.listen(socketPath);
117095
+ await bindNativeDevtoolsUnixSocket(server, socketPath);
117024
117096
  }
117025
117097
  await ensureEnvReady().catch(() => {
117026
117098
  });
@@ -117385,6 +117457,10 @@ function adaptAXDescribeToDescribeResult(response) {
117385
117457
 
117386
117458
  // ../tool-server/src/tools/describe/platforms/ios/index.ts
117387
117459
  var DEGRADED_HINT = "This simulator was not booted through argent \u2014 system dialogs and native modals may not appear. You MUST call boot-device with force=true now to restart the simulator and apply full accessibility settings before continuing.";
117460
+ function tcpArtifactHint(err) {
117461
+ const message = err instanceof Error ? err.message : typeof err === "string" ? err : "";
117462
+ return /TCP-transport (?:binary|dylib) not found/.test(message) ? message : void 0;
117463
+ }
117388
117464
  var TVOS_HINT = "This is an Apple TV (tvOS) simulator, which the iOS accessibility service does not support. Use the `describe` tool to read the focused and focusable elements, `tv-remote` (up/down/left/right/select/back/menu/home) to move focus, and `keyboard` to type. See the argent-tv-interact skill.";
117389
117465
  var NON_INJECTABLE_HINT = "This is an Apple system app (com.apple.*), which cannot load argent's native-devtools instrumentation \u2014 the native view hierarchy is unavailable and restarting the app will NOT help. Take a `screenshot` to see the screen and interact by coordinate. " + NON_INJECTABLE_NATIVE_WARNING;
117390
117466
  function emptyTree() {
@@ -117408,9 +117484,9 @@ async function describeIos(registry2, device, params, options = {}) {
117408
117484
  const response = await axApi.describe();
117409
117485
  tree = adaptAXDescribeToDescribeResult(response);
117410
117486
  hint = axApi.degraded ? DEGRADED_HINT : void 0;
117411
- } catch {
117487
+ } catch (err) {
117412
117488
  tree = emptyTree();
117413
- hint = DEGRADED_HINT;
117489
+ hint = tcpArtifactHint(err) ?? DEGRADED_HINT;
117414
117490
  }
117415
117491
  if (tree.children.length > 0) {
117416
117492
  return { tree, source: "ax-service", hint };
@@ -125750,6 +125826,14 @@ init_zod();
125750
125826
  var import_node_child_process24 = require("node:child_process");
125751
125827
  var import_node_util18 = require("node:util");
125752
125828
  init_src();
125829
+
125830
+ // ../tool-server/src/tools/open-url/deep-link-note.ts
125831
+ function httpDeepLinkNote(url2) {
125832
+ if (!/^https?:/i.test(url2)) return void 0;
125833
+ return "This is a web URL \u2014 it opens the native app only if an app installed on this device is verified for the link's domain (iOS Universal Links / Android App Links); otherwise it opens in the browser. On iOS simulators it may open in Safari even when the owning app is installed. To reliably open an installed app, use its custom scheme (scheme://path) or launch-app with its bundle id.";
125834
+ }
125835
+
125836
+ // ../tool-server/src/tools/open-url/platforms/ios.ts
125753
125837
  var execFileAsync18 = (0, import_node_util18.promisify)(import_node_child_process24.execFile);
125754
125838
  var iosImpl3 = {
125755
125839
  requires: ["xcrun"],
@@ -125769,7 +125853,7 @@ var iosImpl3 = {
125769
125853
  { cause: err instanceof Error ? err : new Error(String(err)) }
125770
125854
  );
125771
125855
  }
125772
- return { opened: true, url: params.url };
125856
+ return { opened: true, url: params.url, note: httpDeepLinkNote(params.url) };
125773
125857
  }
125774
125858
  };
125775
125859
 
@@ -125793,7 +125877,7 @@ var androidImpl5 = {
125793
125877
  error_kind: "subprocess"
125794
125878
  });
125795
125879
  }
125796
- return { opened: true, url: params.url };
125880
+ return { opened: true, url: params.url, note: httpDeepLinkNote(params.url) };
125797
125881
  }
125798
125882
  };
125799
125883
 
@@ -125802,7 +125886,7 @@ var iosRemoteImpl5 = {
125802
125886
  requires: ["sim-remote"],
125803
125887
  handler: async (_services, params) => {
125804
125888
  await simctlOpenUrl(params.udid, params.url);
125805
- return { opened: true, url: params.url };
125889
+ return { opened: true, url: params.url, note: httpDeepLinkNote(params.url) };
125806
125890
  }
125807
125891
  };
125808
125892
 
@@ -125833,7 +125917,8 @@ var openUrlTool = {
125833
125917
  description: `Open a URL or URL scheme on the device.
125834
125918
  Use to navigate to a web page or deep-link into an app. On Chromium, this navigates the primary renderer to the given URL.
125835
125919
  Cross-platform schemes: https://, tel:, mailto:. iOS also: messages://, settings://, maps://. Android also: geo:, plus any app-specific deep link.
125836
- Returns { opened, url }. Fails if no app is registered to handle the URI (iOS/Android) or the renderer rejects the navigation (Chromium).`,
125920
+ Deep-linking caveat: an https:// link opens the native app only when an installed app is verified for the link's domain (iOS Universal Links / Android App Links) \u2014 otherwise it opens in the browser, and on iOS simulators it may open in Safari even when the owning app is installed. To reliably open an installed app, use its custom scheme (scheme://path) or launch-app with its bundle id.
125921
+ Returns { opened, url, note? }. note carries the deep-linking caveat when a web URL was opened on a native device. Fails if no app is registered to handle the URI (iOS/Android) or the renderer rejects the navigation (Chromium).`,
125837
125922
  zodSchema: zodSchema14,
125838
125923
  capability: capability6,
125839
125924
  services: (params) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swmansion/argent",
3
- "version": "0.16.1-next.9",
3
+ "version": "0.16.2-next.0",
4
4
  "description": "MCP server for iOS Simulator and Android Emulator control",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
File without changes