@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/bin/darwin/simulator-server +0 -0
- package/bin/linux/simulator-server +0 -0
- package/bin/linux-arm64/simulator-server +0 -0
- package/dist/cli-cmds.mjs +619 -120
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/installer.mjs +38 -14
- package/dist/mcp-server.mjs +28 -17
- package/dist/tool-server.cjs +106 -21
- package/package.json +1 -1
- /package/bin/{darwin/tcp → tcp}/ax-service +0 -0
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":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAIlC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,GAEnB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,YAAY,GAAG,mBAAmB,CAAC;AAEzC,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,uEAAuE;QACvE,oDAAoD;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAyB,CAAC;QACjF,OAAO,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,EAAE,AAAD,EAAG,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAC5C,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,CAAC;AAEtC,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AAEtC,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,6EAA6E;AAC7E,aAAa;AACb,SAAS,kBAAkB,CAAC,OAAyB;IACnD,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvF,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,OAAO,GAAG,mBAAmB,EAAE,IAAI,SAAS,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC;UACJ,OAAO;;;;;;gBAMD,kBAAkB,CAAC,MAAM,CAAC;gBAC1B,kBAAkB,CAAC,SAAS,CAAC;gBAC7B,kBAAkB,CAAC,QAAQ,CAAC;gBAC5B,kBAAkB,CAAC,WAAW,CAAC;gBAC/B,kBAAkB,CAAC,QAAQ,CAAC
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/installer.mjs
CHANGED
|
@@ -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.
|
|
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
|
|
17088
|
-
|
|
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 =
|
|
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
|
-
|
|
17150
|
-
|
|
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
|
|
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");
|
package/dist/mcp-server.mjs
CHANGED
|
@@ -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
|
|
18504
|
-
|
|
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
|
|
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
|
|
18569
|
-
|
|
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 =
|
|
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
|
-
|
|
18631
|
-
|
|
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
|
|
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");
|
package/dist/tool-server.cjs
CHANGED
|
@@ -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
|
|
98709
|
-
|
|
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
|
|
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
|
|
98774
|
-
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
104741
|
-
return process.env.ARGENT_SIMULATOR_SERVER_TCP_DIR ?? path5.join(
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
File without changes
|