@swmansion/argent 0.14.1-next.2 → 0.14.1-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/README.md +70 -21
- package/bin/argent-android-devtools-0.1.0.apk +0 -0
- package/bin/darwin/ax-service +0 -0
- package/bin/darwin/simulator-server +0 -0
- package/bin/darwin/tvos-ax-service +0 -0
- package/bin/darwin/tvos-hid-daemon +0 -0
- package/bin/linux/simulator-server +0 -0
- package/bin/linux-arm64/simulator-server +0 -0
- package/dist/bundled-paths.d.ts +1 -0
- package/dist/bundled-paths.js +136 -5
- package/dist/bundled-paths.js.map +1 -1
- package/dist/cli-cmds.mjs +624 -156
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +9 -3
- package/dist/cli.js.map +1 -1
- package/dist/installer.mjs +3182 -1424
- package/dist/mcp-server.mjs +304 -95
- package/dist/tool-server.cjs +2669 -1225
- package/dylibs/libArgentInjectionBootstrap.dylib +0 -0
- package/dylibs/libKeyboardPatch.dylib +0 -0
- package/dylibs/libNativeDevtoolsIos.dylib +0 -0
- package/dylibs/tvos/libArgentInjectionBootstrap.dylib +0 -0
- package/dylibs/tvos/libKeyboardPatch.dylib +0 -0
- package/dylibs/tvos/libNativeDevtoolsIos.dylib +0 -0
- package/package.json +1 -1
- package/scripts/postinstall.cjs +54 -8
package/dist/mcp-server.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
|
|
1
|
+
import { createRequire as __createRequire } from 'node:module'; import { fileURLToPath as __fileURLToPath } from 'node:url'; import { dirname as __pathDirname } from 'node:path'; const require = __createRequire(import.meta.url); const __filename = __fileURLToPath(import.meta.url); const __dirname = __pathDirname(__filename);
|
|
2
2
|
var __create = Object.create;
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -2984,7 +2984,7 @@ var require_compile = __commonJS({
|
|
|
2984
2984
|
const schOrFunc = root.refs[ref];
|
|
2985
2985
|
if (schOrFunc)
|
|
2986
2986
|
return schOrFunc;
|
|
2987
|
-
let _sch =
|
|
2987
|
+
let _sch = resolve4.call(this, root, ref);
|
|
2988
2988
|
if (_sch === void 0) {
|
|
2989
2989
|
const schema = (_a3 = root.localRefs) === null || _a3 === void 0 ? void 0 : _a3[ref];
|
|
2990
2990
|
const { schemaId } = this.opts;
|
|
@@ -3011,7 +3011,7 @@ var require_compile = __commonJS({
|
|
|
3011
3011
|
function sameSchemaEnv(s1, s2) {
|
|
3012
3012
|
return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;
|
|
3013
3013
|
}
|
|
3014
|
-
function
|
|
3014
|
+
function resolve4(root, ref) {
|
|
3015
3015
|
let sch;
|
|
3016
3016
|
while (typeof (sch = this.refs[ref]) == "string")
|
|
3017
3017
|
ref = sch;
|
|
@@ -3229,8 +3229,8 @@ var require_utils = __commonJS({
|
|
|
3229
3229
|
}
|
|
3230
3230
|
return ind;
|
|
3231
3231
|
}
|
|
3232
|
-
function removeDotSegments(
|
|
3233
|
-
let input =
|
|
3232
|
+
function removeDotSegments(path11) {
|
|
3233
|
+
let input = path11;
|
|
3234
3234
|
const output = [];
|
|
3235
3235
|
let nextSlash = -1;
|
|
3236
3236
|
let len = 0;
|
|
@@ -3482,8 +3482,8 @@ var require_schemes = __commonJS({
|
|
|
3482
3482
|
wsComponent.secure = void 0;
|
|
3483
3483
|
}
|
|
3484
3484
|
if (wsComponent.resourceName) {
|
|
3485
|
-
const [
|
|
3486
|
-
wsComponent.path =
|
|
3485
|
+
const [path11, query] = wsComponent.resourceName.split("?");
|
|
3486
|
+
wsComponent.path = path11 && path11 !== "/" ? path11 : void 0;
|
|
3487
3487
|
wsComponent.query = query;
|
|
3488
3488
|
wsComponent.resourceName = void 0;
|
|
3489
3489
|
}
|
|
@@ -3642,55 +3642,55 @@ var require_fast_uri = __commonJS({
|
|
|
3642
3642
|
}
|
|
3643
3643
|
return uri;
|
|
3644
3644
|
}
|
|
3645
|
-
function
|
|
3645
|
+
function resolve4(baseURI, relativeURI, options) {
|
|
3646
3646
|
const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
|
|
3647
3647
|
const resolved = resolveComponent(parse3(baseURI, schemelessOptions), parse3(relativeURI, schemelessOptions), schemelessOptions, true);
|
|
3648
3648
|
schemelessOptions.skipEscape = true;
|
|
3649
3649
|
return serialize(resolved, schemelessOptions);
|
|
3650
3650
|
}
|
|
3651
|
-
function resolveComponent(base,
|
|
3651
|
+
function resolveComponent(base, relative2, options, skipNormalization) {
|
|
3652
3652
|
const target = {};
|
|
3653
3653
|
if (!skipNormalization) {
|
|
3654
3654
|
base = parse3(serialize(base, options), options);
|
|
3655
|
-
|
|
3655
|
+
relative2 = parse3(serialize(relative2, options), options);
|
|
3656
3656
|
}
|
|
3657
3657
|
options = options || {};
|
|
3658
|
-
if (!options.tolerant &&
|
|
3659
|
-
target.scheme =
|
|
3660
|
-
target.userinfo =
|
|
3661
|
-
target.host =
|
|
3662
|
-
target.port =
|
|
3663
|
-
target.path = removeDotSegments(
|
|
3664
|
-
target.query =
|
|
3658
|
+
if (!options.tolerant && relative2.scheme) {
|
|
3659
|
+
target.scheme = relative2.scheme;
|
|
3660
|
+
target.userinfo = relative2.userinfo;
|
|
3661
|
+
target.host = relative2.host;
|
|
3662
|
+
target.port = relative2.port;
|
|
3663
|
+
target.path = removeDotSegments(relative2.path || "");
|
|
3664
|
+
target.query = relative2.query;
|
|
3665
3665
|
} else {
|
|
3666
|
-
if (
|
|
3667
|
-
target.userinfo =
|
|
3668
|
-
target.host =
|
|
3669
|
-
target.port =
|
|
3670
|
-
target.path = removeDotSegments(
|
|
3671
|
-
target.query =
|
|
3666
|
+
if (relative2.userinfo !== void 0 || relative2.host !== void 0 || relative2.port !== void 0) {
|
|
3667
|
+
target.userinfo = relative2.userinfo;
|
|
3668
|
+
target.host = relative2.host;
|
|
3669
|
+
target.port = relative2.port;
|
|
3670
|
+
target.path = removeDotSegments(relative2.path || "");
|
|
3671
|
+
target.query = relative2.query;
|
|
3672
3672
|
} else {
|
|
3673
|
-
if (!
|
|
3673
|
+
if (!relative2.path) {
|
|
3674
3674
|
target.path = base.path;
|
|
3675
|
-
if (
|
|
3676
|
-
target.query =
|
|
3675
|
+
if (relative2.query !== void 0) {
|
|
3676
|
+
target.query = relative2.query;
|
|
3677
3677
|
} else {
|
|
3678
3678
|
target.query = base.query;
|
|
3679
3679
|
}
|
|
3680
3680
|
} else {
|
|
3681
|
-
if (
|
|
3682
|
-
target.path = removeDotSegments(
|
|
3681
|
+
if (relative2.path[0] === "/") {
|
|
3682
|
+
target.path = removeDotSegments(relative2.path);
|
|
3683
3683
|
} else {
|
|
3684
3684
|
if ((base.userinfo !== void 0 || base.host !== void 0 || base.port !== void 0) && !base.path) {
|
|
3685
|
-
target.path = "/" +
|
|
3685
|
+
target.path = "/" + relative2.path;
|
|
3686
3686
|
} else if (!base.path) {
|
|
3687
|
-
target.path =
|
|
3687
|
+
target.path = relative2.path;
|
|
3688
3688
|
} else {
|
|
3689
|
-
target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) +
|
|
3689
|
+
target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative2.path;
|
|
3690
3690
|
}
|
|
3691
3691
|
target.path = removeDotSegments(target.path);
|
|
3692
3692
|
}
|
|
3693
|
-
target.query =
|
|
3693
|
+
target.query = relative2.query;
|
|
3694
3694
|
}
|
|
3695
3695
|
target.userinfo = base.userinfo;
|
|
3696
3696
|
target.host = base.host;
|
|
@@ -3698,7 +3698,7 @@ var require_fast_uri = __commonJS({
|
|
|
3698
3698
|
}
|
|
3699
3699
|
target.scheme = base.scheme;
|
|
3700
3700
|
}
|
|
3701
|
-
target.fragment =
|
|
3701
|
+
target.fragment = relative2.fragment;
|
|
3702
3702
|
return target;
|
|
3703
3703
|
}
|
|
3704
3704
|
function equal(uriA, uriB, options) {
|
|
@@ -3900,7 +3900,7 @@ var require_fast_uri = __commonJS({
|
|
|
3900
3900
|
var fastUri = {
|
|
3901
3901
|
SCHEMES,
|
|
3902
3902
|
normalize,
|
|
3903
|
-
resolve:
|
|
3903
|
+
resolve: resolve4,
|
|
3904
3904
|
resolveComponent,
|
|
3905
3905
|
equal,
|
|
3906
3906
|
serialize,
|
|
@@ -6876,12 +6876,12 @@ var require_dist = __commonJS({
|
|
|
6876
6876
|
throw new Error(`Unknown format "${name}"`);
|
|
6877
6877
|
return f;
|
|
6878
6878
|
};
|
|
6879
|
-
function addFormats(ajv, list,
|
|
6879
|
+
function addFormats(ajv, list, fs9, exportName) {
|
|
6880
6880
|
var _a3;
|
|
6881
6881
|
var _b;
|
|
6882
6882
|
(_a3 = (_b = ajv.opts.code).formats) !== null && _a3 !== void 0 ? _a3 : _b.formats = (0, codegen_1._)`require("ajv-formats/dist/formats").${exportName}`;
|
|
6883
6883
|
for (const f of list)
|
|
6884
|
-
ajv.addFormat(f,
|
|
6884
|
+
ajv.addFormat(f, fs9[f]);
|
|
6885
6885
|
}
|
|
6886
6886
|
module.exports = exports = formatsPlugin;
|
|
6887
6887
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -6891,7 +6891,7 @@ var require_dist = __commonJS({
|
|
|
6891
6891
|
|
|
6892
6892
|
// ../argent-mcp/src/mcp-server.ts
|
|
6893
6893
|
import { appendFile, mkdir as mkdir5 } from "node:fs/promises";
|
|
6894
|
-
import { dirname as
|
|
6894
|
+
import { dirname as dirname4 } from "node:path";
|
|
6895
6895
|
import { homedir as homedir5 } from "node:os";
|
|
6896
6896
|
|
|
6897
6897
|
// ../../node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
|
|
@@ -7137,10 +7137,10 @@ function mergeDefs(...defs) {
|
|
|
7137
7137
|
function cloneDef(schema) {
|
|
7138
7138
|
return mergeDefs(schema._zod.def);
|
|
7139
7139
|
}
|
|
7140
|
-
function getElementAtPath(obj,
|
|
7141
|
-
if (!
|
|
7140
|
+
function getElementAtPath(obj, path11) {
|
|
7141
|
+
if (!path11)
|
|
7142
7142
|
return obj;
|
|
7143
|
-
return
|
|
7143
|
+
return path11.reduce((acc, key) => acc?.[key], obj);
|
|
7144
7144
|
}
|
|
7145
7145
|
function promiseAllObject(promisesObj) {
|
|
7146
7146
|
const keys = Object.keys(promisesObj);
|
|
@@ -7549,11 +7549,11 @@ function explicitlyAborted(x, startIndex = 0) {
|
|
|
7549
7549
|
}
|
|
7550
7550
|
return false;
|
|
7551
7551
|
}
|
|
7552
|
-
function prefixIssues(
|
|
7552
|
+
function prefixIssues(path11, issues) {
|
|
7553
7553
|
return issues.map((iss) => {
|
|
7554
7554
|
var _a3;
|
|
7555
7555
|
(_a3 = iss).path ?? (_a3.path = []);
|
|
7556
|
-
iss.path.unshift(
|
|
7556
|
+
iss.path.unshift(path11);
|
|
7557
7557
|
return iss;
|
|
7558
7558
|
});
|
|
7559
7559
|
}
|
|
@@ -7700,16 +7700,16 @@ function flattenError(error2, mapper = (issue2) => issue2.message) {
|
|
|
7700
7700
|
}
|
|
7701
7701
|
function formatError(error2, mapper = (issue2) => issue2.message) {
|
|
7702
7702
|
const fieldErrors = { _errors: [] };
|
|
7703
|
-
const processError = (error3,
|
|
7703
|
+
const processError = (error3, path11 = []) => {
|
|
7704
7704
|
for (const issue2 of error3.issues) {
|
|
7705
7705
|
if (issue2.code === "invalid_union" && issue2.errors.length) {
|
|
7706
|
-
issue2.errors.map((issues) => processError({ issues }, [...
|
|
7706
|
+
issue2.errors.map((issues) => processError({ issues }, [...path11, ...issue2.path]));
|
|
7707
7707
|
} else if (issue2.code === "invalid_key") {
|
|
7708
|
-
processError({ issues: issue2.issues }, [...
|
|
7708
|
+
processError({ issues: issue2.issues }, [...path11, ...issue2.path]);
|
|
7709
7709
|
} else if (issue2.code === "invalid_element") {
|
|
7710
|
-
processError({ issues: issue2.issues }, [...
|
|
7710
|
+
processError({ issues: issue2.issues }, [...path11, ...issue2.path]);
|
|
7711
7711
|
} else {
|
|
7712
|
-
const fullpath = [...
|
|
7712
|
+
const fullpath = [...path11, ...issue2.path];
|
|
7713
7713
|
if (fullpath.length === 0) {
|
|
7714
7714
|
fieldErrors._errors.push(mapper(issue2));
|
|
7715
7715
|
} else {
|
|
@@ -13701,12 +13701,12 @@ var StdioServerTransport = class {
|
|
|
13701
13701
|
this.onclose?.();
|
|
13702
13702
|
}
|
|
13703
13703
|
send(message) {
|
|
13704
|
-
return new Promise((
|
|
13704
|
+
return new Promise((resolve4) => {
|
|
13705
13705
|
const json = serializeMessage(message);
|
|
13706
13706
|
if (this._stdout.write(json)) {
|
|
13707
|
-
|
|
13707
|
+
resolve4();
|
|
13708
13708
|
} else {
|
|
13709
|
-
this._stdout.once("drain",
|
|
13709
|
+
this._stdout.once("drain", resolve4);
|
|
13710
13710
|
}
|
|
13711
13711
|
});
|
|
13712
13712
|
}
|
|
@@ -14304,7 +14304,7 @@ var Protocol = class {
|
|
|
14304
14304
|
return;
|
|
14305
14305
|
}
|
|
14306
14306
|
const pollInterval = task2.pollInterval ?? this._options?.defaultTaskPollInterval ?? 1e3;
|
|
14307
|
-
await new Promise((
|
|
14307
|
+
await new Promise((resolve4) => setTimeout(resolve4, pollInterval));
|
|
14308
14308
|
options?.signal?.throwIfAborted();
|
|
14309
14309
|
}
|
|
14310
14310
|
} catch (error2) {
|
|
@@ -14321,7 +14321,7 @@ var Protocol = class {
|
|
|
14321
14321
|
*/
|
|
14322
14322
|
request(request, resultSchema, options) {
|
|
14323
14323
|
const { relatedRequestId, resumptionToken, onresumptiontoken, task, relatedTask } = options ?? {};
|
|
14324
|
-
return new Promise((
|
|
14324
|
+
return new Promise((resolve4, reject) => {
|
|
14325
14325
|
const earlyReject = (error2) => {
|
|
14326
14326
|
reject(error2);
|
|
14327
14327
|
};
|
|
@@ -14399,7 +14399,7 @@ var Protocol = class {
|
|
|
14399
14399
|
if (!parseResult.success) {
|
|
14400
14400
|
reject(parseResult.error);
|
|
14401
14401
|
} else {
|
|
14402
|
-
|
|
14402
|
+
resolve4(parseResult.data);
|
|
14403
14403
|
}
|
|
14404
14404
|
} catch (error2) {
|
|
14405
14405
|
reject(error2);
|
|
@@ -14660,12 +14660,12 @@ var Protocol = class {
|
|
|
14660
14660
|
}
|
|
14661
14661
|
} catch {
|
|
14662
14662
|
}
|
|
14663
|
-
return new Promise((
|
|
14663
|
+
return new Promise((resolve4, reject) => {
|
|
14664
14664
|
if (signal.aborted) {
|
|
14665
14665
|
reject(new McpError(ErrorCode.InvalidRequest, "Request cancelled"));
|
|
14666
14666
|
return;
|
|
14667
14667
|
}
|
|
14668
|
-
const timeoutId = setTimeout(
|
|
14668
|
+
const timeoutId = setTimeout(resolve4, interval);
|
|
14669
14669
|
signal.addEventListener("abort", () => {
|
|
14670
14670
|
clearTimeout(timeoutId);
|
|
14671
14671
|
reject(new McpError(ErrorCode.InvalidRequest, "Request cancelled"));
|
|
@@ -15461,8 +15461,8 @@ import * as path from "node:path";
|
|
|
15461
15461
|
import * as readline from "node:readline";
|
|
15462
15462
|
import { homedir } from "node:os";
|
|
15463
15463
|
import { spawn, execFileSync } from "node:child_process";
|
|
15464
|
-
import { randomBytes } from "node:crypto";
|
|
15465
|
-
import { mkdir, writeFile, readFile, unlink, rename, chmod } from "node:fs/promises";
|
|
15464
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
15465
|
+
import { mkdir, writeFile, readFile, readdir, unlink, rename, chmod } from "node:fs/promises";
|
|
15466
15466
|
var STATE_DIR = path.join(homedir(), ".argent");
|
|
15467
15467
|
var STATE_FILE = path.join(STATE_DIR, "tool-server.json");
|
|
15468
15468
|
var LOG_FILE = path.join(STATE_DIR, "tool-server.log");
|
|
@@ -15482,13 +15482,15 @@ function buildToolsServerEnv(paths, port, baseEnv = process.env, options = {}) {
|
|
|
15482
15482
|
env.ARGENT_IDLE_TIMEOUT_MINUTES = String(options.idleTimeoutMinutes);
|
|
15483
15483
|
}
|
|
15484
15484
|
if (options.token) env[AUTH_TOKEN_ENV] = options.token;
|
|
15485
|
+
if (paths.installKind) env.ARGENT_INSTALL_KIND = paths.installKind;
|
|
15486
|
+
if (paths.installProjectRoot) env.ARGENT_PROJECT_ROOT = paths.installProjectRoot;
|
|
15485
15487
|
return env;
|
|
15486
15488
|
}
|
|
15487
15489
|
function generateToken() {
|
|
15488
15490
|
return randomBytes(AUTH_TOKEN_BYTES).toString("hex");
|
|
15489
15491
|
}
|
|
15490
15492
|
function findFreePort() {
|
|
15491
|
-
return new Promise((
|
|
15493
|
+
return new Promise((resolve4, reject) => {
|
|
15492
15494
|
const srv = net.createServer();
|
|
15493
15495
|
srv.listen(0, "127.0.0.1", () => {
|
|
15494
15496
|
const addr = srv.address();
|
|
@@ -15499,12 +15501,55 @@ function findFreePort() {
|
|
|
15499
15501
|
const port = addr.port;
|
|
15500
15502
|
srv.close((err) => {
|
|
15501
15503
|
if (err) reject(err);
|
|
15502
|
-
else
|
|
15504
|
+
else resolve4(port);
|
|
15503
15505
|
});
|
|
15504
15506
|
});
|
|
15505
15507
|
srv.on("error", reject);
|
|
15506
15508
|
});
|
|
15507
15509
|
}
|
|
15510
|
+
function isVersionNewer(a, b) {
|
|
15511
|
+
const parse3 = (v) => {
|
|
15512
|
+
const [core = "", ...preParts] = v.split("+")[0].split("-");
|
|
15513
|
+
const nums = core.split(".").map((n) => Number.parseInt(n, 10));
|
|
15514
|
+
if (nums.length === 0 || nums.some((n) => Number.isNaN(n))) return null;
|
|
15515
|
+
return { nums, pre: preParts.length > 0 ? preParts.join("-").split(".") : [] };
|
|
15516
|
+
};
|
|
15517
|
+
const pa = parse3(a);
|
|
15518
|
+
const pb = parse3(b);
|
|
15519
|
+
if (!pa || !pb) return false;
|
|
15520
|
+
for (let i = 0; i < 3; i++) {
|
|
15521
|
+
const x = pa.nums[i] ?? 0;
|
|
15522
|
+
const y = pb.nums[i] ?? 0;
|
|
15523
|
+
if (x !== y) return x > y;
|
|
15524
|
+
}
|
|
15525
|
+
if (pa.pre.length === 0 && pb.pre.length === 0) return false;
|
|
15526
|
+
if (pa.pre.length === 0) return true;
|
|
15527
|
+
if (pb.pre.length === 0) return false;
|
|
15528
|
+
for (let i = 0; i < Math.max(pa.pre.length, pb.pre.length); i++) {
|
|
15529
|
+
const x = pa.pre[i];
|
|
15530
|
+
const y = pb.pre[i];
|
|
15531
|
+
if (x === void 0) return false;
|
|
15532
|
+
if (y === void 0) return true;
|
|
15533
|
+
if (x === y) continue;
|
|
15534
|
+
const xn = /^\d+$/.test(x) ? Number.parseInt(x, 10) : null;
|
|
15535
|
+
const yn = /^\d+$/.test(y) ? Number.parseInt(y, 10) : null;
|
|
15536
|
+
if (xn !== null && yn !== null) return xn > yn;
|
|
15537
|
+
if (xn !== null) return false;
|
|
15538
|
+
if (yn !== null) return true;
|
|
15539
|
+
return x > y;
|
|
15540
|
+
}
|
|
15541
|
+
return false;
|
|
15542
|
+
}
|
|
15543
|
+
function readBundlePackageVersion(bundlePath) {
|
|
15544
|
+
try {
|
|
15545
|
+
const pkg = JSON.parse(
|
|
15546
|
+
fs.readFileSync(path.join(path.dirname(bundlePath), "..", "package.json"), "utf8")
|
|
15547
|
+
);
|
|
15548
|
+
return typeof pkg.version === "string" ? pkg.version : void 0;
|
|
15549
|
+
} catch {
|
|
15550
|
+
return void 0;
|
|
15551
|
+
}
|
|
15552
|
+
}
|
|
15508
15553
|
function isProcessAlive(pid) {
|
|
15509
15554
|
try {
|
|
15510
15555
|
process.kill(pid, 0);
|
|
@@ -15554,7 +15599,7 @@ function killSpawnedChild(child, pid) {
|
|
|
15554
15599
|
}
|
|
15555
15600
|
}
|
|
15556
15601
|
function spawnToolsServer(paths, port, options = {}) {
|
|
15557
|
-
return new Promise((
|
|
15602
|
+
return new Promise((resolve4, reject) => {
|
|
15558
15603
|
let logFd;
|
|
15559
15604
|
try {
|
|
15560
15605
|
fs.mkdirSync(STATE_DIR, { recursive: true });
|
|
@@ -15590,7 +15635,8 @@ function spawnToolsServer(paths, port, options = {}) {
|
|
|
15590
15635
|
const actualPort = parseInt(match[1], 10);
|
|
15591
15636
|
rl.close();
|
|
15592
15637
|
child.stdout?.resume();
|
|
15593
|
-
|
|
15638
|
+
child.stdout?.unref?.();
|
|
15639
|
+
settle(() => resolve4({ port: actualPort, pid }));
|
|
15594
15640
|
}
|
|
15595
15641
|
});
|
|
15596
15642
|
child.on("error", (err) => {
|
|
@@ -15608,39 +15654,83 @@ function spawnToolsServer(paths, port, options = {}) {
|
|
|
15608
15654
|
rl.on("close", () => clearTimeout(timer));
|
|
15609
15655
|
});
|
|
15610
15656
|
}
|
|
15611
|
-
|
|
15657
|
+
function stateFileForBundle(bundlePath) {
|
|
15658
|
+
const key = createHash("sha256").update(bundlePath).digest("hex").slice(0, 12);
|
|
15659
|
+
return path.join(STATE_DIR, `tool-server-${key}.json`);
|
|
15660
|
+
}
|
|
15661
|
+
async function readStateFile(file) {
|
|
15612
15662
|
try {
|
|
15613
|
-
const raw = await readFile(
|
|
15663
|
+
const raw = await readFile(file, "utf8");
|
|
15614
15664
|
return JSON.parse(raw);
|
|
15615
15665
|
} catch {
|
|
15616
15666
|
return null;
|
|
15617
15667
|
}
|
|
15618
15668
|
}
|
|
15669
|
+
async function readToolsServerState(bundlePath) {
|
|
15670
|
+
if (bundlePath === void 0) return readStateFile(STATE_FILE);
|
|
15671
|
+
const own = await readStateFile(stateFileForBundle(bundlePath));
|
|
15672
|
+
if (own) return own;
|
|
15673
|
+
const legacy = await readStateFile(STATE_FILE);
|
|
15674
|
+
return legacy && legacy.bundlePath === bundlePath ? legacy : null;
|
|
15675
|
+
}
|
|
15619
15676
|
async function writeToolsServerState(state) {
|
|
15677
|
+
const target = stateFileForBundle(state.bundlePath);
|
|
15620
15678
|
await mkdir(STATE_DIR, { recursive: true });
|
|
15621
|
-
const tmp = `${
|
|
15679
|
+
const tmp = `${target}.${process.pid}.tmp`;
|
|
15622
15680
|
try {
|
|
15623
15681
|
await writeFile(tmp, JSON.stringify(state, null, 2) + "\n", {
|
|
15624
15682
|
encoding: "utf8",
|
|
15625
15683
|
mode: 384
|
|
15626
15684
|
});
|
|
15627
15685
|
await chmod(tmp, 384);
|
|
15628
|
-
await rename(tmp,
|
|
15686
|
+
await rename(tmp, target);
|
|
15629
15687
|
} catch (err) {
|
|
15630
15688
|
await unlink(tmp).catch(() => {
|
|
15631
15689
|
});
|
|
15632
15690
|
throw err;
|
|
15633
15691
|
}
|
|
15634
15692
|
}
|
|
15635
|
-
async function clearToolsServerState() {
|
|
15693
|
+
async function clearToolsServerState(bundlePath) {
|
|
15694
|
+
const files = [STATE_FILE];
|
|
15695
|
+
if (bundlePath !== void 0) {
|
|
15696
|
+
files[0] = stateFileForBundle(bundlePath);
|
|
15697
|
+
const legacy = await readStateFile(STATE_FILE);
|
|
15698
|
+
if (legacy && legacy.bundlePath === bundlePath) files.push(STATE_FILE);
|
|
15699
|
+
}
|
|
15700
|
+
for (const file of files) {
|
|
15701
|
+
try {
|
|
15702
|
+
await unlink(file);
|
|
15703
|
+
} catch {
|
|
15704
|
+
}
|
|
15705
|
+
}
|
|
15706
|
+
}
|
|
15707
|
+
var STATE_FILE_RE = /^tool-server(-[0-9a-f]{12})?\.json$/;
|
|
15708
|
+
async function readAllToolsServerStates() {
|
|
15709
|
+
let names;
|
|
15636
15710
|
try {
|
|
15637
|
-
await
|
|
15711
|
+
names = await readdir(STATE_DIR);
|
|
15638
15712
|
} catch {
|
|
15713
|
+
return [];
|
|
15714
|
+
}
|
|
15715
|
+
const out = [];
|
|
15716
|
+
for (const name of names) {
|
|
15717
|
+
if (!STATE_FILE_RE.test(name)) continue;
|
|
15718
|
+
const file = path.join(STATE_DIR, name);
|
|
15719
|
+
const state = await readStateFile(file);
|
|
15720
|
+
if (state) out.push({ file, state });
|
|
15721
|
+
}
|
|
15722
|
+
return out;
|
|
15723
|
+
}
|
|
15724
|
+
async function sweepDeadStateFiles() {
|
|
15725
|
+
for (const { file } of await readAllToolsServerStates()) {
|
|
15726
|
+
if (file === STATE_FILE) continue;
|
|
15727
|
+
const fresh = await readStateFile(file);
|
|
15728
|
+
if (fresh && !isProcessAlive(fresh.pid)) await unlink(file).catch(() => {
|
|
15729
|
+
});
|
|
15639
15730
|
}
|
|
15640
15731
|
}
|
|
15641
15732
|
var readState = readToolsServerState;
|
|
15642
15733
|
var writeState = writeToolsServerState;
|
|
15643
|
-
var clearState = clearToolsServerState;
|
|
15644
15734
|
var SIGTERM_GRACE_MS = 6e3;
|
|
15645
15735
|
var SIGKILL_GRACE_MS = 1e3;
|
|
15646
15736
|
var KILL_POLL_MS = 100;
|
|
@@ -15678,8 +15768,8 @@ function processCommandMatches(pid, marker) {
|
|
|
15678
15768
|
stdio: ["ignore", "pipe", "ignore"]
|
|
15679
15769
|
}).trim();
|
|
15680
15770
|
if (!cmd) return false;
|
|
15681
|
-
const
|
|
15682
|
-
return
|
|
15771
|
+
const escaped = marker.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
15772
|
+
return new RegExp(`(?:^|\\s)${escaped} start(?:\\s|$)`).test(cmd);
|
|
15683
15773
|
} catch {
|
|
15684
15774
|
return false;
|
|
15685
15775
|
}
|
|
@@ -15743,25 +15833,45 @@ async function acquireSpawnLock() {
|
|
|
15743
15833
|
}
|
|
15744
15834
|
}
|
|
15745
15835
|
}
|
|
15746
|
-
async function reusableHandle(state) {
|
|
15836
|
+
async function reusableHandle(state, wantBundlePath, wantVersion) {
|
|
15747
15837
|
if (!state || !isProcessAlive(state.pid)) return null;
|
|
15838
|
+
if (wantBundlePath !== void 0 && state.bundlePath !== wantBundlePath) return null;
|
|
15839
|
+
if (wantBundlePath !== void 0 && state.version !== void 0) {
|
|
15840
|
+
const diskVersion = readBundlePackageVersion(wantBundlePath);
|
|
15841
|
+
if (diskVersion !== void 0) {
|
|
15842
|
+
if (diskVersion !== state.version) return null;
|
|
15843
|
+
} else if (wantVersion !== void 0 && state.version !== wantVersion && isVersionNewer(wantVersion, state.version)) {
|
|
15844
|
+
return null;
|
|
15845
|
+
}
|
|
15846
|
+
}
|
|
15748
15847
|
const host = state.host ?? "127.0.0.1";
|
|
15749
15848
|
const healthy = await isToolsServerHealthy(state.port, host, 2e3, state.token);
|
|
15750
15849
|
if (!healthy) return null;
|
|
15751
15850
|
return { url: formatUrl(healthCheckHost(host), state.port), token: state.token ?? "" };
|
|
15752
15851
|
}
|
|
15753
15852
|
async function ensureToolsServer(paths) {
|
|
15754
|
-
const fast = await reusableHandle(
|
|
15853
|
+
const fast = await reusableHandle(
|
|
15854
|
+
await readState(paths.bundlePath),
|
|
15855
|
+
paths.bundlePath,
|
|
15856
|
+
paths.version
|
|
15857
|
+
);
|
|
15755
15858
|
if (fast) return fast;
|
|
15756
15859
|
const lock = await acquireSpawnLock();
|
|
15757
15860
|
try {
|
|
15758
|
-
const state = await readState();
|
|
15759
|
-
const reuse = await reusableHandle(state);
|
|
15861
|
+
const state = await readState(paths.bundlePath);
|
|
15862
|
+
const reuse = await reusableHandle(state, paths.bundlePath, paths.version);
|
|
15760
15863
|
if (reuse) return reuse;
|
|
15761
|
-
if (state && state.managed === "autospawn" && isProcessAlive(state.pid) && processCommandMatches(state.pid, state.bundlePath)) {
|
|
15864
|
+
if (state && state.managed === "autospawn" && state.bundlePath === paths.bundlePath && isProcessAlive(state.pid) && processCommandMatches(state.pid, state.bundlePath)) {
|
|
15762
15865
|
await terminatePid(state.pid, () => processCommandMatches(state.pid, state.bundlePath));
|
|
15763
15866
|
}
|
|
15764
|
-
await
|
|
15867
|
+
await clearToolsServerState(paths.bundlePath);
|
|
15868
|
+
await sweepDeadStateFiles();
|
|
15869
|
+
if (!fs.existsSync(paths.bundlePath)) {
|
|
15870
|
+
throw new Error(
|
|
15871
|
+
`The argent install serving this session is gone from disk (${paths.bundlePath}) \u2014 it was likely updated or removed. Restart the editor's MCP connection to reconnect.`
|
|
15872
|
+
);
|
|
15873
|
+
}
|
|
15874
|
+
const diskVersion = readBundlePackageVersion(paths.bundlePath) ?? paths.version;
|
|
15765
15875
|
const token = generateToken();
|
|
15766
15876
|
const port = await findFreePort();
|
|
15767
15877
|
const { port: actualPort, pid } = await spawnToolsServer(paths, port, {
|
|
@@ -15773,6 +15883,7 @@ async function ensureToolsServer(paths) {
|
|
|
15773
15883
|
pid,
|
|
15774
15884
|
startedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
15775
15885
|
bundlePath: paths.bundlePath,
|
|
15886
|
+
version: diskVersion,
|
|
15776
15887
|
host: "127.0.0.1",
|
|
15777
15888
|
token,
|
|
15778
15889
|
managed: "autospawn"
|
|
@@ -15926,7 +16037,7 @@ async function applyClientFileDirectives(result) {
|
|
|
15926
16037
|
import { mkdir as mkdir4, readFile as readFile4, rm, stat as stat2, writeFile as writeFile4 } from "node:fs/promises";
|
|
15927
16038
|
import { tmpdir } from "node:os";
|
|
15928
16039
|
import { basename, join as join3 } from "node:path";
|
|
15929
|
-
import { createHash } from "node:crypto";
|
|
16040
|
+
import { createHash as createHash2 } from "node:crypto";
|
|
15930
16041
|
import { execFile } from "node:child_process";
|
|
15931
16042
|
import { promisify } from "node:util";
|
|
15932
16043
|
var execFileAsync = promisify(execFile);
|
|
@@ -15947,7 +16058,7 @@ function sanitizeSegment(segment) {
|
|
|
15947
16058
|
}
|
|
15948
16059
|
function projectSlug() {
|
|
15949
16060
|
const cwd = process.cwd();
|
|
15950
|
-
const hash =
|
|
16061
|
+
const hash = createHash2("sha1").update(cwd).digest("hex").slice(0, 6);
|
|
15951
16062
|
const name = sanitizeSegment(basename(cwd)) || "root";
|
|
15952
16063
|
return `${name}-${hash}`;
|
|
15953
16064
|
}
|
|
@@ -17298,6 +17409,9 @@ var FAILURE_CODES = {
|
|
|
17298
17409
|
TOOLSERVER_UNHANDLED_REJECTION: "TOOLSERVER_UNHANDLED_REJECTION",
|
|
17299
17410
|
TOOLSERVER_UNCAUGHT_EXCEPTION: "TOOLSERVER_UNCAUGHT_EXCEPTION",
|
|
17300
17411
|
INSTALL_GLOBAL_PACKAGE_FAILED: "INSTALL_GLOBAL_PACKAGE_FAILED",
|
|
17412
|
+
INSTALL_LOCAL_PACKAGE_FAILED: "INSTALL_LOCAL_PACKAGE_FAILED",
|
|
17413
|
+
INSTALL_LOCAL_PRECONDITION_FAILED: "INSTALL_LOCAL_PRECONDITION_FAILED",
|
|
17414
|
+
INSTALL_MODE_FLAG_CONFLICT: "INSTALL_MODE_FLAG_CONFLICT",
|
|
17301
17415
|
INSTALL_FROM_TAR_PACKAGE_FAILED: "INSTALL_FROM_TAR_PACKAGE_FAILED",
|
|
17302
17416
|
INSTALL_INIT_TRIGGERED_UPDATE_FAILED: "INSTALL_INIT_TRIGGERED_UPDATE_FAILED",
|
|
17303
17417
|
INSTALL_SKILLS_REFRESH_FAILED: "INSTALL_SKILLS_REFRESH_FAILED",
|
|
@@ -17313,6 +17427,14 @@ var FAILURE_CODES = {
|
|
|
17313
17427
|
UNINSTALL_UNCLASSIFIED_FAILED: "UNINSTALL_UNCLASSIFIED_FAILED",
|
|
17314
17428
|
VEGA_CLI_COMMAND_FAILED: "VEGA_CLI_COMMAND_FAILED",
|
|
17315
17429
|
VEGA_INPUT_UNAVAILABLE: "VEGA_INPUT_UNAVAILABLE",
|
|
17430
|
+
VEGA_DEVICE_NOT_FOUND: "VEGA_DEVICE_NOT_FOUND",
|
|
17431
|
+
VEGA_DEVICE_NOT_REGISTERED: "VEGA_DEVICE_NOT_REGISTERED",
|
|
17432
|
+
VEGA_MULTIPLE_DEVICES: "VEGA_MULTIPLE_DEVICES",
|
|
17433
|
+
VEGA_BOOT_TIMEOUT: "VEGA_BOOT_TIMEOUT",
|
|
17434
|
+
VEGA_IMAGE_NOT_FOUND: "VEGA_IMAGE_NOT_FOUND",
|
|
17435
|
+
VEGA_ALREADY_RUNNING: "VEGA_ALREADY_RUNNING",
|
|
17436
|
+
VEGA_SCREENSHOT_FAILED: "VEGA_SCREENSHOT_FAILED",
|
|
17437
|
+
VEGA_TEXT_INVALID: "VEGA_TEXT_INVALID",
|
|
17316
17438
|
ANDROID_ADB_NOT_FOUND: "ANDROID_ADB_NOT_FOUND",
|
|
17317
17439
|
ANDROID_EMULATOR_NOT_FOUND: "ANDROID_EMULATOR_NOT_FOUND",
|
|
17318
17440
|
ANDROID_ADB_COMMAND_FAILED: "ANDROID_ADB_COMMAND_FAILED",
|
|
@@ -17325,6 +17447,7 @@ var FAILURE_CODES = {
|
|
|
17325
17447
|
SIMULATOR_NON_JSON_RESPONSE: "SIMULATOR_NON_JSON_RESPONSE",
|
|
17326
17448
|
SIMULATOR_HTTP_ERROR_RESPONSE: "SIMULATOR_HTTP_ERROR_RESPONSE",
|
|
17327
17449
|
SIMULATOR_MISSING_RESPONSE_FIELDS: "SIMULATOR_MISSING_RESPONSE_FIELDS",
|
|
17450
|
+
SIMULATOR_SCREENSHOT_FAILED: "SIMULATOR_SCREENSHOT_FAILED",
|
|
17328
17451
|
SIMULATOR_SERVER_FACTORY_OPTIONS_MISSING: "SIMULATOR_SERVER_FACTORY_OPTIONS_MISSING",
|
|
17329
17452
|
SIMULATOR_SERVER_DEVICE_ID_INVALID: "SIMULATOR_SERVER_DEVICE_ID_INVALID",
|
|
17330
17453
|
SIMULATOR_SERVER_READY_EXITED: "SIMULATOR_SERVER_READY_EXITED",
|
|
@@ -17378,6 +17501,7 @@ var FAILURE_CODES = {
|
|
|
17378
17501
|
ANDROID_SCREEN_SIZE_PARSE_FAILED: "ANDROID_SCREEN_SIZE_PARSE_FAILED",
|
|
17379
17502
|
ANDROID_SCREEN_SIZE_NON_POSITIVE: "ANDROID_SCREEN_SIZE_NON_POSITIVE",
|
|
17380
17503
|
ANDROID_UIAUTOMATOR_PARSE_FAILED: "ANDROID_UIAUTOMATOR_PARSE_FAILED",
|
|
17504
|
+
ANDROID_UIAUTOMATOR_CAPTURE_FAILED: "ANDROID_UIAUTOMATOR_CAPTURE_FAILED",
|
|
17381
17505
|
DEBUGGER_METRO_NOT_RUNNING: "DEBUGGER_METRO_NOT_RUNNING",
|
|
17382
17506
|
DEBUGGER_METRO_PROJECT_ROOT_MISSING: "DEBUGGER_METRO_PROJECT_ROOT_MISSING",
|
|
17383
17507
|
DEBUGGER_METRO_NO_TARGETS: "DEBUGGER_METRO_NO_TARGETS",
|
|
@@ -17422,8 +17546,19 @@ var FAILURE_CODES = {
|
|
|
17422
17546
|
NATIVE_PROFILER_XCTRACE_READY_EXITED: "NATIVE_PROFILER_XCTRACE_READY_EXITED",
|
|
17423
17547
|
NATIVE_PROFILER_XCTRACE_PROCESS_ERROR: "NATIVE_PROFILER_XCTRACE_PROCESS_ERROR",
|
|
17424
17548
|
NATIVE_PROFILER_XCTRACE_READY_TIMEOUT: "NATIVE_PROFILER_XCTRACE_READY_TIMEOUT",
|
|
17549
|
+
NATIVE_PROFILER_TRACE_TEMPLATE_MISSING: "NATIVE_PROFILER_TRACE_TEMPLATE_MISSING",
|
|
17425
17550
|
NATIVE_PROFILER_NO_ACTIVE_SESSION: "NATIVE_PROFILER_NO_ACTIVE_SESSION",
|
|
17551
|
+
NATIVE_PROFILER_APP_PROCESS_NOT_FOUND: "NATIVE_PROFILER_APP_PROCESS_NOT_FOUND",
|
|
17552
|
+
NATIVE_PROFILER_NO_EXPORTED_TRACE: "NATIVE_PROFILER_NO_EXPORTED_TRACE",
|
|
17553
|
+
// Android perfetto start-failure modes — mirror the iOS xctrace set so a
|
|
17554
|
+
// failed recording start is classified rather than falling through to the
|
|
17555
|
+
// generic tool-execution bucket.
|
|
17556
|
+
NATIVE_PROFILER_PERFETTO_PROCESS_ERROR: "NATIVE_PROFILER_PERFETTO_PROCESS_ERROR",
|
|
17557
|
+
NATIVE_PROFILER_PERFETTO_READY_TIMEOUT: "NATIVE_PROFILER_PERFETTO_READY_TIMEOUT",
|
|
17558
|
+
NATIVE_PROFILER_PERFETTO_READY_EXITED: "NATIVE_PROFILER_PERFETTO_READY_EXITED",
|
|
17426
17559
|
FLOW_PROJECT_ROOT_REQUIRED: "FLOW_PROJECT_ROOT_REQUIRED",
|
|
17560
|
+
FLOW_PROJECT_ROOT_INVALID: "FLOW_PROJECT_ROOT_INVALID",
|
|
17561
|
+
FLOW_NAME_INVALID: "FLOW_NAME_INVALID",
|
|
17427
17562
|
FLOW_NO_ACTIVE_RECORDING: "FLOW_NO_ACTIVE_RECORDING",
|
|
17428
17563
|
FLOW_FILE_INVALID: "FLOW_FILE_INVALID",
|
|
17429
17564
|
FLOW_ENTRY_UNRECOGNIZED: "FLOW_ENTRY_UNRECOGNIZED",
|
|
@@ -17431,6 +17566,27 @@ var FAILURE_CODES = {
|
|
|
17431
17566
|
PROFILER_QUERY_REQUIRED_PARAM_MISSING: "PROFILER_QUERY_REQUIRED_PARAM_MISSING",
|
|
17432
17567
|
PROFILER_DATA_NOT_LOADED: "PROFILER_DATA_NOT_LOADED",
|
|
17433
17568
|
PROFILER_NATIVE_TRACE_MISSING: "PROFILER_NATIVE_TRACE_MISSING",
|
|
17569
|
+
PROFILER_NATIVE_METADATA_MISSING: "PROFILER_NATIVE_METADATA_MISSING",
|
|
17570
|
+
PROFILER_NATIVE_METADATA_INVALID: "PROFILER_NATIVE_METADATA_INVALID",
|
|
17571
|
+
CHROMIUM_CDP_UNREACHABLE: "CHROMIUM_CDP_UNREACHABLE",
|
|
17572
|
+
CHROMIUM_CDP_NO_PAGE_TARGET: "CHROMIUM_CDP_NO_PAGE_TARGET",
|
|
17573
|
+
CHROMIUM_CDP_INVALID_RESPONSE: "CHROMIUM_CDP_INVALID_RESPONSE",
|
|
17574
|
+
CHROMIUM_DEVICE_ID_INVALID: "CHROMIUM_DEVICE_ID_INVALID",
|
|
17575
|
+
CHROMIUM_PARAM_INVALID: "CHROMIUM_PARAM_INVALID",
|
|
17576
|
+
CHROMIUM_INPUT_INVALID: "CHROMIUM_INPUT_INVALID",
|
|
17577
|
+
CHROMIUM_VIEWPORT_READ_FAILED: "CHROMIUM_VIEWPORT_READ_FAILED",
|
|
17578
|
+
CHROMIUM_SCREENSHOT_FAILED: "CHROMIUM_SCREENSHOT_FAILED",
|
|
17579
|
+
CHROMIUM_STORAGE_EVAL_FAILED: "CHROMIUM_STORAGE_EVAL_FAILED",
|
|
17580
|
+
CHROMIUM_TAB_NOT_FOUND: "CHROMIUM_TAB_NOT_FOUND",
|
|
17581
|
+
CHROMIUM_TAB_OPEN_FAILED: "CHROMIUM_TAB_OPEN_FAILED",
|
|
17582
|
+
CHROMIUM_DESCRIBE_FAILED: "CHROMIUM_DESCRIBE_FAILED",
|
|
17583
|
+
CHROMIUM_ELECTRON_APP_PATH_INVALID: "CHROMIUM_ELECTRON_APP_PATH_INVALID",
|
|
17584
|
+
CHROMIUM_ELECTRON_SPAWN_FAILED: "CHROMIUM_ELECTRON_SPAWN_FAILED",
|
|
17585
|
+
CHROMIUM_ELECTRON_CDP_TIMEOUT: "CHROMIUM_ELECTRON_CDP_TIMEOUT",
|
|
17586
|
+
CHROMIUM_ELECTRON_EXITED_BEFORE_READY: "CHROMIUM_ELECTRON_EXITED_BEFORE_READY",
|
|
17587
|
+
KEYBOARD_KEY_UNSUPPORTED: "KEYBOARD_KEY_UNSUPPORTED",
|
|
17588
|
+
KEYBOARD_CHARACTER_UNSUPPORTED: "KEYBOARD_CHARACTER_UNSUPPORTED",
|
|
17589
|
+
SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
|
|
17434
17590
|
BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
|
|
17435
17591
|
BOOT_IOS_UNSUPPORTED_HOST: "BOOT_IOS_UNSUPPORTED_HOST",
|
|
17436
17592
|
BOOT_ANDROID_NO_AVDS: "BOOT_ANDROID_NO_AVDS",
|
|
@@ -17469,6 +17625,7 @@ var FAILURE_COMMANDS = [
|
|
|
17469
17625
|
"ax_service",
|
|
17470
17626
|
"simulator_server",
|
|
17471
17627
|
"cdp",
|
|
17628
|
+
"electron",
|
|
17472
17629
|
"npm",
|
|
17473
17630
|
"npx",
|
|
17474
17631
|
"unknown"
|
|
@@ -17502,7 +17659,15 @@ var FAILURE_SPAWN_CODE_SET = new Set(FAILURE_SPAWN_CODES);
|
|
|
17502
17659
|
import { randomUUID as randomUUID2 } from "node:crypto";
|
|
17503
17660
|
|
|
17504
17661
|
// ../telemetry/src/events.ts
|
|
17505
|
-
var PLATFORMS = [
|
|
17662
|
+
var PLATFORMS = [
|
|
17663
|
+
"ios",
|
|
17664
|
+
"ios-remote",
|
|
17665
|
+
"android",
|
|
17666
|
+
"chromium",
|
|
17667
|
+
"vega",
|
|
17668
|
+
"tvos",
|
|
17669
|
+
"android-tv"
|
|
17670
|
+
];
|
|
17506
17671
|
|
|
17507
17672
|
// ../telemetry/src/ai-identity.ts
|
|
17508
17673
|
var AI_CLIENTS = [
|
|
@@ -17589,6 +17754,7 @@ var FAILURE_SIGNAL_NAME = oneOf(FAILURE_SIGNAL_NAMES);
|
|
|
17589
17754
|
var FAILURE_SPAWN_CODE = oneOf(FAILURE_SPAWN_CODES);
|
|
17590
17755
|
var NETWORK_FAILURE = oneOf(NETWORK_FAILURES);
|
|
17591
17756
|
var AI_CLIENT = oneOf(AI_CLIENTS);
|
|
17757
|
+
var INSTALL_MODE = oneOf(["global", "local"]);
|
|
17592
17758
|
var AI_TELEMETRY = {
|
|
17593
17759
|
ai_client: AI_CLIENT
|
|
17594
17760
|
};
|
|
@@ -17612,10 +17778,21 @@ var ALLOWED = {
|
|
|
17612
17778
|
duration_ms: DURATION_MS,
|
|
17613
17779
|
is_success: bool,
|
|
17614
17780
|
editors_configured_count: COUNT,
|
|
17781
|
+
install_mode: INSTALL_MODE,
|
|
17615
17782
|
...FAILURE_SIGNAL
|
|
17616
17783
|
},
|
|
17617
17784
|
"installation:cli_init_cancel": {
|
|
17618
|
-
step: oneOf([
|
|
17785
|
+
step: oneOf([
|
|
17786
|
+
"global_install",
|
|
17787
|
+
"editors",
|
|
17788
|
+
"scope",
|
|
17789
|
+
"skills",
|
|
17790
|
+
"allowlist",
|
|
17791
|
+
"install_mode"
|
|
17792
|
+
])
|
|
17793
|
+
},
|
|
17794
|
+
"installation:install_mode_decision": {
|
|
17795
|
+
install_mode: INSTALL_MODE
|
|
17619
17796
|
},
|
|
17620
17797
|
"installation:global_install_decision": {
|
|
17621
17798
|
// `from_tar` is intentionally absent; the installer skips that dev path.
|
|
@@ -17629,11 +17806,16 @@ var ALLOWED = {
|
|
|
17629
17806
|
"installation:editors_select": {
|
|
17630
17807
|
editors: arrayOf(ADAPTER_NAME),
|
|
17631
17808
|
detected_editor_count: COUNT,
|
|
17632
|
-
scope: oneOf(["local", "global", "custom"])
|
|
17809
|
+
scope: oneOf(["local", "global", "custom"]),
|
|
17810
|
+
install_mode: INSTALL_MODE
|
|
17633
17811
|
},
|
|
17634
17812
|
"installation:allowlist_decision": {
|
|
17635
17813
|
is_enabled: bool
|
|
17636
17814
|
},
|
|
17815
|
+
"installation:stale_config_cleanup": {
|
|
17816
|
+
removed_count: COUNT,
|
|
17817
|
+
warned_count: COUNT
|
|
17818
|
+
},
|
|
17637
17819
|
"installation:skill_install": {
|
|
17638
17820
|
method: oneOf(["default", "interactive", "manual"]),
|
|
17639
17821
|
is_online: bool,
|
|
@@ -17657,16 +17839,19 @@ var ALLOWED = {
|
|
|
17657
17839
|
},
|
|
17658
17840
|
"installation:cli_update_start": {},
|
|
17659
17841
|
"installation:cli_update_complete": {
|
|
17660
|
-
duration_ms: DURATION_MS
|
|
17842
|
+
duration_ms: DURATION_MS,
|
|
17843
|
+
install_mode: INSTALL_MODE
|
|
17661
17844
|
},
|
|
17662
17845
|
"installation:cli_update_fail": {
|
|
17663
17846
|
duration_ms: DURATION_MS,
|
|
17847
|
+
install_mode: INSTALL_MODE,
|
|
17664
17848
|
...FAILURE_SIGNAL
|
|
17665
17849
|
},
|
|
17666
17850
|
"installation:cli_uninstall_start": {},
|
|
17667
17851
|
"installation:cli_uninstall_complete": {
|
|
17668
17852
|
has_pruned_content: bool,
|
|
17669
17853
|
has_uninstalled_package: bool,
|
|
17854
|
+
install_mode: INSTALL_MODE,
|
|
17670
17855
|
...FAILURE_SIGNAL
|
|
17671
17856
|
},
|
|
17672
17857
|
"tool:invoke": {
|
|
@@ -18249,14 +18434,25 @@ function updateConfig(mutate) {
|
|
|
18249
18434
|
}
|
|
18250
18435
|
}
|
|
18251
18436
|
|
|
18252
|
-
// ../telemetry/src/
|
|
18437
|
+
// ../telemetry/src/fingerprint.ts
|
|
18438
|
+
import { execFileSync as execFileSync2, spawn as spawn2 } from "node:child_process";
|
|
18439
|
+
|
|
18440
|
+
// ../native-devtools-ios/src/index.ts
|
|
18441
|
+
import * as path9 from "node:path";
|
|
18253
18442
|
import * as fs5 from "node:fs";
|
|
18443
|
+
var DYLIB_DIR = process.env.ARGENT_NATIVE_DEVTOOLS_DIR ?? path9.join(__dirname, "..", "dylibs");
|
|
18444
|
+
var BIN_DIR = process.env.ARGENT_SIMULATOR_SERVER_DIR ?? path9.join(__dirname, "..", "bin");
|
|
18445
|
+
var DYLIB_TCP_DIR = process.env.ARGENT_NATIVE_DEVTOOLS_TCP_DIR ?? path9.join(DYLIB_DIR, "tcp");
|
|
18446
|
+
var DYLIB_TVOS_DIR = path9.join(DYLIB_DIR, "tvos");
|
|
18447
|
+
|
|
18448
|
+
// ../telemetry/src/consent.ts
|
|
18449
|
+
import * as fs6 from "node:fs";
|
|
18254
18450
|
var cache = { current: null };
|
|
18255
18451
|
var sessionOverride = null;
|
|
18256
18452
|
function readConfigOverride() {
|
|
18257
18453
|
let stats;
|
|
18258
18454
|
try {
|
|
18259
|
-
stats =
|
|
18455
|
+
stats = fs6.lstatSync(configFilePath());
|
|
18260
18456
|
} catch (err) {
|
|
18261
18457
|
if (err.code === "ENOENT") {
|
|
18262
18458
|
cache.current = { mtimeMs: null, fingerprint: null, enabledOverride: null };
|
|
@@ -18276,7 +18472,7 @@ function readConfigOverride() {
|
|
|
18276
18472
|
}
|
|
18277
18473
|
let parsedEnabled = null;
|
|
18278
18474
|
try {
|
|
18279
|
-
const raw =
|
|
18475
|
+
const raw = fs6.readFileSync(configFilePath(), "utf8");
|
|
18280
18476
|
const json = JSON.parse(raw);
|
|
18281
18477
|
if (json && typeof json === "object") {
|
|
18282
18478
|
const t = json.telemetry;
|
|
@@ -18330,14 +18526,14 @@ function isEnabled(env = process.env) {
|
|
|
18330
18526
|
}
|
|
18331
18527
|
|
|
18332
18528
|
// ../telemetry/src/debug.ts
|
|
18333
|
-
import * as
|
|
18529
|
+
import * as fs7 from "node:fs";
|
|
18334
18530
|
|
|
18335
18531
|
// ../telemetry/src/notice.ts
|
|
18336
18532
|
var TELEMETRY_OPT_OUT_COMMAND = "argent telemetry disable";
|
|
18337
18533
|
var TELEMETRY_DETAILS_URL = "https://swmansion.com/legal/argent/privacy-notice/";
|
|
18338
18534
|
var FIRST_RUN_NOTICE_BODY_LINES = [
|
|
18339
|
-
"Argent collects
|
|
18340
|
-
"collect your source code, file paths, tool inputs, or error contents."
|
|
18535
|
+
"Argent collects usage data to help us improve the tool.",
|
|
18536
|
+
"We never collect your source code, file paths, tool inputs, or error contents."
|
|
18341
18537
|
];
|
|
18342
18538
|
var FIRST_RUN_NOTICE = [
|
|
18343
18539
|
...FIRST_RUN_NOTICE_BODY_LINES,
|
|
@@ -18577,12 +18773,12 @@ function toMcpTool(t) {
|
|
|
18577
18773
|
}
|
|
18578
18774
|
|
|
18579
18775
|
// ../argent-mcp/src/installed-version.ts
|
|
18580
|
-
import * as
|
|
18581
|
-
import * as
|
|
18776
|
+
import * as fs8 from "node:fs";
|
|
18777
|
+
import * as path10 from "node:path";
|
|
18582
18778
|
function getInstalledVersion() {
|
|
18583
18779
|
try {
|
|
18584
|
-
const pkgPath =
|
|
18585
|
-
const pkg = JSON.parse(
|
|
18780
|
+
const pkgPath = path10.resolve(import.meta.dirname, "..", "package.json");
|
|
18781
|
+
const pkg = JSON.parse(fs8.readFileSync(pkgPath, "utf8"));
|
|
18586
18782
|
return pkg.version ?? "unknown";
|
|
18587
18783
|
} catch {
|
|
18588
18784
|
return "unknown";
|
|
@@ -18671,7 +18867,7 @@ async function startMcpServer(options) {
|
|
|
18671
18867
|
async function spyLog(entry) {
|
|
18672
18868
|
try {
|
|
18673
18869
|
if (!logDirReady) {
|
|
18674
|
-
await mkdir5(
|
|
18870
|
+
await mkdir5(dirname4(LOG_FILE2), { recursive: true });
|
|
18675
18871
|
logDirReady = true;
|
|
18676
18872
|
}
|
|
18677
18873
|
await appendFile(LOG_FILE2, JSON.stringify(entry) + "\n");
|
|
@@ -18767,8 +18963,21 @@ async function startMcpServer(options) {
|
|
|
18767
18963
|
}
|
|
18768
18964
|
const udid = getUdidFromArgs(params.arguments);
|
|
18769
18965
|
if (autoScreenshotOn && udid && shouldAutoScreenshot(params.name)) {
|
|
18770
|
-
const
|
|
18771
|
-
if (
|
|
18966
|
+
const maxWaitMs = getAutoScreenshotDelayMs(params.name);
|
|
18967
|
+
if (maxWaitMs > 0) {
|
|
18968
|
+
try {
|
|
18969
|
+
const idle = await callTool("await-screen-idle", { udid, timeoutMs: maxWaitMs });
|
|
18970
|
+
await spyLog({
|
|
18971
|
+
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
18972
|
+
event: "auto_screenshot_readiness",
|
|
18973
|
+
name: params.name,
|
|
18974
|
+
maxWaitMs,
|
|
18975
|
+
...idle.result
|
|
18976
|
+
});
|
|
18977
|
+
} catch {
|
|
18978
|
+
await new Promise((r) => setTimeout(r, maxWaitMs));
|
|
18979
|
+
}
|
|
18980
|
+
}
|
|
18772
18981
|
try {
|
|
18773
18982
|
const screenshotResult = await callTool("screenshot", { udid });
|
|
18774
18983
|
const screenshotContent = await toMcpContent(screenshotResult.result, "image", {
|