@swmansion/argent 0.18.1-next.8 → 0.19.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.
@@ -5,7 +5,13 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __commonJS = (cb, mod) => function __require() {
8
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
9
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
10
+ }) : x)(function(x) {
11
+ if (typeof require !== "undefined") return require.apply(this, arguments);
12
+ throw Error('Dynamic require of "' + x + '" is not supported');
13
+ });
14
+ var __commonJS = (cb, mod) => function __require2() {
9
15
  try {
10
16
  return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
11
17
  } catch (e) {
@@ -2984,7 +2990,7 @@ var require_compile = __commonJS({
2984
2990
  const schOrFunc = root.refs[ref];
2985
2991
  if (schOrFunc)
2986
2992
  return schOrFunc;
2987
- let _sch = resolve7.call(this, root, ref);
2993
+ let _sch = resolve8.call(this, root, ref);
2988
2994
  if (_sch === void 0) {
2989
2995
  const schema = (_a3 = root.localRefs) === null || _a3 === void 0 ? void 0 : _a3[ref];
2990
2996
  const { schemaId } = this.opts;
@@ -3011,7 +3017,7 @@ var require_compile = __commonJS({
3011
3017
  function sameSchemaEnv(s1, s2) {
3012
3018
  return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;
3013
3019
  }
3014
- function resolve7(root, ref) {
3020
+ function resolve8(root, ref) {
3015
3021
  let sch;
3016
3022
  while (typeof (sch = this.refs[ref]) == "string")
3017
3023
  ref = sch;
@@ -3229,8 +3235,8 @@ var require_utils = __commonJS({
3229
3235
  }
3230
3236
  return ind;
3231
3237
  }
3232
- function removeDotSegments(path12) {
3233
- let input = path12;
3238
+ function removeDotSegments(path13) {
3239
+ let input = path13;
3234
3240
  const output = [];
3235
3241
  let nextSlash = -1;
3236
3242
  let len = 0;
@@ -3482,8 +3488,8 @@ var require_schemes = __commonJS({
3482
3488
  wsComponent.secure = void 0;
3483
3489
  }
3484
3490
  if (wsComponent.resourceName) {
3485
- const [path12, query] = wsComponent.resourceName.split("?");
3486
- wsComponent.path = path12 && path12 !== "/" ? path12 : void 0;
3491
+ const [path13, query] = wsComponent.resourceName.split("?");
3492
+ wsComponent.path = path13 && path13 !== "/" ? path13 : void 0;
3487
3493
  wsComponent.query = query;
3488
3494
  wsComponent.resourceName = void 0;
3489
3495
  }
@@ -3642,7 +3648,7 @@ var require_fast_uri = __commonJS({
3642
3648
  }
3643
3649
  return uri;
3644
3650
  }
3645
- function resolve7(baseURI, relativeURI, options) {
3651
+ function resolve8(baseURI, relativeURI, options) {
3646
3652
  const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
3647
3653
  const resolved = resolveComponent(parse3(baseURI, schemelessOptions), parse3(relativeURI, schemelessOptions), schemelessOptions, true);
3648
3654
  schemelessOptions.skipEscape = true;
@@ -3900,7 +3906,7 @@ var require_fast_uri = __commonJS({
3900
3906
  var fastUri = {
3901
3907
  SCHEMES,
3902
3908
  normalize: normalize2,
3903
- resolve: resolve7,
3909
+ resolve: resolve8,
3904
3910
  resolveComponent,
3905
3911
  equal,
3906
3912
  serialize,
@@ -6876,12 +6882,12 @@ var require_dist = __commonJS({
6876
6882
  throw new Error(`Unknown format "${name}"`);
6877
6883
  return f;
6878
6884
  };
6879
- function addFormats(ajv, list, fs9, exportName) {
6885
+ function addFormats(ajv, list, fs10, exportName) {
6880
6886
  var _a3;
6881
6887
  var _b;
6882
6888
  (_a3 = (_b = ajv.opts.code).formats) !== null && _a3 !== void 0 ? _a3 : _b.formats = (0, codegen_1._)`require("ajv-formats/dist/formats").${exportName}`;
6883
6889
  for (const f of list)
6884
- ajv.addFormat(f, fs9[f]);
6890
+ ajv.addFormat(f, fs10[f]);
6885
6891
  }
6886
6892
  module.exports = exports = formatsPlugin;
6887
6893
  Object.defineProperty(exports, "__esModule", { value: true });
@@ -6889,6 +6895,325 @@ var require_dist = __commonJS({
6889
6895
  }
6890
6896
  });
6891
6897
 
6898
+ // ../../node_modules/dotenv/lib/main.js
6899
+ var require_main = __commonJS({
6900
+ "../../node_modules/dotenv/lib/main.js"(exports, module) {
6901
+ var fs10 = __require("fs");
6902
+ var path13 = __require("path");
6903
+ var os2 = __require("os");
6904
+ var crypto3 = __require("crypto");
6905
+ var TIPS = [
6906
+ "\u25C8 encrypted .env [www.dotenvx.com]",
6907
+ "\u25C8 secrets for agents [www.dotenvx.com]",
6908
+ "\u2301 auth for agents [www.vestauth.com]",
6909
+ "\u2318 custom filepath { path: '/custom/path/.env' }",
6910
+ "\u2318 enable debugging { debug: true }",
6911
+ "\u2318 override existing { override: true }",
6912
+ "\u2318 suppress logs { quiet: true }",
6913
+ "\u2318 multiple files { path: ['.env.local', '.env'] }"
6914
+ ];
6915
+ function _getRandomTip() {
6916
+ return TIPS[Math.floor(Math.random() * TIPS.length)];
6917
+ }
6918
+ function parseBoolean(value) {
6919
+ if (typeof value === "string") {
6920
+ return !["false", "0", "no", "off", ""].includes(value.toLowerCase());
6921
+ }
6922
+ return Boolean(value);
6923
+ }
6924
+ function supportsAnsi() {
6925
+ return process.stdout.isTTY;
6926
+ }
6927
+ function dim(text) {
6928
+ return supportsAnsi() ? `\x1B[2m${text}\x1B[0m` : text;
6929
+ }
6930
+ var LINE = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;
6931
+ function parse3(src) {
6932
+ const obj = {};
6933
+ let lines = src.toString();
6934
+ lines = lines.replace(/\r\n?/mg, "\n");
6935
+ let match;
6936
+ while ((match = LINE.exec(lines)) != null) {
6937
+ const key = match[1];
6938
+ let value = match[2] || "";
6939
+ value = value.trim();
6940
+ const maybeQuote = value[0];
6941
+ value = value.replace(/^(['"`])([\s\S]*)\1$/mg, "$2");
6942
+ if (maybeQuote === '"') {
6943
+ value = value.replace(/\\n/g, "\n");
6944
+ value = value.replace(/\\r/g, "\r");
6945
+ }
6946
+ obj[key] = value;
6947
+ }
6948
+ return obj;
6949
+ }
6950
+ function _parseVault(options) {
6951
+ options = options || {};
6952
+ const vaultPath = _vaultPath(options);
6953
+ options.path = vaultPath;
6954
+ const result = DotenvModule.configDotenv(options);
6955
+ if (!result.parsed) {
6956
+ const err = new Error(`MISSING_DATA: Cannot parse ${vaultPath} for an unknown reason`);
6957
+ err.code = "MISSING_DATA";
6958
+ throw err;
6959
+ }
6960
+ const keys = _dotenvKey(options).split(",");
6961
+ const length = keys.length;
6962
+ let decrypted;
6963
+ for (let i = 0; i < length; i++) {
6964
+ try {
6965
+ const key = keys[i].trim();
6966
+ const attrs = _instructions(result, key);
6967
+ decrypted = DotenvModule.decrypt(attrs.ciphertext, attrs.key);
6968
+ break;
6969
+ } catch (error2) {
6970
+ if (i + 1 >= length) {
6971
+ throw error2;
6972
+ }
6973
+ }
6974
+ }
6975
+ return DotenvModule.parse(decrypted);
6976
+ }
6977
+ function _warn(message) {
6978
+ console.error(`\u26A0 ${message}`);
6979
+ }
6980
+ function _debug(message) {
6981
+ console.log(`\u2506 ${message}`);
6982
+ }
6983
+ function _log(message) {
6984
+ console.log(`\u25C7 ${message}`);
6985
+ }
6986
+ function _dotenvKey(options) {
6987
+ if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {
6988
+ return options.DOTENV_KEY;
6989
+ }
6990
+ if (process.env.DOTENV_KEY && process.env.DOTENV_KEY.length > 0) {
6991
+ return process.env.DOTENV_KEY;
6992
+ }
6993
+ return "";
6994
+ }
6995
+ function _instructions(result, dotenvKey) {
6996
+ let uri;
6997
+ try {
6998
+ uri = new URL(dotenvKey);
6999
+ } catch (error2) {
7000
+ if (error2.code === "ERR_INVALID_URL") {
7001
+ const err = new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");
7002
+ err.code = "INVALID_DOTENV_KEY";
7003
+ throw err;
7004
+ }
7005
+ throw error2;
7006
+ }
7007
+ const key = uri.password;
7008
+ if (!key) {
7009
+ const err = new Error("INVALID_DOTENV_KEY: Missing key part");
7010
+ err.code = "INVALID_DOTENV_KEY";
7011
+ throw err;
7012
+ }
7013
+ const environment = uri.searchParams.get("environment");
7014
+ if (!environment) {
7015
+ const err = new Error("INVALID_DOTENV_KEY: Missing environment part");
7016
+ err.code = "INVALID_DOTENV_KEY";
7017
+ throw err;
7018
+ }
7019
+ const environmentKey = `DOTENV_VAULT_${environment.toUpperCase()}`;
7020
+ const ciphertext = result.parsed[environmentKey];
7021
+ if (!ciphertext) {
7022
+ const err = new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${environmentKey} in your .env.vault file.`);
7023
+ err.code = "NOT_FOUND_DOTENV_ENVIRONMENT";
7024
+ throw err;
7025
+ }
7026
+ return { ciphertext, key };
7027
+ }
7028
+ function _vaultPath(options) {
7029
+ let possibleVaultPath = null;
7030
+ if (options && options.path && options.path.length > 0) {
7031
+ if (Array.isArray(options.path)) {
7032
+ for (const filepath of options.path) {
7033
+ if (fs10.existsSync(filepath)) {
7034
+ possibleVaultPath = filepath.endsWith(".vault") ? filepath : `${filepath}.vault`;
7035
+ }
7036
+ }
7037
+ } else {
7038
+ possibleVaultPath = options.path.endsWith(".vault") ? options.path : `${options.path}.vault`;
7039
+ }
7040
+ } else {
7041
+ possibleVaultPath = path13.resolve(process.cwd(), ".env.vault");
7042
+ }
7043
+ if (fs10.existsSync(possibleVaultPath)) {
7044
+ return possibleVaultPath;
7045
+ }
7046
+ return null;
7047
+ }
7048
+ function _resolveHome(envPath) {
7049
+ return envPath[0] === "~" ? path13.join(os2.homedir(), envPath.slice(1)) : envPath;
7050
+ }
7051
+ function _configVault(options) {
7052
+ const debug = parseBoolean(process.env.DOTENV_CONFIG_DEBUG || options && options.debug);
7053
+ const quiet = parseBoolean(process.env.DOTENV_CONFIG_QUIET || options && options.quiet);
7054
+ if (debug || !quiet) {
7055
+ _log("loading env from encrypted .env.vault");
7056
+ }
7057
+ const parsed = DotenvModule._parseVault(options);
7058
+ let processEnv = process.env;
7059
+ if (options && options.processEnv != null) {
7060
+ processEnv = options.processEnv;
7061
+ }
7062
+ DotenvModule.populate(processEnv, parsed, options);
7063
+ return { parsed };
7064
+ }
7065
+ function configDotenv(options) {
7066
+ const dotenvPath = path13.resolve(process.cwd(), ".env");
7067
+ let encoding = "utf8";
7068
+ let processEnv = process.env;
7069
+ if (options && options.processEnv != null) {
7070
+ processEnv = options.processEnv;
7071
+ }
7072
+ let debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || options && options.debug);
7073
+ let quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || options && options.quiet);
7074
+ if (options && options.encoding) {
7075
+ encoding = options.encoding;
7076
+ } else {
7077
+ if (debug) {
7078
+ _debug("no encoding is specified (UTF-8 is used by default)");
7079
+ }
7080
+ }
7081
+ let optionPaths = [dotenvPath];
7082
+ if (options && options.path) {
7083
+ if (!Array.isArray(options.path)) {
7084
+ optionPaths = [_resolveHome(options.path)];
7085
+ } else {
7086
+ optionPaths = [];
7087
+ for (const filepath of options.path) {
7088
+ optionPaths.push(_resolveHome(filepath));
7089
+ }
7090
+ }
7091
+ }
7092
+ let lastError;
7093
+ const parsedAll = {};
7094
+ for (const path14 of optionPaths) {
7095
+ try {
7096
+ const parsed = DotenvModule.parse(fs10.readFileSync(path14, { encoding }));
7097
+ DotenvModule.populate(parsedAll, parsed, options);
7098
+ } catch (e) {
7099
+ if (debug) {
7100
+ _debug(`failed to load ${path14} ${e.message}`);
7101
+ }
7102
+ lastError = e;
7103
+ }
7104
+ }
7105
+ const populated = DotenvModule.populate(processEnv, parsedAll, options);
7106
+ debug = parseBoolean(processEnv.DOTENV_CONFIG_DEBUG || debug);
7107
+ quiet = parseBoolean(processEnv.DOTENV_CONFIG_QUIET || quiet);
7108
+ if (debug || !quiet) {
7109
+ const keysCount = Object.keys(populated).length;
7110
+ const shortPaths = [];
7111
+ for (const filePath of optionPaths) {
7112
+ try {
7113
+ const relative2 = path13.relative(process.cwd(), filePath);
7114
+ shortPaths.push(relative2);
7115
+ } catch (e) {
7116
+ if (debug) {
7117
+ _debug(`failed to load ${filePath} ${e.message}`);
7118
+ }
7119
+ lastError = e;
7120
+ }
7121
+ }
7122
+ _log(`injected env (${keysCount}) from ${shortPaths.join(",")} ${dim(`// tip: ${_getRandomTip()}`)}`);
7123
+ }
7124
+ if (lastError) {
7125
+ return { parsed: parsedAll, error: lastError };
7126
+ } else {
7127
+ return { parsed: parsedAll };
7128
+ }
7129
+ }
7130
+ function config2(options) {
7131
+ if (_dotenvKey(options).length === 0) {
7132
+ return DotenvModule.configDotenv(options);
7133
+ }
7134
+ const vaultPath = _vaultPath(options);
7135
+ if (!vaultPath) {
7136
+ _warn(`you set DOTENV_KEY but you are missing a .env.vault file at ${vaultPath}`);
7137
+ return DotenvModule.configDotenv(options);
7138
+ }
7139
+ return DotenvModule._configVault(options);
7140
+ }
7141
+ function decrypt(encrypted, keyStr) {
7142
+ const key = Buffer.from(keyStr.slice(-64), "hex");
7143
+ let ciphertext = Buffer.from(encrypted, "base64");
7144
+ const nonce = ciphertext.subarray(0, 12);
7145
+ const authTag = ciphertext.subarray(-16);
7146
+ ciphertext = ciphertext.subarray(12, -16);
7147
+ try {
7148
+ const aesgcm = crypto3.createDecipheriv("aes-256-gcm", key, nonce);
7149
+ aesgcm.setAuthTag(authTag);
7150
+ return `${aesgcm.update(ciphertext)}${aesgcm.final()}`;
7151
+ } catch (error2) {
7152
+ const isRange = error2 instanceof RangeError;
7153
+ const invalidKeyLength = error2.message === "Invalid key length";
7154
+ const decryptionFailed = error2.message === "Unsupported state or unable to authenticate data";
7155
+ if (isRange || invalidKeyLength) {
7156
+ const err = new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");
7157
+ err.code = "INVALID_DOTENV_KEY";
7158
+ throw err;
7159
+ } else if (decryptionFailed) {
7160
+ const err = new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");
7161
+ err.code = "DECRYPTION_FAILED";
7162
+ throw err;
7163
+ } else {
7164
+ throw error2;
7165
+ }
7166
+ }
7167
+ }
7168
+ function populate(processEnv, parsed, options = {}) {
7169
+ const debug = Boolean(options && options.debug);
7170
+ const override = Boolean(options && options.override);
7171
+ const populated = {};
7172
+ if (typeof parsed !== "object") {
7173
+ const err = new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");
7174
+ err.code = "OBJECT_REQUIRED";
7175
+ throw err;
7176
+ }
7177
+ for (const key of Object.keys(parsed)) {
7178
+ if (Object.prototype.hasOwnProperty.call(processEnv, key)) {
7179
+ if (override === true) {
7180
+ processEnv[key] = parsed[key];
7181
+ populated[key] = parsed[key];
7182
+ }
7183
+ if (debug) {
7184
+ if (override === true) {
7185
+ _debug(`"${key}" is already defined and WAS overwritten`);
7186
+ } else {
7187
+ _debug(`"${key}" is already defined and was NOT overwritten`);
7188
+ }
7189
+ }
7190
+ } else {
7191
+ processEnv[key] = parsed[key];
7192
+ populated[key] = parsed[key];
7193
+ }
7194
+ }
7195
+ return populated;
7196
+ }
7197
+ var DotenvModule = {
7198
+ configDotenv,
7199
+ _configVault,
7200
+ _parseVault,
7201
+ config: config2,
7202
+ decrypt,
7203
+ parse: parse3,
7204
+ populate
7205
+ };
7206
+ module.exports.configDotenv = DotenvModule.configDotenv;
7207
+ module.exports._configVault = DotenvModule._configVault;
7208
+ module.exports._parseVault = DotenvModule._parseVault;
7209
+ module.exports.config = DotenvModule.config;
7210
+ module.exports.decrypt = DotenvModule.decrypt;
7211
+ module.exports.parse = DotenvModule.parse;
7212
+ module.exports.populate = DotenvModule.populate;
7213
+ module.exports = DotenvModule;
7214
+ }
7215
+ });
7216
+
6892
7217
  // ../argent-mcp/src/mcp-server.ts
6893
7218
  import { appendFile, mkdir as mkdir5 } from "node:fs/promises";
6894
7219
  import { dirname as dirname6 } from "node:path";
@@ -7137,10 +7462,10 @@ function mergeDefs(...defs) {
7137
7462
  function cloneDef(schema) {
7138
7463
  return mergeDefs(schema._zod.def);
7139
7464
  }
7140
- function getElementAtPath(obj, path12) {
7141
- if (!path12)
7465
+ function getElementAtPath(obj, path13) {
7466
+ if (!path13)
7142
7467
  return obj;
7143
- return path12.reduce((acc, key) => acc?.[key], obj);
7468
+ return path13.reduce((acc, key) => acc?.[key], obj);
7144
7469
  }
7145
7470
  function promiseAllObject(promisesObj) {
7146
7471
  const keys = Object.keys(promisesObj);
@@ -7549,11 +7874,11 @@ function explicitlyAborted(x, startIndex = 0) {
7549
7874
  }
7550
7875
  return false;
7551
7876
  }
7552
- function prefixIssues(path12, issues) {
7877
+ function prefixIssues(path13, issues) {
7553
7878
  return issues.map((iss) => {
7554
7879
  var _a3;
7555
7880
  (_a3 = iss).path ?? (_a3.path = []);
7556
- iss.path.unshift(path12);
7881
+ iss.path.unshift(path13);
7557
7882
  return iss;
7558
7883
  });
7559
7884
  }
@@ -7700,16 +8025,16 @@ function flattenError(error2, mapper = (issue2) => issue2.message) {
7700
8025
  }
7701
8026
  function formatError(error2, mapper = (issue2) => issue2.message) {
7702
8027
  const fieldErrors = { _errors: [] };
7703
- const processError = (error3, path12 = []) => {
8028
+ const processError = (error3, path13 = []) => {
7704
8029
  for (const issue2 of error3.issues) {
7705
8030
  if (issue2.code === "invalid_union" && issue2.errors.length) {
7706
- issue2.errors.map((issues) => processError({ issues }, [...path12, ...issue2.path]));
8031
+ issue2.errors.map((issues) => processError({ issues }, [...path13, ...issue2.path]));
7707
8032
  } else if (issue2.code === "invalid_key") {
7708
- processError({ issues: issue2.issues }, [...path12, ...issue2.path]);
8033
+ processError({ issues: issue2.issues }, [...path13, ...issue2.path]);
7709
8034
  } else if (issue2.code === "invalid_element") {
7710
- processError({ issues: issue2.issues }, [...path12, ...issue2.path]);
8035
+ processError({ issues: issue2.issues }, [...path13, ...issue2.path]);
7711
8036
  } else {
7712
- const fullpath = [...path12, ...issue2.path];
8037
+ const fullpath = [...path13, ...issue2.path];
7713
8038
  if (fullpath.length === 0) {
7714
8039
  fieldErrors._errors.push(mapper(issue2));
7715
8040
  } else {
@@ -13701,12 +14026,12 @@ var StdioServerTransport = class {
13701
14026
  this.onclose?.();
13702
14027
  }
13703
14028
  send(message) {
13704
- return new Promise((resolve7) => {
14029
+ return new Promise((resolve8) => {
13705
14030
  const json = serializeMessage(message);
13706
14031
  if (this._stdout.write(json)) {
13707
- resolve7();
14032
+ resolve8();
13708
14033
  } else {
13709
- this._stdout.once("drain", resolve7);
14034
+ this._stdout.once("drain", resolve8);
13710
14035
  }
13711
14036
  });
13712
14037
  }
@@ -14304,7 +14629,7 @@ var Protocol = class {
14304
14629
  return;
14305
14630
  }
14306
14631
  const pollInterval = task2.pollInterval ?? this._options?.defaultTaskPollInterval ?? 1e3;
14307
- await new Promise((resolve7) => setTimeout(resolve7, pollInterval));
14632
+ await new Promise((resolve8) => setTimeout(resolve8, pollInterval));
14308
14633
  options?.signal?.throwIfAborted();
14309
14634
  }
14310
14635
  } catch (error2) {
@@ -14321,7 +14646,7 @@ var Protocol = class {
14321
14646
  */
14322
14647
  request(request, resultSchema, options) {
14323
14648
  const { relatedRequestId, resumptionToken, onresumptiontoken, task, relatedTask } = options ?? {};
14324
- return new Promise((resolve7, reject) => {
14649
+ return new Promise((resolve8, reject) => {
14325
14650
  const earlyReject = (error2) => {
14326
14651
  reject(error2);
14327
14652
  };
@@ -14399,7 +14724,7 @@ var Protocol = class {
14399
14724
  if (!parseResult.success) {
14400
14725
  reject(parseResult.error);
14401
14726
  } else {
14402
- resolve7(parseResult.data);
14727
+ resolve8(parseResult.data);
14403
14728
  }
14404
14729
  } catch (error2) {
14405
14730
  reject(error2);
@@ -14660,12 +14985,12 @@ var Protocol = class {
14660
14985
  }
14661
14986
  } catch {
14662
14987
  }
14663
- return new Promise((resolve7, reject) => {
14988
+ return new Promise((resolve8, reject) => {
14664
14989
  if (signal.aborted) {
14665
14990
  reject(new McpError(ErrorCode.InvalidRequest, "Request cancelled"));
14666
14991
  return;
14667
14992
  }
14668
- const timeoutId = setTimeout(resolve7, interval);
14993
+ const timeoutId = setTimeout(resolve8, interval);
14669
14994
  signal.addEventListener("abort", () => {
14670
14995
  clearTimeout(timeoutId);
14671
14996
  reject(new McpError(ErrorCode.InvalidRequest, "Request cancelled"));
@@ -15490,7 +15815,7 @@ function generateToken() {
15490
15815
  return randomBytes(AUTH_TOKEN_BYTES).toString("hex");
15491
15816
  }
15492
15817
  function findFreePort() {
15493
- return new Promise((resolve7, reject) => {
15818
+ return new Promise((resolve8, reject) => {
15494
15819
  const srv = net.createServer();
15495
15820
  srv.listen(0, "127.0.0.1", () => {
15496
15821
  const addr = srv.address();
@@ -15501,7 +15826,7 @@ function findFreePort() {
15501
15826
  const port = addr.port;
15502
15827
  srv.close((err) => {
15503
15828
  if (err) reject(err);
15504
- else resolve7(port);
15829
+ else resolve8(port);
15505
15830
  });
15506
15831
  });
15507
15832
  srv.on("error", reject);
@@ -15599,7 +15924,7 @@ function killSpawnedChild(child, pid) {
15599
15924
  }
15600
15925
  }
15601
15926
  function spawnToolsServer(paths, port, options = {}) {
15602
- return new Promise((resolve7, reject) => {
15927
+ return new Promise((resolve8, reject) => {
15603
15928
  let logFd;
15604
15929
  try {
15605
15930
  fs.mkdirSync(STATE_DIR, { recursive: true });
@@ -15636,7 +15961,7 @@ function spawnToolsServer(paths, port, options = {}) {
15636
15961
  rl.close();
15637
15962
  child.stdout?.resume();
15638
15963
  child.stdout?.unref?.();
15639
- settle(() => resolve7({ port: actualPort, pid }));
15964
+ settle(() => resolve8({ port: actualPort, pid }));
15640
15965
  }
15641
15966
  });
15642
15967
  child.on("error", (err) => {
@@ -15955,9 +16280,9 @@ async function isRemoteRouted() {
15955
16280
  }
15956
16281
 
15957
16282
  // ../argent-tools-client/src/file-inputs.ts
15958
- import { createHash as createHash2, randomUUID } from "node:crypto";
16283
+ import { createHash as createHash2, randomUUID as randomUUID3 } from "node:crypto";
15959
16284
  import { createReadStream } from "node:fs";
15960
- import { mkdir as mkdir3, readFile as readFile3, rm as rm2, stat, writeFile as writeFile3 } from "node:fs/promises";
16285
+ import { mkdir as mkdir3, readFile as readFile3, rm as rm2, stat as stat2, writeFile as writeFile3 } from "node:fs/promises";
15961
16286
  import { tmpdir } from "node:os";
15962
16287
  import * as path3 from "node:path";
15963
16288
 
@@ -16063,217 +16388,534 @@ async function safeExtractTarGz(tarPath, destDir, expectedName) {
16063
16388
  return resolveMember(destDir, expectedName);
16064
16389
  }
16065
16390
 
16066
- // ../argent-tools-client/src/file-inputs.ts
16067
- var FILE_INPUT_MARKER = "__argentFileInput";
16068
- var CLIENT_FILE_MARKER = "__argentClientFile";
16069
- var MAX_CONTENT_BYTES = 32 * 1024 * 1024;
16070
- function interpolatePath(template, args) {
16071
- let missing = false;
16072
- const out = template.replace(/\$\{([A-Za-z0-9_]+)\}/g, (_m, name) => {
16073
- const v = args[name];
16074
- if (typeof v !== "string" || v.length === 0) {
16075
- missing = true;
16076
- return "";
16077
- }
16078
- return v;
16079
- });
16080
- return missing ? null : out;
16081
- }
16082
- async function tarball(sourcePath) {
16083
- const tarPath = path3.join(tmpdir(), `argent-upload-${randomUUID()}.tar.gz`);
16084
- await createTarGzFile(sourcePath, tarPath);
16085
- return tarPath;
16086
- }
16087
- function sha256File(filePath) {
16088
- return new Promise((resolve7, reject) => {
16089
- const hash = createHash2("sha256");
16090
- createReadStream(filePath).on("data", (chunk) => hash.update(chunk)).on("end", () => resolve7(hash.digest("hex"))).on("error", reject);
16091
- });
16092
- }
16093
- async function uploadTar(tarPath, endpoint) {
16094
- const init = {
16095
- method: "POST",
16096
- headers: {
16097
- "content-type": "application/gzip",
16098
- ...endpoint.token ? { Authorization: `Bearer ${endpoint.token}` } : {}
16099
- },
16100
- body: createReadStream(tarPath),
16101
- duplex: "half"
16102
- };
16103
- const res = await fetch(`${endpoint.url}/upload`, init);
16104
- if (!res.ok) {
16105
- throw new Error(`Upload to ${endpoint.url}/upload failed: ${res.status} ${res.statusText}`);
16106
- }
16107
- const json = await res.json();
16108
- return json.uploadId;
16109
- }
16110
- async function prepareFileInputs(specs, args, opts) {
16111
- if (!specs || specs.length === 0 || typeof args !== "object" || args === null) {
16112
- return args;
16113
- }
16114
- const record2 = args;
16115
- let out = null;
16116
- for (const spec of specs) {
16117
- if (spec.target in record2 && typeof record2[spec.target] !== "string") continue;
16118
- const filePath = interpolatePath(spec.path, record2);
16119
- if (filePath === null) continue;
16120
- if (spec.target in record2 && record2[spec.target] !== filePath) continue;
16121
- const wire = { [FILE_INPUT_MARKER]: true, path: filePath };
16122
- if (spec.kind === "file") {
16123
- try {
16124
- const st = await stat(filePath);
16125
- if (st.isFile()) {
16126
- wire.size = st.size;
16127
- wire.mtimeMs = st.mtimeMs;
16128
- if (opts.includeContent && st.size <= MAX_CONTENT_BYTES) {
16129
- wire.content = (await readFile3(filePath)).toString("base64");
16130
- } else if (opts.includeContent) {
16131
- wire.contentOmitted = "size-limit";
16132
- }
16133
- }
16134
- } catch {
16135
- }
16136
- }
16137
- if (spec.kind === "tar-upload") {
16138
- const st = await stat(filePath).catch(() => null);
16139
- if (st) {
16140
- wire.size = st.size;
16141
- wire.mtimeMs = st.mtimeMs;
16142
- }
16143
- if (opts.uploadEndpoint && st) {
16144
- let tarPath = null;
16145
- try {
16146
- process.stderr.write(
16147
- `Uploading ${path3.basename(filePath)} to the remote tool-server...
16148
- `
16149
- );
16150
- tarPath = await tarball(filePath);
16151
- wire.contentHash = await sha256File(tarPath);
16152
- wire.uploadId = await uploadTar(tarPath, opts.uploadEndpoint);
16153
- } finally {
16154
- if (tarPath) await rm2(tarPath, { force: true }).catch(() => {
16155
- });
16156
- }
16157
- }
16158
- }
16159
- out = out ?? { ...record2 };
16160
- out[spec.target] = wire;
16161
- }
16162
- return out ?? args;
16163
- }
16164
- function isAllowedClientFilePath(p) {
16165
- if (!path3.isAbsolute(p)) return false;
16166
- const segments = p.split(/[\\/]+/);
16167
- if (segments.includes("..")) return false;
16168
- const file = segments[segments.length - 1] ?? "";
16169
- if (!/^[A-Za-z0-9_-]+\.yaml$/.test(file)) return false;
16170
- return segments[segments.length - 3] === ".argent" && segments[segments.length - 2] === "flows";
16171
- }
16172
- function isClientFileDirective(value) {
16173
- return !!value && typeof value === "object" && value[CLIENT_FILE_MARKER] === true && typeof value.path === "string" && typeof value.content === "string";
16174
- }
16175
- async function applyClientFileDirectives(result) {
16176
- const written = [];
16177
- async function walk(value) {
16178
- if (isClientFileDirective(value)) {
16179
- if (!isAllowedClientFilePath(value.path)) return null;
16180
- try {
16181
- await mkdir3(path3.dirname(value.path), { recursive: true });
16182
- await writeFile3(value.path, value.content, "utf8");
16183
- written.push(value.path);
16184
- return value.path;
16185
- } catch {
16186
- return null;
16187
- }
16188
- }
16189
- if (Array.isArray(value)) {
16190
- return Promise.all(value.map(walk));
16191
- }
16192
- if (value && typeof value === "object") {
16193
- const out = {};
16194
- for (const [k, v] of Object.entries(value)) {
16195
- out[k] = await walk(v);
16196
- }
16197
- return out;
16198
- }
16199
- return value;
16200
- }
16201
- const rewritten = await walk(result);
16202
- return { result: rewritten, written };
16203
- }
16391
+ // ../registry/src/artifacts.ts
16392
+ import { stat } from "node:fs/promises";
16393
+ import { randomUUID } from "node:crypto";
16394
+ import { basename as basename2, extname } from "node:path";
16204
16395
 
16205
- // ../argent-tools-client/src/artifacts.ts
16206
- import { copyFile, mkdir as mkdir4, readFile as readFile4, realpath, rm as rm3, stat as stat2, writeFile as writeFile4 } from "node:fs/promises";
16207
- import { constants as fsConstants } from "node:fs";
16208
- import { tmpdir as tmpdir2 } from "node:os";
16209
- import { basename as basename3, dirname as dirname5, extname, isAbsolute as isAbsolute3, join as join8, normalize, resolve as resolve5, sep as sep2 } from "node:path";
16210
- import { createHash as createHash3 } from "node:crypto";
16396
+ // ../registry/src/file-inputs.ts
16397
+ var FLOW_NAME_CHARSET = "[A-Za-z0-9_-]+";
16398
+ var FLOW_NAME_PATTERN = new RegExp(`^${FLOW_NAME_CHARSET}$`);
16399
+ var FLOW_FILE_NAME_PATTERN = new RegExp(`^${FLOW_NAME_CHARSET}\\.yaml$`);
16211
16400
 
16212
- // ../configuration-core/src/flags.ts
16213
- import * as fs2 from "node:fs";
16214
- import * as path4 from "node:path";
16215
- import { homedir as homedir3 } from "node:os";
16216
- var PROJECT_MARKERS = [".argent", ".git", "package.json"];
16217
- function findProjectRoot(startDir) {
16218
- let current = path4.resolve(startDir);
16219
- while (true) {
16220
- for (const marker of PROJECT_MARKERS) {
16221
- if (fs2.existsSync(path4.join(current, marker))) return current;
16222
- }
16223
- const parent = path4.dirname(current);
16224
- if (parent === current) return null;
16225
- current = parent;
16226
- }
16227
- }
16228
- function resolveProjectRoot(startDir) {
16229
- return findProjectRoot(startDir) ?? path4.resolve(startDir);
16230
- }
16231
- function getFlagsPath(scope, options = {}) {
16232
- const home = options.homeDir ?? homedir3();
16233
- if (scope === "global") {
16234
- return path4.join(home, ".argent", "flags.json");
16235
- }
16236
- const cwd = options.cwd ?? process.cwd();
16237
- return path4.join(resolveProjectRoot(cwd), ".argent", "flags.json");
16238
- }
16239
- function readFlagsFile(filePath) {
16240
- let raw;
16241
- try {
16242
- raw = fs2.readFileSync(filePath, "utf8");
16243
- } catch {
16244
- return {};
16245
- }
16246
- let parsed;
16247
- try {
16248
- parsed = JSON.parse(raw);
16249
- } catch {
16250
- return {};
16251
- }
16252
- if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return {};
16253
- const flags = parsed.flags;
16254
- if (!flags || typeof flags !== "object" || Array.isArray(flags)) return {};
16255
- const out = {};
16256
- for (const [k, v] of Object.entries(flags)) {
16257
- if (typeof v === "boolean") out[k] = v;
16258
- }
16259
- return out;
16260
- }
16261
- function readFlags(scope, options = {}) {
16262
- return readFlagsFile(getFlagsPath(scope, options));
16263
- }
16264
- function isFlagEnabled(name, options = {}) {
16265
- const projectFlags = readFlags("project", options);
16266
- if (Object.hasOwn(projectFlags, name)) return projectFlags[name];
16267
- const globalFlags = readFlags("global", options);
16268
- if (Object.hasOwn(globalFlags, name)) return globalFlags[name];
16269
- return options.default ?? false;
16270
- }
16401
+ // ../registry/src/failure-codes.ts
16402
+ var FAILURE_CODES = {
16403
+ ARGENT_UNCLASSIFIED_FAILURE: "ARGENT_UNCLASSIFIED_FAILURE",
16404
+ REGISTRY_SERVICE_NOT_FOUND: "REGISTRY_SERVICE_NOT_FOUND",
16405
+ REGISTRY_SERVICE_INITIALIZATION_FAILED: "REGISTRY_SERVICE_INITIALIZATION_FAILED",
16406
+ REGISTRY_TOOL_NOT_FOUND: "REGISTRY_TOOL_NOT_FOUND",
16407
+ REGISTRY_TOOL_EXECUTION_FAILED: "REGISTRY_TOOL_EXECUTION_FAILED",
16408
+ REGISTRY_TOOL_FAILURE_UNCLASSIFIED: "REGISTRY_TOOL_FAILURE_UNCLASSIFIED",
16409
+ HTTP_TOOL_NOT_FOUND: "HTTP_TOOL_NOT_FOUND",
16410
+ HTTP_ZOD_VALIDATION_FAILED: "HTTP_ZOD_VALIDATION_FAILED",
16411
+ HTTP_CAPABILITY_UNSUPPORTED_OPERATION: "HTTP_CAPABILITY_UNSUPPORTED_OPERATION",
16412
+ HTTP_DEVICE_RESOLUTION_FAILED: "HTTP_DEVICE_RESOLUTION_FAILED",
16413
+ HTTP_DEPENDENCY_PREFLIGHT_MISSING: "HTTP_DEPENDENCY_PREFLIGHT_MISSING",
16414
+ CLI_RUN_TOOL_NOT_FOUND: "CLI_RUN_TOOL_NOT_FOUND",
16415
+ CLI_RUN_FLAG_PARSE_FAILED: "CLI_RUN_FLAG_PARSE_FAILED",
16416
+ CLI_RUN_ARGS_NOT_OBJECT: "CLI_RUN_ARGS_NOT_OBJECT",
16417
+ CLI_RUN_ARGS_JSON_INVALID: "CLI_RUN_ARGS_JSON_INVALID",
16418
+ CLI_RUN_INPUT_VALIDATION_FAILED: "CLI_RUN_INPUT_VALIDATION_FAILED",
16419
+ CLI_RUN_TOOL_CALL_FAILED: "CLI_RUN_TOOL_CALL_FAILED",
16420
+ CLI_RUN_SAVE_IMAGE_FAILED: "CLI_RUN_SAVE_IMAGE_FAILED",
16421
+ TOOL_CAPABILITY_UNSUPPORTED_OPERATION: "TOOL_CAPABILITY_UNSUPPORTED_OPERATION",
16422
+ TOOL_PLATFORM_NOT_IMPLEMENTED: "TOOL_PLATFORM_NOT_IMPLEMENTED",
16423
+ TOOL_DEPENDENCY_MISSING: "TOOL_DEPENDENCY_MISSING",
16424
+ TOOL_INPUT_INVALID: "TOOL_INPUT_INVALID",
16425
+ TOOLSERVER_UNHANDLED_REJECTION: "TOOLSERVER_UNHANDLED_REJECTION",
16426
+ TOOLSERVER_UNCAUGHT_EXCEPTION: "TOOLSERVER_UNCAUGHT_EXCEPTION",
16427
+ INSTALL_GLOBAL_PACKAGE_FAILED: "INSTALL_GLOBAL_PACKAGE_FAILED",
16428
+ INSTALL_LOCAL_PACKAGE_FAILED: "INSTALL_LOCAL_PACKAGE_FAILED",
16429
+ INSTALL_LOCAL_PRECONDITION_FAILED: "INSTALL_LOCAL_PRECONDITION_FAILED",
16430
+ INSTALL_MODE_FLAG_CONFLICT: "INSTALL_MODE_FLAG_CONFLICT",
16431
+ INSTALL_FROM_TAR_PACKAGE_FAILED: "INSTALL_FROM_TAR_PACKAGE_FAILED",
16432
+ INSTALL_INIT_TRIGGERED_UPDATE_FAILED: "INSTALL_INIT_TRIGGERED_UPDATE_FAILED",
16433
+ INSTALL_SKILLS_REFRESH_FAILED: "INSTALL_SKILLS_REFRESH_FAILED",
16434
+ INSTALL_UNCLASSIFIED_FAILED: "INSTALL_UNCLASSIFIED_FAILED",
16435
+ UPDATE_INSTALLED_VERSION_DETECT_FAILED: "UPDATE_INSTALLED_VERSION_DETECT_FAILED",
16436
+ UPDATE_INVALID_TARGET_VERSION: "UPDATE_INVALID_TARGET_VERSION",
16437
+ UPDATE_REGISTRY_CHECK_FAILED: "UPDATE_REGISTRY_CHECK_FAILED",
16438
+ UPDATE_TOOLSERVER_STOP_FAILED: "UPDATE_TOOLSERVER_STOP_FAILED",
16439
+ UPDATE_PACKAGE_ACTION_FAILED: "UPDATE_PACKAGE_ACTION_FAILED",
16440
+ UPDATE_UNCLASSIFIED_FAILED: "UPDATE_UNCLASSIFIED_FAILED",
16441
+ UNINSTALL_TOOLSERVER_STOP_FAILED: "UNINSTALL_TOOLSERVER_STOP_FAILED",
16442
+ UNINSTALL_PACKAGE_ACTION_FAILED: "UNINSTALL_PACKAGE_ACTION_FAILED",
16443
+ UNINSTALL_UNCLASSIFIED_FAILED: "UNINSTALL_UNCLASSIFIED_FAILED",
16444
+ VEGA_CLI_COMMAND_FAILED: "VEGA_CLI_COMMAND_FAILED",
16445
+ VEGA_INPUT_UNAVAILABLE: "VEGA_INPUT_UNAVAILABLE",
16446
+ VEGA_DEVICE_NOT_FOUND: "VEGA_DEVICE_NOT_FOUND",
16447
+ VEGA_DEVICE_NOT_REGISTERED: "VEGA_DEVICE_NOT_REGISTERED",
16448
+ VEGA_MULTIPLE_DEVICES: "VEGA_MULTIPLE_DEVICES",
16449
+ VEGA_BOOT_TIMEOUT: "VEGA_BOOT_TIMEOUT",
16450
+ VEGA_IMAGE_NOT_FOUND: "VEGA_IMAGE_NOT_FOUND",
16451
+ VEGA_ALREADY_RUNNING: "VEGA_ALREADY_RUNNING",
16452
+ VEGA_SCREENSHOT_FAILED: "VEGA_SCREENSHOT_FAILED",
16453
+ VEGA_TEXT_INVALID: "VEGA_TEXT_INVALID",
16454
+ ANDROID_ADB_NOT_FOUND: "ANDROID_ADB_NOT_FOUND",
16455
+ ANDROID_EMULATOR_NOT_FOUND: "ANDROID_EMULATOR_NOT_FOUND",
16456
+ ANDROID_ADB_COMMAND_FAILED: "ANDROID_ADB_COMMAND_FAILED",
16457
+ ANDROID_ADB_BOOT_TERMINAL_STATE: "ANDROID_ADB_BOOT_TERMINAL_STATE",
16458
+ ANDROID_ADB_BOOT_TIMEOUT: "ANDROID_ADB_BOOT_TIMEOUT",
16459
+ SIMULATOR_NETWORK_TIMEOUT: "SIMULATOR_NETWORK_TIMEOUT",
16460
+ SIMULATOR_NETWORK_CONNECTION_REFUSED: "SIMULATOR_NETWORK_CONNECTION_REFUSED",
16461
+ SIMULATOR_NETWORK_CONNECTION_RESET: "SIMULATOR_NETWORK_CONNECTION_RESET",
16462
+ SIMULATOR_NETWORK_ERROR: "SIMULATOR_NETWORK_ERROR",
16463
+ SIMULATOR_NON_JSON_RESPONSE: "SIMULATOR_NON_JSON_RESPONSE",
16464
+ SIMULATOR_HTTP_ERROR_RESPONSE: "SIMULATOR_HTTP_ERROR_RESPONSE",
16465
+ SIMULATOR_MISSING_RESPONSE_FIELDS: "SIMULATOR_MISSING_RESPONSE_FIELDS",
16466
+ SIMULATOR_SCREENSHOT_FAILED: "SIMULATOR_SCREENSHOT_FAILED",
16467
+ SIMULATOR_SERVER_FACTORY_OPTIONS_MISSING: "SIMULATOR_SERVER_FACTORY_OPTIONS_MISSING",
16468
+ SIMULATOR_SERVER_DEVICE_ID_INVALID: "SIMULATOR_SERVER_DEVICE_ID_INVALID",
16469
+ SIMULATOR_SERVER_READY_EXITED: "SIMULATOR_SERVER_READY_EXITED",
16470
+ SIMULATOR_SERVER_READY_TIMEOUT: "SIMULATOR_SERVER_READY_TIMEOUT",
16471
+ SIMULATOR_SERVER_PROCESS_ERROR: "SIMULATOR_SERVER_PROCESS_ERROR",
16472
+ SIMULATOR_SERVER_TERMINATED: "SIMULATOR_SERVER_TERMINATED",
16473
+ AX_QUERY_TIMEOUT: "AX_QUERY_TIMEOUT",
16474
+ AX_DAEMON_READY_TIMEOUT: "AX_DAEMON_READY_TIMEOUT",
16475
+ AX_DAEMON_EXITED_BEFORE_READY: "AX_DAEMON_EXITED_BEFORE_READY",
16476
+ AX_DAEMON_PROCESS_ERROR: "AX_DAEMON_PROCESS_ERROR",
16477
+ AX_FACTORY_OPTIONS_MISSING: "AX_FACTORY_OPTIONS_MISSING",
16478
+ AX_WRONG_PLATFORM: "AX_WRONG_PLATFORM",
16479
+ AX_DEVICE_ID_INVALID: "AX_DEVICE_ID_INVALID",
16480
+ AX_DESCRIBE_ERROR: "AX_DESCRIBE_ERROR",
16481
+ AX_QUERY_FAILED: "AX_QUERY_FAILED",
16482
+ ANDROID_LAUNCH_ACTIVITY_RESOLVE_FAILED: "ANDROID_LAUNCH_ACTIVITY_RESOLVE_FAILED",
16483
+ ANDROID_LAUNCH_AM_START_FAILED: "ANDROID_LAUNCH_AM_START_FAILED",
16484
+ ANDROID_OPEN_URL_FAILED: "ANDROID_OPEN_URL_FAILED",
16485
+ ANDROID_REINSTALL_INSTALL_FAILED: "ANDROID_REINSTALL_INSTALL_FAILED",
16486
+ ANDROID_RESTART_FAILED: "ANDROID_RESTART_FAILED",
16487
+ ANDROID_SETTINGS_PERMISSION_FAILED: "ANDROID_SETTINGS_PERMISSION_FAILED",
16488
+ IOS_LAUNCH_SIMCTL_FAILED: "IOS_LAUNCH_SIMCTL_FAILED",
16489
+ IOS_OPEN_URL_FAILED: "IOS_OPEN_URL_FAILED",
16490
+ IOS_REINSTALL_INSTALL_FAILED: "IOS_REINSTALL_INSTALL_FAILED",
16491
+ IOS_RESTART_LAUNCH_FAILED: "IOS_RESTART_LAUNCH_FAILED",
16492
+ IOS_SETTINGS_PERMISSION_FAILED: "IOS_SETTINGS_PERMISSION_FAILED",
16493
+ SETTINGS_PERMISSION_UNSUPPORTED: "SETTINGS_PERMISSION_UNSUPPORTED",
16494
+ NATIVE_DEVTOOLS_DESCRIBE_ERROR: "NATIVE_DEVTOOLS_DESCRIBE_ERROR",
16495
+ NATIVE_DEVTOOLS_VIEW_AT_POINT_ERROR: "NATIVE_DEVTOOLS_VIEW_AT_POINT_ERROR",
16496
+ NATIVE_DEVTOOLS_USER_INTERACTABLE_VIEW_AT_POINT_ERROR: "NATIVE_DEVTOOLS_USER_INTERACTABLE_VIEW_AT_POINT_ERROR",
16497
+ NATIVE_DEVTOOLS_FIND_VIEWS_ERROR: "NATIVE_DEVTOOLS_FIND_VIEWS_ERROR",
16498
+ NATIVE_DEVTOOLS_FACTORY_OPTIONS_MISSING: "NATIVE_DEVTOOLS_FACTORY_OPTIONS_MISSING",
16499
+ NATIVE_DEVTOOLS_WRONG_PLATFORM: "NATIVE_DEVTOOLS_WRONG_PLATFORM",
16500
+ NATIVE_DEVTOOLS_NOT_INJECTABLE: "NATIVE_DEVTOOLS_NOT_INJECTABLE",
16501
+ NATIVE_DEVTOOLS_NOT_CONNECTED: "NATIVE_DEVTOOLS_NOT_CONNECTED",
16502
+ NATIVE_DEVTOOLS_RPC_TIMEOUT: "NATIVE_DEVTOOLS_RPC_TIMEOUT",
16503
+ NATIVE_DEVTOOLS_RPC_ERROR: "NATIVE_DEVTOOLS_RPC_ERROR",
16504
+ NATIVE_DEVTOOLS_SERVICE_DISPOSED: "NATIVE_DEVTOOLS_SERVICE_DISPOSED",
16505
+ NATIVE_DEVTOOLS_SOCKET_BIND_FAILED: "NATIVE_DEVTOOLS_SOCKET_BIND_FAILED",
16506
+ NATIVE_TARGET_NO_CONNECTED_APPS: "NATIVE_TARGET_NO_CONNECTED_APPS",
16507
+ NATIVE_TARGET_SINGLE_APP_NOT_FOREGROUND: "NATIVE_TARGET_SINGLE_APP_NOT_FOREGROUND",
16508
+ NATIVE_TARGET_MULTIPLE_APPS_AMBIGUOUS: "NATIVE_TARGET_MULTIPLE_APPS_AMBIGUOUS",
16509
+ ANDROID_DEVTOOLS_ADB_NOT_FOUND: "ANDROID_DEVTOOLS_ADB_NOT_FOUND",
16510
+ ANDROID_DEVTOOLS_ADB_FORWARD_UNEXPECTED: "ANDROID_DEVTOOLS_ADB_FORWARD_UNEXPECTED",
16511
+ ANDROID_DEVTOOLS_HELPER_EXITED_BEFORE_READY: "ANDROID_DEVTOOLS_HELPER_EXITED_BEFORE_READY",
16512
+ ANDROID_DEVTOOLS_HELPER_PROCESS_ERROR: "ANDROID_DEVTOOLS_HELPER_PROCESS_ERROR",
16513
+ ANDROID_DEVTOOLS_HELPER_READY_TIMEOUT: "ANDROID_DEVTOOLS_HELPER_READY_TIMEOUT",
16514
+ ANDROID_DEVTOOLS_FACTORY_OPTIONS_MISSING: "ANDROID_DEVTOOLS_FACTORY_OPTIONS_MISSING",
16515
+ ANDROID_DEVTOOLS_WRONG_PLATFORM: "ANDROID_DEVTOOLS_WRONG_PLATFORM",
16516
+ ANDROID_DEVTOOLS_DEVICE_ID_INVALID: "ANDROID_DEVTOOLS_DEVICE_ID_INVALID",
16517
+ ANDROID_DEVTOOLS_HELPER_TERMINATED: "ANDROID_DEVTOOLS_HELPER_TERMINATED",
16518
+ ANDROID_DEVTOOLS_RPC_CLIENT_CLOSED: "ANDROID_DEVTOOLS_RPC_CLIENT_CLOSED",
16519
+ ANDROID_DEVTOOLS_RPC_ERROR: "ANDROID_DEVTOOLS_RPC_ERROR",
16520
+ ANDROID_DEVTOOLS_RPC_TIMEOUT: "ANDROID_DEVTOOLS_RPC_TIMEOUT",
16521
+ ANDROID_DEVTOOLS_SOCKET_CLOSED: "ANDROID_DEVTOOLS_SOCKET_CLOSED",
16522
+ ANDROID_SCREEN_SIZE_PARSE_FAILED: "ANDROID_SCREEN_SIZE_PARSE_FAILED",
16523
+ ANDROID_SCREEN_SIZE_NON_POSITIVE: "ANDROID_SCREEN_SIZE_NON_POSITIVE",
16524
+ ANDROID_UIAUTOMATOR_PARSE_FAILED: "ANDROID_UIAUTOMATOR_PARSE_FAILED",
16525
+ ANDROID_UIAUTOMATOR_CAPTURE_FAILED: "ANDROID_UIAUTOMATOR_CAPTURE_FAILED",
16526
+ DEBUGGER_METRO_NOT_RUNNING: "DEBUGGER_METRO_NOT_RUNNING",
16527
+ DEBUGGER_METRO_NO_TARGETS: "DEBUGGER_METRO_NO_TARGETS",
16528
+ DEBUGGER_CDP_RUNTIME_EXCEPTION: "DEBUGGER_CDP_RUNTIME_EXCEPTION",
16529
+ DEBUGGER_CDP_BINDING_TIMEOUT: "DEBUGGER_CDP_BINDING_TIMEOUT",
16530
+ DEBUGGER_CDP_BINDING_UNAVAILABLE: "DEBUGGER_CDP_BINDING_UNAVAILABLE",
16531
+ DEBUGGER_CDP_PROTOCOL_ERROR: "DEBUGGER_CDP_PROTOCOL_ERROR",
16532
+ DEBUGGER_RELOAD_FAILED: "DEBUGGER_RELOAD_FAILED",
16533
+ JS_RUNTIME_CONSOLE_SERVER_BIND_FAILED: "JS_RUNTIME_CONSOLE_SERVER_BIND_FAILED",
16534
+ JS_RUNTIME_PAYLOAD_INVALID: "JS_RUNTIME_PAYLOAD_INVALID",
16535
+ JS_RUNTIME_PAYLOAD_DEVICE_MISSING: "JS_RUNTIME_PAYLOAD_DEVICE_MISSING",
16536
+ JS_RUNTIME_PAYLOAD_PORT_INVALID: "JS_RUNTIME_PAYLOAD_PORT_INVALID",
16537
+ JS_RUNTIME_CDP_DISCONNECTED: "JS_RUNTIME_CDP_DISCONNECTED",
16538
+ NETWORK_INSPECTOR_CDP_DISCONNECTED: "NETWORK_INSPECTOR_CDP_DISCONNECTED",
16539
+ REACT_PROFILER_NO_ACTIVE_SESSION: "REACT_PROFILER_NO_ACTIVE_SESSION",
16540
+ REACT_PROFILER_CDP_CONNECTION_LOST: "REACT_PROFILER_CDP_CONNECTION_LOST",
16541
+ REACT_PROFILER_NO_CPU_PROFILE: "REACT_PROFILER_NO_CPU_PROFILE",
16542
+ REACT_PROFILER_RUNTIME_EXCEPTION: "REACT_PROFILER_RUNTIME_EXCEPTION",
16543
+ REACT_PROFILER_NO_RUNTIME_DATA: "REACT_PROFILER_NO_RUNTIME_DATA",
16544
+ REACT_PROFILER_SESSION_PAYLOAD_INVALID: "REACT_PROFILER_SESSION_PAYLOAD_INVALID",
16545
+ REACT_PROFILER_SESSION_PAYLOAD_DEVICE_MISSING: "REACT_PROFILER_SESSION_PAYLOAD_DEVICE_MISSING",
16546
+ REACT_PROFILER_SESSION_CDP_DISCONNECTED: "REACT_PROFILER_SESSION_CDP_DISCONNECTED",
16547
+ REACT_PROFILER_CDP_NOT_CONNECTED: "REACT_PROFILER_CDP_NOT_CONNECTED",
16548
+ REACT_PROFILER_STATE_READ_FAILED: "REACT_PROFILER_STATE_READ_FAILED",
16549
+ REACT_PROFILER_DEVTOOLS_HOOK_MISSING: "REACT_PROFILER_DEVTOOLS_HOOK_MISSING",
16550
+ REACT_PROFILER_DEVTOOLS_BACKEND_ATTACH_FAILED: "REACT_PROFILER_DEVTOOLS_BACKEND_ATTACH_FAILED",
16551
+ REACT_PROFILER_DEVTOOLS_BACKEND_BOOTSTRAP_FAILED: "REACT_PROFILER_DEVTOOLS_BACKEND_BOOTSTRAP_FAILED",
16552
+ REACT_PROFILER_DEVTOOLS_RENDERER_MISSING: "REACT_PROFILER_DEVTOOLS_RENDERER_MISSING",
16553
+ REACT_PROFILER_START_FAILED: "REACT_PROFILER_START_FAILED",
16554
+ REACT_PROFILER_START_VERIFY_FAILED: "REACT_PROFILER_START_VERIFY_FAILED",
16555
+ REACT_PROFILER_HOOK_ERROR: "REACT_PROFILER_HOOK_ERROR",
16556
+ REACT_PROFILER_ANALYZE_NO_DATA: "REACT_PROFILER_ANALYZE_NO_DATA",
16557
+ NATIVE_PROFILER_FACTORY_OPTIONS_MISSING: "NATIVE_PROFILER_FACTORY_OPTIONS_MISSING",
16558
+ NATIVE_PROFILER_WRONG_PLATFORM: "NATIVE_PROFILER_WRONG_PLATFORM",
16559
+ NATIVE_PROFILER_APP_PROCESS_LIST_FAILED: "NATIVE_PROFILER_APP_PROCESS_LIST_FAILED",
16560
+ NATIVE_PROFILER_APP_LIST_FAILED: "NATIVE_PROFILER_APP_LIST_FAILED",
16561
+ NATIVE_PROFILER_NO_RUNNING_APPS: "NATIVE_PROFILER_NO_RUNNING_APPS",
16562
+ NATIVE_PROFILER_NO_RUNNING_USER_APPS: "NATIVE_PROFILER_NO_RUNNING_USER_APPS",
16563
+ NATIVE_PROFILER_MULTIPLE_RUNNING_USER_APPS: "NATIVE_PROFILER_MULTIPLE_RUNNING_USER_APPS",
16564
+ NATIVE_PROFILER_MALLOC_DEGRADED_XCODE: "NATIVE_PROFILER_MALLOC_DEGRADED_XCODE",
16565
+ NATIVE_PROFILER_MALLOC_STRATEGY_OVERRIDE: "NATIVE_PROFILER_MALLOC_STRATEGY_OVERRIDE",
16566
+ NATIVE_PROFILER_APP_BUNDLE_PATH_FAILED: "NATIVE_PROFILER_APP_BUNDLE_PATH_FAILED",
16567
+ NATIVE_PROFILER_LAUNCH_APP_NOT_FOUND: "NATIVE_PROFILER_LAUNCH_APP_NOT_FOUND",
16568
+ NATIVE_PROFILER_LAUNCH_APP_AMBIGUOUS: "NATIVE_PROFILER_LAUNCH_APP_AMBIGUOUS",
16569
+ NATIVE_PROFILER_SESSION_ALREADY_RUNNING: "NATIVE_PROFILER_SESSION_ALREADY_RUNNING",
16570
+ NATIVE_PROFILER_XCTRACE_NO_PID: "NATIVE_PROFILER_XCTRACE_NO_PID",
16571
+ NATIVE_PROFILER_XCTRACE_PROCESS_NOT_FOUND: "NATIVE_PROFILER_XCTRACE_PROCESS_NOT_FOUND",
16572
+ NATIVE_PROFILER_XCTRACE_READY_EXITED: "NATIVE_PROFILER_XCTRACE_READY_EXITED",
16573
+ NATIVE_PROFILER_XCTRACE_PROCESS_ERROR: "NATIVE_PROFILER_XCTRACE_PROCESS_ERROR",
16574
+ NATIVE_PROFILER_XCTRACE_READY_TIMEOUT: "NATIVE_PROFILER_XCTRACE_READY_TIMEOUT",
16575
+ NATIVE_PROFILER_TRACE_TEMPLATE_MISSING: "NATIVE_PROFILER_TRACE_TEMPLATE_MISSING",
16576
+ NATIVE_PROFILER_NO_ACTIVE_SESSION: "NATIVE_PROFILER_NO_ACTIVE_SESSION",
16577
+ NATIVE_PROFILER_APP_PROCESS_NOT_FOUND: "NATIVE_PROFILER_APP_PROCESS_NOT_FOUND",
16578
+ NATIVE_PROFILER_NO_EXPORTED_TRACE: "NATIVE_PROFILER_NO_EXPORTED_TRACE",
16579
+ // Android perfetto start-failure modes — mirror the iOS xctrace set so a
16580
+ // failed recording start is classified rather than falling through to the
16581
+ // generic tool-execution bucket.
16582
+ NATIVE_PROFILER_PERFETTO_PROCESS_ERROR: "NATIVE_PROFILER_PERFETTO_PROCESS_ERROR",
16583
+ NATIVE_PROFILER_PERFETTO_READY_TIMEOUT: "NATIVE_PROFILER_PERFETTO_READY_TIMEOUT",
16584
+ NATIVE_PROFILER_PERFETTO_READY_EXITED: "NATIVE_PROFILER_PERFETTO_READY_EXITED",
16585
+ // screen-recording-start / screen-recording-stop. One capture path for every
16586
+ // platform (simulator-server's frame stream into ffmpeg), so the stages name
16587
+ // the step that failed rather than the device family.
16588
+ SCREEN_RECORDING_FACTORY_OPTIONS_MISSING: "SCREEN_RECORDING_FACTORY_OPTIONS_MISSING",
16589
+ SCREEN_RECORDING_WRONG_PLATFORM: "SCREEN_RECORDING_WRONG_PLATFORM",
16590
+ SCREEN_RECORDING_ALREADY_ACTIVE: "SCREEN_RECORDING_ALREADY_ACTIVE",
16591
+ SCREEN_RECORDING_NO_ACTIVE_SESSION: "SCREEN_RECORDING_NO_ACTIVE_SESSION",
16592
+ SCREEN_RECORDING_STOP_IN_PROGRESS: "SCREEN_RECORDING_STOP_IN_PROGRESS",
16593
+ SCREEN_RECORDING_START_EXITED: "SCREEN_RECORDING_START_EXITED",
16594
+ SCREEN_RECORDING_START_TIMEOUT: "SCREEN_RECORDING_START_TIMEOUT",
16595
+ SCREEN_RECORDING_PROCESS_ERROR: "SCREEN_RECORDING_PROCESS_ERROR",
16596
+ SCREEN_RECORDING_OUTPUT_MISSING: "SCREEN_RECORDING_OUTPUT_MISSING",
16597
+ SCREEN_RECORDING_SERVER_SHUTTING_DOWN: "SCREEN_RECORDING_SERVER_SHUTTING_DOWN",
16598
+ SCREEN_RECORDING_STREAM_UNAVAILABLE: "SCREEN_RECORDING_STREAM_UNAVAILABLE",
16599
+ SCREEN_RECORDING_FFMPEG_NOT_FOUND: "SCREEN_RECORDING_FFMPEG_NOT_FOUND",
16600
+ FLOW_PROJECT_ROOT_REQUIRED: "FLOW_PROJECT_ROOT_REQUIRED",
16601
+ FLOW_PROJECT_ROOT_INVALID: "FLOW_PROJECT_ROOT_INVALID",
16602
+ FLOW_NAME_INVALID: "FLOW_NAME_INVALID",
16603
+ FLOW_NO_ACTIVE_RECORDING: "FLOW_NO_ACTIVE_RECORDING",
16604
+ FLOW_FILE_INVALID: "FLOW_FILE_INVALID",
16605
+ FLOW_ENTRY_UNRECOGNIZED: "FLOW_ENTRY_UNRECOGNIZED",
16606
+ FLOW_E2E_HAS_PREREQUISITE: "FLOW_E2E_HAS_PREREQUISITE",
16607
+ FLOW_DEVICE_RESOLUTION: "FLOW_DEVICE_RESOLUTION",
16608
+ PROFILER_QUERY_MODE_INVALID: "PROFILER_QUERY_MODE_INVALID",
16609
+ PROFILER_QUERY_REQUIRED_PARAM_MISSING: "PROFILER_QUERY_REQUIRED_PARAM_MISSING",
16610
+ PROFILER_DATA_NOT_LOADED: "PROFILER_DATA_NOT_LOADED",
16611
+ PROFILER_NATIVE_TRACE_MISSING: "PROFILER_NATIVE_TRACE_MISSING",
16612
+ PROFILER_NATIVE_METADATA_MISSING: "PROFILER_NATIVE_METADATA_MISSING",
16613
+ PROFILER_NATIVE_METADATA_INVALID: "PROFILER_NATIVE_METADATA_INVALID",
16614
+ CHROMIUM_CDP_UNREACHABLE: "CHROMIUM_CDP_UNREACHABLE",
16615
+ CHROMIUM_CDP_NO_PAGE_TARGET: "CHROMIUM_CDP_NO_PAGE_TARGET",
16616
+ CHROMIUM_CDP_INVALID_RESPONSE: "CHROMIUM_CDP_INVALID_RESPONSE",
16617
+ CHROMIUM_DEVICE_ID_INVALID: "CHROMIUM_DEVICE_ID_INVALID",
16618
+ CHROMIUM_PARAM_INVALID: "CHROMIUM_PARAM_INVALID",
16619
+ CHROMIUM_INPUT_INVALID: "CHROMIUM_INPUT_INVALID",
16620
+ CHROMIUM_WINDOW_HIDDEN: "CHROMIUM_WINDOW_HIDDEN",
16621
+ CHROMIUM_VIEWPORT_READ_FAILED: "CHROMIUM_VIEWPORT_READ_FAILED",
16622
+ CHROMIUM_SCREENSHOT_FAILED: "CHROMIUM_SCREENSHOT_FAILED",
16623
+ CHROMIUM_STORAGE_EVAL_FAILED: "CHROMIUM_STORAGE_EVAL_FAILED",
16624
+ CHROMIUM_TAB_NOT_FOUND: "CHROMIUM_TAB_NOT_FOUND",
16625
+ CHROMIUM_TAB_OPEN_FAILED: "CHROMIUM_TAB_OPEN_FAILED",
16626
+ CHROMIUM_DESCRIBE_FAILED: "CHROMIUM_DESCRIBE_FAILED",
16627
+ CHROMIUM_ELECTRON_APP_PATH_INVALID: "CHROMIUM_ELECTRON_APP_PATH_INVALID",
16628
+ CHROMIUM_ELECTRON_SPAWN_FAILED: "CHROMIUM_ELECTRON_SPAWN_FAILED",
16629
+ CHROMIUM_ELECTRON_CDP_TIMEOUT: "CHROMIUM_ELECTRON_CDP_TIMEOUT",
16630
+ CHROMIUM_ELECTRON_EXITED_BEFORE_READY: "CHROMIUM_ELECTRON_EXITED_BEFORE_READY",
16631
+ KEYBOARD_KEY_UNSUPPORTED: "KEYBOARD_KEY_UNSUPPORTED",
16632
+ KEYBOARD_CHARACTER_UNSUPPORTED: "KEYBOARD_CHARACTER_UNSUPPORTED",
16633
+ SECRET_PLACEHOLDER_UNKNOWN: "SECRET_PLACEHOLDER_UNKNOWN",
16634
+ SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
16635
+ BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
16636
+ BOOT_IOS_UNSUPPORTED_HOST: "BOOT_IOS_UNSUPPORTED_HOST",
16637
+ BOOT_ANDROID_NO_AVDS: "BOOT_ANDROID_NO_AVDS",
16638
+ BOOT_ANDROID_AVD_NOT_FOUND: "BOOT_ANDROID_AVD_NOT_FOUND",
16639
+ BOOT_ANDROID_ADB_UNAVAILABLE: "BOOT_ANDROID_ADB_UNAVAILABLE",
16640
+ BOOT_ANDROID_GPU_MODE_INVALID: "BOOT_ANDROID_GPU_MODE_INVALID",
16641
+ BOOT_ANDROID_ADB_REGISTER_TIMEOUT: "BOOT_ANDROID_ADB_REGISTER_TIMEOUT",
16642
+ BOOT_ANDROID_HOT_BOOT_FRAME_UNUSABLE: "BOOT_ANDROID_HOT_BOOT_FRAME_UNUSABLE",
16643
+ BOOT_ANDROID_FIRST_FRAME_TIMEOUT: "BOOT_ANDROID_FIRST_FRAME_TIMEOUT",
16644
+ BOOT_ANDROID_PACKAGE_MANAGER_UNAVAILABLE: "BOOT_ANDROID_PACKAGE_MANAGER_UNAVAILABLE",
16645
+ BOOT_ANDROID_COLD_BOOT_FAILED: "BOOT_ANDROID_COLD_BOOT_FAILED"
16646
+ };
16271
16647
 
16272
- // ../configuration-core/src/paths.ts
16273
- import * as os from "node:os";
16274
- import * as path5 from "node:path";
16275
- function nonEmpty(value) {
16276
- if (value == void 0) return null;
16648
+ // ../registry/src/errors.ts
16649
+ var FAILURE_AREAS = ["cli", "http", "registry", "tool_server", "installer"];
16650
+ var FAILURE_KINDS = [
16651
+ "validation",
16652
+ "not_found",
16653
+ "dependency_missing",
16654
+ "unsupported",
16655
+ "not_implemented",
16656
+ "timeout",
16657
+ "network",
16658
+ "subprocess",
16659
+ "crash",
16660
+ "unknown"
16661
+ ];
16662
+ var FAILURE_COMMANDS = [
16663
+ "adb",
16664
+ "emulator",
16665
+ "vega",
16666
+ "xcrun_simctl",
16667
+ "xctrace",
16668
+ "native_devtools",
16669
+ "android_devtools",
16670
+ "ax_service",
16671
+ "simulator_server",
16672
+ "ffmpeg",
16673
+ "cdp",
16674
+ "electron",
16675
+ "npm",
16676
+ "npx",
16677
+ "unknown"
16678
+ ];
16679
+ var FAILURE_SIGNAL_NAMES = [
16680
+ "SIGABRT",
16681
+ "SIGHUP",
16682
+ "SIGINT",
16683
+ "SIGKILL",
16684
+ "SIGQUIT",
16685
+ "SIGTERM"
16686
+ ];
16687
+ var FAILURE_SPAWN_CODES = ["EACCES", "ENOENT", "EPERM", "ETIMEDOUT"];
16688
+ var NETWORK_FAILURES = [
16689
+ "timeout",
16690
+ "connection_refused",
16691
+ "connection_reset",
16692
+ "invalid_response",
16693
+ "other"
16694
+ ];
16695
+ var FALLBACK_SIGNAL = {
16696
+ error_code: FAILURE_CODES.ARGENT_UNCLASSIFIED_FAILURE,
16697
+ failure_stage: "unclassified",
16698
+ failure_area: "registry",
16699
+ error_kind: "unknown"
16700
+ };
16701
+ var FAILURE_SIGNAL_NAME_SET = new Set(FAILURE_SIGNAL_NAMES);
16702
+ var FAILURE_SPAWN_CODE_SET = new Set(FAILURE_SPAWN_CODES);
16703
+
16704
+ // ../registry/src/registry.ts
16705
+ import { randomUUID as randomUUID2 } from "node:crypto";
16706
+
16707
+ // ../argent-tools-client/src/file-inputs.ts
16708
+ var FILE_INPUT_MARKER2 = "__argentFileInput";
16709
+ var CLIENT_FILE_MARKER2 = "__argentClientFile";
16710
+ var MAX_CONTENT_BYTES = 32 * 1024 * 1024;
16711
+ function interpolatePath(template, args) {
16712
+ let missing = false;
16713
+ const out = template.replace(/\$\{([A-Za-z0-9_]+)\}/g, (_m, name) => {
16714
+ const v = args[name];
16715
+ if (typeof v !== "string" || v.length === 0) {
16716
+ missing = true;
16717
+ return "";
16718
+ }
16719
+ return v;
16720
+ });
16721
+ return missing ? null : out;
16722
+ }
16723
+ async function tarball(sourcePath) {
16724
+ const tarPath = path3.join(tmpdir(), `argent-upload-${randomUUID3()}.tar.gz`);
16725
+ await createTarGzFile(sourcePath, tarPath);
16726
+ return tarPath;
16727
+ }
16728
+ function sha256File(filePath) {
16729
+ return new Promise((resolve8, reject) => {
16730
+ const hash = createHash2("sha256");
16731
+ createReadStream(filePath).on("data", (chunk) => hash.update(chunk)).on("end", () => resolve8(hash.digest("hex"))).on("error", reject);
16732
+ });
16733
+ }
16734
+ async function uploadTar(tarPath, endpoint) {
16735
+ const init = {
16736
+ method: "POST",
16737
+ headers: {
16738
+ "content-type": "application/gzip",
16739
+ ...endpoint.token ? { Authorization: `Bearer ${endpoint.token}` } : {}
16740
+ },
16741
+ body: createReadStream(tarPath),
16742
+ duplex: "half"
16743
+ };
16744
+ const res = await fetch(`${endpoint.url}/upload`, init);
16745
+ if (!res.ok) {
16746
+ throw new Error(`Upload to ${endpoint.url}/upload failed: ${res.status} ${res.statusText}`);
16747
+ }
16748
+ const json = await res.json();
16749
+ return json.uploadId;
16750
+ }
16751
+ async function prepareFileInputs(specs, args, opts) {
16752
+ if (!specs || specs.length === 0 || typeof args !== "object" || args === null) {
16753
+ return args;
16754
+ }
16755
+ const record2 = args;
16756
+ let out = null;
16757
+ for (const spec of specs) {
16758
+ if (spec.skipWhenSet && record2[spec.skipWhenSet] !== void 0) continue;
16759
+ if (spec.target in record2 && typeof record2[spec.target] !== "string") continue;
16760
+ const filePath = interpolatePath(spec.path, record2);
16761
+ if (filePath === null) continue;
16762
+ if (spec.target in record2 && record2[spec.target] !== filePath) continue;
16763
+ const wire = { [FILE_INPUT_MARKER2]: true, path: filePath };
16764
+ if (spec.kind === "file") {
16765
+ try {
16766
+ const st = await stat2(filePath);
16767
+ if (st.isFile()) {
16768
+ wire.size = st.size;
16769
+ wire.mtimeMs = st.mtimeMs;
16770
+ if (opts.includeContent && st.size <= MAX_CONTENT_BYTES) {
16771
+ wire.content = (await readFile3(filePath)).toString("base64");
16772
+ } else if (opts.includeContent) {
16773
+ wire.contentOmitted = "size-limit";
16774
+ }
16775
+ }
16776
+ } catch {
16777
+ }
16778
+ }
16779
+ if (spec.kind === "tar-upload") {
16780
+ const st = await stat2(filePath).catch(() => null);
16781
+ if (st) {
16782
+ wire.size = st.size;
16783
+ wire.mtimeMs = st.mtimeMs;
16784
+ }
16785
+ if (opts.uploadEndpoint && st) {
16786
+ let tarPath = null;
16787
+ try {
16788
+ process.stderr.write(
16789
+ `Uploading ${path3.basename(filePath)} to the remote tool-server...
16790
+ `
16791
+ );
16792
+ tarPath = await tarball(filePath);
16793
+ wire.contentHash = await sha256File(tarPath);
16794
+ wire.uploadId = await uploadTar(tarPath, opts.uploadEndpoint);
16795
+ } finally {
16796
+ if (tarPath) await rm2(tarPath, { force: true }).catch(() => {
16797
+ });
16798
+ }
16799
+ }
16800
+ }
16801
+ out = out ?? { ...record2 };
16802
+ out[spec.target] = wire;
16803
+ }
16804
+ return out ?? args;
16805
+ }
16806
+ function isAllowedClientFilePath(p) {
16807
+ if (!path3.isAbsolute(p)) return false;
16808
+ const segments = p.split(/[\\/]+/);
16809
+ if (segments.includes("..")) return false;
16810
+ const file = segments[segments.length - 1] ?? "";
16811
+ if (!FLOW_FILE_NAME_PATTERN.test(file)) return false;
16812
+ return segments[segments.length - 3] === ".argent" && segments[segments.length - 2] === "flows";
16813
+ }
16814
+ function isClientFileDirective2(value) {
16815
+ return !!value && typeof value === "object" && value[CLIENT_FILE_MARKER2] === true && typeof value.path === "string" && typeof value.content === "string";
16816
+ }
16817
+ async function applyClientFileDirectives(result) {
16818
+ const written = [];
16819
+ async function walk(value) {
16820
+ if (isClientFileDirective2(value)) {
16821
+ if (!isAllowedClientFilePath(value.path)) return null;
16822
+ try {
16823
+ await mkdir3(path3.dirname(value.path), { recursive: true });
16824
+ await writeFile3(value.path, value.content, "utf8");
16825
+ written.push(value.path);
16826
+ return value.path;
16827
+ } catch {
16828
+ return null;
16829
+ }
16830
+ }
16831
+ if (Array.isArray(value)) {
16832
+ return Promise.all(value.map(walk));
16833
+ }
16834
+ if (value && typeof value === "object") {
16835
+ const out = {};
16836
+ for (const [k, v] of Object.entries(value)) {
16837
+ out[k] = await walk(v);
16838
+ }
16839
+ return out;
16840
+ }
16841
+ return value;
16842
+ }
16843
+ const rewritten = await walk(result);
16844
+ return { result: rewritten, written };
16845
+ }
16846
+
16847
+ // ../argent-tools-client/src/artifacts.ts
16848
+ import { copyFile, mkdir as mkdir4, readFile as readFile4, realpath, rm as rm3, stat as stat3, writeFile as writeFile4 } from "node:fs/promises";
16849
+ import { constants as fsConstants } from "node:fs";
16850
+ import { tmpdir as tmpdir2 } from "node:os";
16851
+ import { basename as basename4, dirname as dirname5, extname as extname2, isAbsolute as isAbsolute3, join as join9, normalize, resolve as resolve6, sep as sep2 } from "node:path";
16852
+ import { createHash as createHash3 } from "node:crypto";
16853
+
16854
+ // ../configuration-core/src/flags.ts
16855
+ import * as fs2 from "node:fs";
16856
+ import * as path4 from "node:path";
16857
+ import { homedir as homedir3 } from "node:os";
16858
+ var PROJECT_MARKERS = [".argent", ".git", "package.json"];
16859
+ function findProjectRoot(startDir) {
16860
+ let current = path4.resolve(startDir);
16861
+ while (true) {
16862
+ for (const marker of PROJECT_MARKERS) {
16863
+ if (fs2.existsSync(path4.join(current, marker))) return current;
16864
+ }
16865
+ const parent = path4.dirname(current);
16866
+ if (parent === current) return null;
16867
+ current = parent;
16868
+ }
16869
+ }
16870
+ function resolveProjectRoot(startDir) {
16871
+ return findProjectRoot(startDir) ?? path4.resolve(startDir);
16872
+ }
16873
+ function getFlagsPath(scope, options = {}) {
16874
+ const home = options.homeDir ?? homedir3();
16875
+ if (scope === "global") {
16876
+ return path4.join(home, ".argent", "flags.json");
16877
+ }
16878
+ const cwd = options.cwd ?? process.cwd();
16879
+ return path4.join(resolveProjectRoot(cwd), ".argent", "flags.json");
16880
+ }
16881
+ function readFlagsFile(filePath) {
16882
+ let raw;
16883
+ try {
16884
+ raw = fs2.readFileSync(filePath, "utf8");
16885
+ } catch {
16886
+ return {};
16887
+ }
16888
+ let parsed;
16889
+ try {
16890
+ parsed = JSON.parse(raw);
16891
+ } catch {
16892
+ return {};
16893
+ }
16894
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return {};
16895
+ const flags = parsed.flags;
16896
+ if (!flags || typeof flags !== "object" || Array.isArray(flags)) return {};
16897
+ const out = {};
16898
+ for (const [k, v] of Object.entries(flags)) {
16899
+ if (typeof v === "boolean") out[k] = v;
16900
+ }
16901
+ return out;
16902
+ }
16903
+ function readFlags(scope, options = {}) {
16904
+ return readFlagsFile(getFlagsPath(scope, options));
16905
+ }
16906
+ function isFlagEnabled(name, options = {}) {
16907
+ const projectFlags = readFlags("project", options);
16908
+ if (Object.hasOwn(projectFlags, name)) return projectFlags[name];
16909
+ const globalFlags = readFlags("global", options);
16910
+ if (Object.hasOwn(globalFlags, name)) return globalFlags[name];
16911
+ return options.default ?? false;
16912
+ }
16913
+
16914
+ // ../configuration-core/src/paths.ts
16915
+ import * as os from "node:os";
16916
+ import * as path5 from "node:path";
16917
+ function nonEmpty(value) {
16918
+ if (value == void 0) return null;
16277
16919
  const trimmed = value.trim();
16278
16920
  return trimmed === "" ? null : value;
16279
16921
  }
@@ -16407,7 +17049,12 @@ function updateConfig(mutate, scope = "global", options = {}) {
16407
17049
  }
16408
17050
  }
16409
17051
 
16410
- // ../configuration-core/src/merge.ts
17052
+ // ../configuration-core/src/secrets.ts
17053
+ var import_dotenv = __toESM(require_main(), 1);
17054
+ import * as fs4 from "node:fs";
17055
+ import * as path7 from "node:path";
17056
+
17057
+ // ../configuration-core/src/merge.ts
16411
17058
  function mergeRestrictive(local, global2) {
16412
17059
  if (local === void 0) return global2;
16413
17060
  if (global2 === void 0) return local;
@@ -16532,7 +17179,7 @@ function getConfigDefinition(key, registry2 = CONFIG_SCHEMA) {
16532
17179
  }
16533
17180
 
16534
17181
  // ../configuration-core/src/config-access.ts
16535
- import * as path7 from "node:path";
17182
+ import * as path8 from "node:path";
16536
17183
  function readScopeValue(def, scope, options) {
16537
17184
  if (!def.scopes.includes(scope)) return void 0;
16538
17185
  const raw = getAtPath(readConfigObject(scope, options), def.key);
@@ -16565,9 +17212,9 @@ var UnknownConfigKeyError = class extends Error {
16565
17212
  };
16566
17213
 
16567
17214
  // ../argent-tools-client/src/artifacts.ts
16568
- var ARTIFACT_MARKER = "__argentArtifact";
17215
+ var ARTIFACT_MARKER2 = "__argentArtifact";
16569
17216
  function isArtifactHandle(value) {
16570
- return !!value && typeof value === "object" && value[ARTIFACT_MARKER] === true && typeof value.id === "string" && typeof value.filename === "string";
17217
+ return !!value && typeof value === "object" && value[ARTIFACT_MARKER2] === true && typeof value.id === "string" && typeof value.filename === "string";
16571
17218
  }
16572
17219
  var SESSION_ID = null;
16573
17220
  function sessionId() {
@@ -16583,16 +17230,16 @@ function sanitizeSegment(segment) {
16583
17230
  function projectSlug() {
16584
17231
  const cwd = process.cwd();
16585
17232
  const hash = createHash3("sha1").update(cwd).digest("hex").slice(0, 6);
16586
- const name = sanitizeSegment(basename3(cwd)) || "root";
17233
+ const name = sanitizeSegment(basename4(cwd)) || "root";
16587
17234
  return `${name}-${hash}`;
16588
17235
  }
16589
17236
  function artifactsRoot() {
16590
- return process.env.ARGENT_ARTIFACTS_DIR ?? join8(tmpdir2(), "argent-artifacts");
17237
+ return process.env.ARGENT_ARTIFACTS_DIR ?? join9(tmpdir2(), "argent-artifacts");
16591
17238
  }
16592
17239
  function artifactDir(deviceId) {
16593
17240
  const parts = [artifactsRoot(), projectSlug(), sessionId()];
16594
17241
  if (deviceId) parts.push(sanitizeSegment(deviceId));
16595
- return join8(...parts);
17242
+ return join9(...parts);
16596
17243
  }
16597
17244
  function durableBaseDir() {
16598
17245
  const projectRoot = findProjectRoot(process.cwd());
@@ -16611,8 +17258,8 @@ function configuredRecordingsDir() {
16611
17258
  const trimmed = value.trim();
16612
17259
  if (trimmed === "") return null;
16613
17260
  const home = dirname5(argentHomeDir());
16614
- const expanded = trimmed === "~" ? home : trimmed.startsWith("~/") || trimmed.startsWith(`~${sep2}`) ? join8(home, trimmed.slice(2)) : trimmed;
16615
- return resolve5(durableBaseDir(), expanded);
17261
+ const expanded = trimmed === "~" ? home : trimmed.startsWith("~/") || trimmed.startsWith(`~${sep2}`) ? join9(home, trimmed.slice(2)) : trimmed;
17262
+ return resolve6(durableBaseDir(), expanded);
16616
17263
  }
16617
17264
  var MAX_DURABLE_BYTES = 2 * 1024 * 1024 * 1024;
16618
17265
  async function readCapped(res, cap) {
@@ -16641,14 +17288,14 @@ async function readCapped(res, cap) {
16641
17288
  return Buffer.concat(chunks);
16642
17289
  }
16643
17290
  async function writeDurableUnique(dir, filename, write) {
16644
- const ext = extname(filename);
17291
+ const ext = extname2(filename);
16645
17292
  const stem = filename.slice(0, filename.length - ext.length);
16646
17293
  for (let i = 1; i <= 1e3; i++) {
16647
17294
  const candidate = i === 1 ? filename : `${stem} (${i})${ext}`;
16648
- const path12 = join8(dir, candidate);
17295
+ const path13 = join9(dir, candidate);
16649
17296
  try {
16650
- await write(path12);
16651
- return path12;
17297
+ await write(path13);
17298
+ return path13;
16652
17299
  } catch (err) {
16653
17300
  if (err?.code === "EEXIST") continue;
16654
17301
  throw err;
@@ -16668,21 +17315,21 @@ function durableSaveTarget(handle) {
16668
17315
  if (configured) {
16669
17316
  return {
16670
17317
  dir: configured,
16671
- path: join8(configured, sanitizeSegment(handle.filename)),
17318
+ path: join9(configured, sanitizeSegment(handle.filename)),
16672
17319
  base: configured,
16673
17320
  rel: ""
16674
17321
  };
16675
17322
  }
16676
17323
  }
16677
17324
  const base = durableBaseDir();
16678
- const dir = join8(base, rel);
16679
- return { dir, path: join8(dir, sanitizeSegment(handle.filename)), base, rel };
17325
+ const dir = join9(base, rel);
17326
+ return { dir, path: join9(dir, sanitizeSegment(handle.filename)), base, rel };
16680
17327
  }
16681
17328
  async function confineToRealBase(dir, base, rel) {
16682
17329
  try {
16683
17330
  const realDir = await realpath(dir);
16684
17331
  const realBase = await realpath(base);
16685
- return realDir === join8(realBase, rel);
17332
+ return realDir === join9(realBase, rel);
16686
17333
  } catch {
16687
17334
  return false;
16688
17335
  }
@@ -16690,7 +17337,7 @@ async function confineToRealBase(dir, base, rel) {
16690
17337
  async function resolveLocalFile(handle) {
16691
17338
  if (!handle.hostPath) return null;
16692
17339
  try {
16693
- const st = await stat2(handle.hostPath);
17340
+ const st = await stat3(handle.hostPath);
16694
17341
  if (handle.archive) {
16695
17342
  return st.isDirectory() ? handle.hostPath : null;
16696
17343
  }
@@ -16705,7 +17352,7 @@ async function resolveLocalFile(handle) {
16705
17352
  }
16706
17353
  }
16707
17354
  async function downloadAndExtractArchive(handle, data, dir) {
16708
- const tarball2 = join8(dir, `${sanitizeSegment(handle.filename)}.tar.gz`);
17355
+ const tarball2 = join9(dir, `${sanitizeSegment(handle.filename)}.tar.gz`);
16709
17356
  try {
16710
17357
  await writeFile4(tarball2, data);
16711
17358
  return await safeExtractTarGz(tarball2, dir, handle.filename);
@@ -16733,7 +17380,7 @@ async function materializeArtifacts(result, ctx) {
16733
17380
  const localPath = await resolveLocalFile(value);
16734
17381
  const saveTarget = durableSaveTarget(value);
16735
17382
  if (saveTarget) {
16736
- const filename = basename3(saveTarget.path);
17383
+ const filename = basename4(saveTarget.path);
16737
17384
  try {
16738
17385
  await mkdir4(saveTarget.dir, { recursive: true });
16739
17386
  if (!await confineToRealBase(saveTarget.dir, saveTarget.base, saveTarget.rel)) {
@@ -16795,7 +17442,7 @@ async function materializeArtifacts(result, ctx) {
16795
17442
  return await downloadAndExtractArchive(value, data, dir);
16796
17443
  }
16797
17444
  if (value.size > 0 && data.length !== value.size) return null;
16798
- const downloadedPath = join8(dir, sanitizeSegment(value.filename));
17445
+ const downloadedPath = join9(dir, sanitizeSegment(value.filename));
16799
17446
  await writeFile4(downloadedPath, data);
16800
17447
  if (value.mimeType.startsWith("image/")) {
16801
17448
  images.push({ localPath: downloadedPath, data, mimeType: value.mimeType });
@@ -17856,501 +18503,191 @@ function resolveExceptionStepsConfig(config2) {
17856
18503
  function stripReservedExceptionStepFields(properties) {
17857
18504
  if (!properties) return {
17858
18505
  sanitizedProperties: {},
17859
- droppedKeys: []
17860
- };
17861
- const droppedKeys = [];
17862
- const sanitizedProperties = Object.keys(properties).reduce((acc, key) => {
17863
- if (RESERVED_EXCEPTION_STEP_KEYS.has(key)) {
17864
- droppedKeys.push(key);
17865
- return acc;
17866
- }
17867
- acc[key] = properties[key];
17868
- return acc;
17869
- }, {});
17870
- return {
17871
- sanitizedProperties,
17872
- droppedKeys
17873
- };
17874
- }
17875
- var ExceptionStepsBuffer = class {
17876
- constructor(config2) {
17877
- this._entries = [];
17878
- this._totalBytes = 0;
17879
- this._config = resolveExceptionStepsConfig(config2);
17880
- }
17881
- setConfig(config2) {
17882
- this._config = resolveExceptionStepsConfig(config2);
17883
- this._trimToMaxBytes();
17884
- }
17885
- add(step) {
17886
- const serialized = normalizeAndSerializeStep(step);
17887
- if (!serialized) return;
17888
- const bytes = getUtf8ByteLength(serialized.json);
17889
- if (bytes > this._config.max_bytes) return;
17890
- this._entries.push({
17891
- step: serialized.step,
17892
- bytes
17893
- });
17894
- this._totalBytes += bytes;
17895
- this._trimToMaxBytes();
17896
- }
17897
- getAttachable() {
17898
- return this._entries.map((e) => e.step);
17899
- }
17900
- clear() {
17901
- this._entries = [];
17902
- this._totalBytes = 0;
17903
- }
17904
- size() {
17905
- return this._entries.length;
17906
- }
17907
- _trimToMaxBytes() {
17908
- while (this._totalBytes > this._config.max_bytes && this._entries.length > 0) {
17909
- const evicted = this._entries.shift();
17910
- if (evicted) this._totalBytes -= evicted.bytes;
17911
- }
17912
- }
17913
- };
17914
- function normalizePositiveInteger(input, fallback) {
17915
- if (!isNumber(input) || input === 1 / 0 || input === -1 / 0) return fallback;
17916
- const normalized = Math.floor(input);
17917
- if (normalized < 0) return fallback;
17918
- return normalized;
17919
- }
17920
- function normalizeAndSerializeStep(step) {
17921
- const json = safeStringify(step);
17922
- if (!json) return;
17923
- try {
17924
- const parsed = JSON.parse(json);
17925
- if (!isObject2(parsed)) return;
17926
- const parsedStep = parsed;
17927
- const message = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE];
17928
- const timestamp = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP];
17929
- if (!isString(message) || 0 === message.trim().length) return;
17930
- if (!isString(timestamp) && !isNumber(timestamp)) return;
17931
- return {
17932
- step: parsedStep,
17933
- json
17934
- };
17935
- } catch {
17936
- return;
17937
- }
17938
- }
17939
- function safeStringify(value) {
17940
- const seen = /* @__PURE__ */ new WeakSet();
17941
- try {
17942
- return JSON.stringify(value, (_key, replacementValue) => {
17943
- if ("bigint" == typeof replacementValue) return replacementValue.toString();
17944
- if ("function" == typeof replacementValue || "symbol" == typeof replacementValue) return;
17945
- if (replacementValue instanceof Date) return replacementValue.toISOString();
17946
- if (replacementValue instanceof Error) return {
17947
- name: replacementValue.name,
17948
- message: replacementValue.message,
17949
- stack: replacementValue.stack
17950
- };
17951
- if (replacementValue && "object" == typeof replacementValue) {
17952
- if (seen.has(replacementValue)) return "[Circular]";
17953
- seen.add(replacementValue);
17954
- }
17955
- return replacementValue;
17956
- });
17957
- } catch {
17958
- return;
17959
- }
17960
- }
17961
- function getUtf8ByteLength(value) {
17962
- if ("undefined" != typeof TextEncoder) return new TextEncoder().encode(value).length;
17963
- const encoded = encodeURIComponent(value);
17964
- let byteLength = 0;
17965
- for (let i = 0; i < encoded.length; i++) if ("%" === encoded[i]) {
17966
- byteLength += 1;
17967
- i += 2;
17968
- } else byteLength += 1;
17969
- return byteLength;
17970
- }
17971
-
17972
- // ../../node_modules/posthog-node/dist/extensions/error-tracking/modifiers/context-lines.node.mjs
17973
- import { createReadStream as createReadStream2 } from "node:fs";
17974
- import { createInterface as createInterface2 } from "node:readline";
17975
- var LRU_FILE_CONTENTS_CACHE = new error_tracking_exports.ReduceableCache(25);
17976
- var LRU_FILE_CONTENTS_FS_READ_FAILED = new error_tracking_exports.ReduceableCache(20);
17977
-
17978
- // ../../node_modules/posthog-node/dist/extensions/context/context.mjs
17979
- import { AsyncLocalStorage } from "node:async_hooks";
17980
-
17981
- // ../../node_modules/posthog-node/dist/extensions/sentry-integration.mjs
17982
- var NAME = "posthog-node";
17983
- function createEventProcessor(_posthog, { organization, projectId, prefix, severityAllowList = [
17984
- "error"
17985
- ], sendExceptionsToPostHog = true } = {}) {
17986
- return (event) => {
17987
- const shouldProcessLevel = "*" === severityAllowList || severityAllowList.includes(event.level);
17988
- if (!shouldProcessLevel) return event;
17989
- if (!event.tags) event.tags = {};
17990
- const userId = event.tags[PostHogSentryIntegration.POSTHOG_ID_TAG];
17991
- if (void 0 === userId) return event;
17992
- const uiHost = _posthog.options.host ?? "https://us.i.posthog.com";
17993
- const personUrl = new URL(`/project/${_posthog.apiKey}/person/${userId}`, uiHost).toString();
17994
- event.tags["PostHog Person URL"] = personUrl;
17995
- const exceptions = event.exception?.values || [];
17996
- const exceptionList = exceptions.map((exception) => ({
17997
- ...exception,
17998
- stacktrace: exception.stacktrace ? {
17999
- ...exception.stacktrace,
18000
- type: "raw",
18001
- frames: (exception.stacktrace.frames || []).map((frame) => ({
18002
- ...frame,
18003
- platform: "node:javascript"
18004
- }))
18005
- } : void 0
18006
- }));
18007
- const properties = {
18008
- $exception_message: exceptions[0]?.value || event.message,
18009
- $exception_type: exceptions[0]?.type,
18010
- $exception_level: event.level,
18011
- $exception_list: exceptionList,
18012
- $sentry_event_id: event.event_id,
18013
- $sentry_exception: event.exception,
18014
- $sentry_exception_message: exceptions[0]?.value || event.message,
18015
- $sentry_exception_type: exceptions[0]?.type,
18016
- $sentry_tags: event.tags
18017
- };
18018
- if (organization && projectId) properties["$sentry_url"] = (prefix || "https://sentry.io/organizations/") + organization + "/issues/?project=" + projectId + "&query=" + event.event_id;
18019
- if (sendExceptionsToPostHog) _posthog.capture({
18020
- event: "$exception",
18021
- distinctId: userId,
18022
- properties
18023
- });
18024
- return event;
18025
- };
18026
- }
18027
- var PostHogSentryIntegration = class {
18028
- static #_ = this.POSTHOG_ID_TAG = "posthog_distinct_id";
18029
- constructor(_posthog, organization, prefix, severityAllowList, sendExceptionsToPostHog) {
18030
- this.name = NAME;
18031
- this.name = NAME;
18032
- this.setupOnce = function(addGlobalEventProcessor, getCurrentHub) {
18033
- const projectId = getCurrentHub()?.getClient()?.getDsn()?.projectId;
18034
- addGlobalEventProcessor(createEventProcessor(_posthog, {
18035
- organization,
18036
- projectId,
18037
- prefix,
18038
- severityAllowList,
18039
- sendExceptionsToPostHog: sendExceptionsToPostHog ?? true
18040
- }));
18041
- };
18042
- }
18043
- };
18044
-
18045
- // ../registry/src/artifacts.ts
18046
- import { stat as stat3 } from "node:fs/promises";
18047
- import { randomUUID as randomUUID3 } from "node:crypto";
18048
- import { basename as basename4, extname as extname2 } from "node:path";
18049
-
18050
- // ../registry/src/failure-codes.ts
18051
- var FAILURE_CODES = {
18052
- ARGENT_UNCLASSIFIED_FAILURE: "ARGENT_UNCLASSIFIED_FAILURE",
18053
- REGISTRY_SERVICE_NOT_FOUND: "REGISTRY_SERVICE_NOT_FOUND",
18054
- REGISTRY_SERVICE_INITIALIZATION_FAILED: "REGISTRY_SERVICE_INITIALIZATION_FAILED",
18055
- REGISTRY_TOOL_NOT_FOUND: "REGISTRY_TOOL_NOT_FOUND",
18056
- REGISTRY_TOOL_EXECUTION_FAILED: "REGISTRY_TOOL_EXECUTION_FAILED",
18057
- REGISTRY_TOOL_FAILURE_UNCLASSIFIED: "REGISTRY_TOOL_FAILURE_UNCLASSIFIED",
18058
- HTTP_TOOL_NOT_FOUND: "HTTP_TOOL_NOT_FOUND",
18059
- HTTP_ZOD_VALIDATION_FAILED: "HTTP_ZOD_VALIDATION_FAILED",
18060
- HTTP_CAPABILITY_UNSUPPORTED_OPERATION: "HTTP_CAPABILITY_UNSUPPORTED_OPERATION",
18061
- HTTP_DEVICE_RESOLUTION_FAILED: "HTTP_DEVICE_RESOLUTION_FAILED",
18062
- HTTP_DEPENDENCY_PREFLIGHT_MISSING: "HTTP_DEPENDENCY_PREFLIGHT_MISSING",
18063
- CLI_RUN_TOOL_NOT_FOUND: "CLI_RUN_TOOL_NOT_FOUND",
18064
- CLI_RUN_FLAG_PARSE_FAILED: "CLI_RUN_FLAG_PARSE_FAILED",
18065
- CLI_RUN_ARGS_NOT_OBJECT: "CLI_RUN_ARGS_NOT_OBJECT",
18066
- CLI_RUN_ARGS_JSON_INVALID: "CLI_RUN_ARGS_JSON_INVALID",
18067
- CLI_RUN_TOOL_CALL_FAILED: "CLI_RUN_TOOL_CALL_FAILED",
18068
- CLI_RUN_SAVE_IMAGE_FAILED: "CLI_RUN_SAVE_IMAGE_FAILED",
18069
- TOOL_CAPABILITY_UNSUPPORTED_OPERATION: "TOOL_CAPABILITY_UNSUPPORTED_OPERATION",
18070
- TOOL_PLATFORM_NOT_IMPLEMENTED: "TOOL_PLATFORM_NOT_IMPLEMENTED",
18071
- TOOL_DEPENDENCY_MISSING: "TOOL_DEPENDENCY_MISSING",
18072
- TOOL_INPUT_INVALID: "TOOL_INPUT_INVALID",
18073
- TOOLSERVER_UNHANDLED_REJECTION: "TOOLSERVER_UNHANDLED_REJECTION",
18074
- TOOLSERVER_UNCAUGHT_EXCEPTION: "TOOLSERVER_UNCAUGHT_EXCEPTION",
18075
- INSTALL_GLOBAL_PACKAGE_FAILED: "INSTALL_GLOBAL_PACKAGE_FAILED",
18076
- INSTALL_LOCAL_PACKAGE_FAILED: "INSTALL_LOCAL_PACKAGE_FAILED",
18077
- INSTALL_LOCAL_PRECONDITION_FAILED: "INSTALL_LOCAL_PRECONDITION_FAILED",
18078
- INSTALL_MODE_FLAG_CONFLICT: "INSTALL_MODE_FLAG_CONFLICT",
18079
- INSTALL_FROM_TAR_PACKAGE_FAILED: "INSTALL_FROM_TAR_PACKAGE_FAILED",
18080
- INSTALL_INIT_TRIGGERED_UPDATE_FAILED: "INSTALL_INIT_TRIGGERED_UPDATE_FAILED",
18081
- INSTALL_SKILLS_REFRESH_FAILED: "INSTALL_SKILLS_REFRESH_FAILED",
18082
- INSTALL_UNCLASSIFIED_FAILED: "INSTALL_UNCLASSIFIED_FAILED",
18083
- UPDATE_INSTALLED_VERSION_DETECT_FAILED: "UPDATE_INSTALLED_VERSION_DETECT_FAILED",
18084
- UPDATE_INVALID_TARGET_VERSION: "UPDATE_INVALID_TARGET_VERSION",
18085
- UPDATE_REGISTRY_CHECK_FAILED: "UPDATE_REGISTRY_CHECK_FAILED",
18086
- UPDATE_TOOLSERVER_STOP_FAILED: "UPDATE_TOOLSERVER_STOP_FAILED",
18087
- UPDATE_PACKAGE_ACTION_FAILED: "UPDATE_PACKAGE_ACTION_FAILED",
18088
- UPDATE_UNCLASSIFIED_FAILED: "UPDATE_UNCLASSIFIED_FAILED",
18089
- UNINSTALL_TOOLSERVER_STOP_FAILED: "UNINSTALL_TOOLSERVER_STOP_FAILED",
18090
- UNINSTALL_PACKAGE_ACTION_FAILED: "UNINSTALL_PACKAGE_ACTION_FAILED",
18091
- UNINSTALL_UNCLASSIFIED_FAILED: "UNINSTALL_UNCLASSIFIED_FAILED",
18092
- VEGA_CLI_COMMAND_FAILED: "VEGA_CLI_COMMAND_FAILED",
18093
- VEGA_INPUT_UNAVAILABLE: "VEGA_INPUT_UNAVAILABLE",
18094
- VEGA_DEVICE_NOT_FOUND: "VEGA_DEVICE_NOT_FOUND",
18095
- VEGA_DEVICE_NOT_REGISTERED: "VEGA_DEVICE_NOT_REGISTERED",
18096
- VEGA_MULTIPLE_DEVICES: "VEGA_MULTIPLE_DEVICES",
18097
- VEGA_BOOT_TIMEOUT: "VEGA_BOOT_TIMEOUT",
18098
- VEGA_IMAGE_NOT_FOUND: "VEGA_IMAGE_NOT_FOUND",
18099
- VEGA_ALREADY_RUNNING: "VEGA_ALREADY_RUNNING",
18100
- VEGA_SCREENSHOT_FAILED: "VEGA_SCREENSHOT_FAILED",
18101
- VEGA_TEXT_INVALID: "VEGA_TEXT_INVALID",
18102
- ANDROID_ADB_NOT_FOUND: "ANDROID_ADB_NOT_FOUND",
18103
- ANDROID_EMULATOR_NOT_FOUND: "ANDROID_EMULATOR_NOT_FOUND",
18104
- ANDROID_ADB_COMMAND_FAILED: "ANDROID_ADB_COMMAND_FAILED",
18105
- ANDROID_ADB_BOOT_TERMINAL_STATE: "ANDROID_ADB_BOOT_TERMINAL_STATE",
18106
- ANDROID_ADB_BOOT_TIMEOUT: "ANDROID_ADB_BOOT_TIMEOUT",
18107
- SIMULATOR_NETWORK_TIMEOUT: "SIMULATOR_NETWORK_TIMEOUT",
18108
- SIMULATOR_NETWORK_CONNECTION_REFUSED: "SIMULATOR_NETWORK_CONNECTION_REFUSED",
18109
- SIMULATOR_NETWORK_CONNECTION_RESET: "SIMULATOR_NETWORK_CONNECTION_RESET",
18110
- SIMULATOR_NETWORK_ERROR: "SIMULATOR_NETWORK_ERROR",
18111
- SIMULATOR_NON_JSON_RESPONSE: "SIMULATOR_NON_JSON_RESPONSE",
18112
- SIMULATOR_HTTP_ERROR_RESPONSE: "SIMULATOR_HTTP_ERROR_RESPONSE",
18113
- SIMULATOR_MISSING_RESPONSE_FIELDS: "SIMULATOR_MISSING_RESPONSE_FIELDS",
18114
- SIMULATOR_SCREENSHOT_FAILED: "SIMULATOR_SCREENSHOT_FAILED",
18115
- SIMULATOR_SERVER_FACTORY_OPTIONS_MISSING: "SIMULATOR_SERVER_FACTORY_OPTIONS_MISSING",
18116
- SIMULATOR_SERVER_DEVICE_ID_INVALID: "SIMULATOR_SERVER_DEVICE_ID_INVALID",
18117
- SIMULATOR_SERVER_READY_EXITED: "SIMULATOR_SERVER_READY_EXITED",
18118
- SIMULATOR_SERVER_READY_TIMEOUT: "SIMULATOR_SERVER_READY_TIMEOUT",
18119
- SIMULATOR_SERVER_PROCESS_ERROR: "SIMULATOR_SERVER_PROCESS_ERROR",
18120
- SIMULATOR_SERVER_TERMINATED: "SIMULATOR_SERVER_TERMINATED",
18121
- AX_QUERY_TIMEOUT: "AX_QUERY_TIMEOUT",
18122
- AX_DAEMON_READY_TIMEOUT: "AX_DAEMON_READY_TIMEOUT",
18123
- AX_DAEMON_EXITED_BEFORE_READY: "AX_DAEMON_EXITED_BEFORE_READY",
18124
- AX_DAEMON_PROCESS_ERROR: "AX_DAEMON_PROCESS_ERROR",
18125
- AX_FACTORY_OPTIONS_MISSING: "AX_FACTORY_OPTIONS_MISSING",
18126
- AX_WRONG_PLATFORM: "AX_WRONG_PLATFORM",
18127
- AX_DEVICE_ID_INVALID: "AX_DEVICE_ID_INVALID",
18128
- AX_DESCRIBE_ERROR: "AX_DESCRIBE_ERROR",
18129
- AX_QUERY_FAILED: "AX_QUERY_FAILED",
18130
- ANDROID_LAUNCH_ACTIVITY_RESOLVE_FAILED: "ANDROID_LAUNCH_ACTIVITY_RESOLVE_FAILED",
18131
- ANDROID_LAUNCH_AM_START_FAILED: "ANDROID_LAUNCH_AM_START_FAILED",
18132
- ANDROID_OPEN_URL_FAILED: "ANDROID_OPEN_URL_FAILED",
18133
- ANDROID_REINSTALL_INSTALL_FAILED: "ANDROID_REINSTALL_INSTALL_FAILED",
18134
- ANDROID_RESTART_FAILED: "ANDROID_RESTART_FAILED",
18135
- ANDROID_SETTINGS_PERMISSION_FAILED: "ANDROID_SETTINGS_PERMISSION_FAILED",
18136
- IOS_LAUNCH_SIMCTL_FAILED: "IOS_LAUNCH_SIMCTL_FAILED",
18137
- IOS_OPEN_URL_FAILED: "IOS_OPEN_URL_FAILED",
18138
- IOS_REINSTALL_INSTALL_FAILED: "IOS_REINSTALL_INSTALL_FAILED",
18139
- IOS_RESTART_LAUNCH_FAILED: "IOS_RESTART_LAUNCH_FAILED",
18140
- IOS_SETTINGS_PERMISSION_FAILED: "IOS_SETTINGS_PERMISSION_FAILED",
18141
- SETTINGS_PERMISSION_UNSUPPORTED: "SETTINGS_PERMISSION_UNSUPPORTED",
18142
- NATIVE_DEVTOOLS_DESCRIBE_ERROR: "NATIVE_DEVTOOLS_DESCRIBE_ERROR",
18143
- NATIVE_DEVTOOLS_VIEW_AT_POINT_ERROR: "NATIVE_DEVTOOLS_VIEW_AT_POINT_ERROR",
18144
- NATIVE_DEVTOOLS_USER_INTERACTABLE_VIEW_AT_POINT_ERROR: "NATIVE_DEVTOOLS_USER_INTERACTABLE_VIEW_AT_POINT_ERROR",
18145
- NATIVE_DEVTOOLS_FIND_VIEWS_ERROR: "NATIVE_DEVTOOLS_FIND_VIEWS_ERROR",
18146
- NATIVE_DEVTOOLS_FACTORY_OPTIONS_MISSING: "NATIVE_DEVTOOLS_FACTORY_OPTIONS_MISSING",
18147
- NATIVE_DEVTOOLS_WRONG_PLATFORM: "NATIVE_DEVTOOLS_WRONG_PLATFORM",
18148
- NATIVE_DEVTOOLS_NOT_INJECTABLE: "NATIVE_DEVTOOLS_NOT_INJECTABLE",
18149
- NATIVE_DEVTOOLS_NOT_CONNECTED: "NATIVE_DEVTOOLS_NOT_CONNECTED",
18150
- NATIVE_DEVTOOLS_RPC_TIMEOUT: "NATIVE_DEVTOOLS_RPC_TIMEOUT",
18151
- NATIVE_DEVTOOLS_RPC_ERROR: "NATIVE_DEVTOOLS_RPC_ERROR",
18152
- NATIVE_DEVTOOLS_SERVICE_DISPOSED: "NATIVE_DEVTOOLS_SERVICE_DISPOSED",
18153
- NATIVE_DEVTOOLS_SOCKET_BIND_FAILED: "NATIVE_DEVTOOLS_SOCKET_BIND_FAILED",
18154
- NATIVE_TARGET_NO_CONNECTED_APPS: "NATIVE_TARGET_NO_CONNECTED_APPS",
18155
- NATIVE_TARGET_SINGLE_APP_NOT_FOREGROUND: "NATIVE_TARGET_SINGLE_APP_NOT_FOREGROUND",
18156
- NATIVE_TARGET_MULTIPLE_APPS_AMBIGUOUS: "NATIVE_TARGET_MULTIPLE_APPS_AMBIGUOUS",
18157
- ANDROID_DEVTOOLS_ADB_NOT_FOUND: "ANDROID_DEVTOOLS_ADB_NOT_FOUND",
18158
- ANDROID_DEVTOOLS_ADB_FORWARD_UNEXPECTED: "ANDROID_DEVTOOLS_ADB_FORWARD_UNEXPECTED",
18159
- ANDROID_DEVTOOLS_HELPER_EXITED_BEFORE_READY: "ANDROID_DEVTOOLS_HELPER_EXITED_BEFORE_READY",
18160
- ANDROID_DEVTOOLS_HELPER_PROCESS_ERROR: "ANDROID_DEVTOOLS_HELPER_PROCESS_ERROR",
18161
- ANDROID_DEVTOOLS_HELPER_READY_TIMEOUT: "ANDROID_DEVTOOLS_HELPER_READY_TIMEOUT",
18162
- ANDROID_DEVTOOLS_FACTORY_OPTIONS_MISSING: "ANDROID_DEVTOOLS_FACTORY_OPTIONS_MISSING",
18163
- ANDROID_DEVTOOLS_WRONG_PLATFORM: "ANDROID_DEVTOOLS_WRONG_PLATFORM",
18164
- ANDROID_DEVTOOLS_DEVICE_ID_INVALID: "ANDROID_DEVTOOLS_DEVICE_ID_INVALID",
18165
- ANDROID_DEVTOOLS_HELPER_TERMINATED: "ANDROID_DEVTOOLS_HELPER_TERMINATED",
18166
- ANDROID_DEVTOOLS_RPC_CLIENT_CLOSED: "ANDROID_DEVTOOLS_RPC_CLIENT_CLOSED",
18167
- ANDROID_DEVTOOLS_RPC_ERROR: "ANDROID_DEVTOOLS_RPC_ERROR",
18168
- ANDROID_DEVTOOLS_RPC_TIMEOUT: "ANDROID_DEVTOOLS_RPC_TIMEOUT",
18169
- ANDROID_DEVTOOLS_SOCKET_CLOSED: "ANDROID_DEVTOOLS_SOCKET_CLOSED",
18170
- ANDROID_SCREEN_SIZE_PARSE_FAILED: "ANDROID_SCREEN_SIZE_PARSE_FAILED",
18171
- ANDROID_SCREEN_SIZE_NON_POSITIVE: "ANDROID_SCREEN_SIZE_NON_POSITIVE",
18172
- ANDROID_UIAUTOMATOR_PARSE_FAILED: "ANDROID_UIAUTOMATOR_PARSE_FAILED",
18173
- ANDROID_UIAUTOMATOR_CAPTURE_FAILED: "ANDROID_UIAUTOMATOR_CAPTURE_FAILED",
18174
- DEBUGGER_METRO_NOT_RUNNING: "DEBUGGER_METRO_NOT_RUNNING",
18175
- DEBUGGER_METRO_NO_TARGETS: "DEBUGGER_METRO_NO_TARGETS",
18176
- DEBUGGER_CDP_RUNTIME_EXCEPTION: "DEBUGGER_CDP_RUNTIME_EXCEPTION",
18177
- DEBUGGER_CDP_BINDING_TIMEOUT: "DEBUGGER_CDP_BINDING_TIMEOUT",
18178
- DEBUGGER_CDP_BINDING_UNAVAILABLE: "DEBUGGER_CDP_BINDING_UNAVAILABLE",
18179
- DEBUGGER_CDP_PROTOCOL_ERROR: "DEBUGGER_CDP_PROTOCOL_ERROR",
18180
- DEBUGGER_RELOAD_FAILED: "DEBUGGER_RELOAD_FAILED",
18181
- JS_RUNTIME_CONSOLE_SERVER_BIND_FAILED: "JS_RUNTIME_CONSOLE_SERVER_BIND_FAILED",
18182
- JS_RUNTIME_PAYLOAD_INVALID: "JS_RUNTIME_PAYLOAD_INVALID",
18183
- JS_RUNTIME_PAYLOAD_DEVICE_MISSING: "JS_RUNTIME_PAYLOAD_DEVICE_MISSING",
18184
- JS_RUNTIME_PAYLOAD_PORT_INVALID: "JS_RUNTIME_PAYLOAD_PORT_INVALID",
18185
- JS_RUNTIME_CDP_DISCONNECTED: "JS_RUNTIME_CDP_DISCONNECTED",
18186
- NETWORK_INSPECTOR_CDP_DISCONNECTED: "NETWORK_INSPECTOR_CDP_DISCONNECTED",
18187
- REACT_PROFILER_NO_ACTIVE_SESSION: "REACT_PROFILER_NO_ACTIVE_SESSION",
18188
- REACT_PROFILER_CDP_CONNECTION_LOST: "REACT_PROFILER_CDP_CONNECTION_LOST",
18189
- REACT_PROFILER_NO_CPU_PROFILE: "REACT_PROFILER_NO_CPU_PROFILE",
18190
- REACT_PROFILER_RUNTIME_EXCEPTION: "REACT_PROFILER_RUNTIME_EXCEPTION",
18191
- REACT_PROFILER_NO_RUNTIME_DATA: "REACT_PROFILER_NO_RUNTIME_DATA",
18192
- REACT_PROFILER_SESSION_PAYLOAD_INVALID: "REACT_PROFILER_SESSION_PAYLOAD_INVALID",
18193
- REACT_PROFILER_SESSION_PAYLOAD_DEVICE_MISSING: "REACT_PROFILER_SESSION_PAYLOAD_DEVICE_MISSING",
18194
- REACT_PROFILER_SESSION_CDP_DISCONNECTED: "REACT_PROFILER_SESSION_CDP_DISCONNECTED",
18195
- REACT_PROFILER_CDP_NOT_CONNECTED: "REACT_PROFILER_CDP_NOT_CONNECTED",
18196
- REACT_PROFILER_STATE_READ_FAILED: "REACT_PROFILER_STATE_READ_FAILED",
18197
- REACT_PROFILER_DEVTOOLS_HOOK_MISSING: "REACT_PROFILER_DEVTOOLS_HOOK_MISSING",
18198
- REACT_PROFILER_DEVTOOLS_BACKEND_ATTACH_FAILED: "REACT_PROFILER_DEVTOOLS_BACKEND_ATTACH_FAILED",
18199
- REACT_PROFILER_DEVTOOLS_BACKEND_BOOTSTRAP_FAILED: "REACT_PROFILER_DEVTOOLS_BACKEND_BOOTSTRAP_FAILED",
18200
- REACT_PROFILER_DEVTOOLS_RENDERER_MISSING: "REACT_PROFILER_DEVTOOLS_RENDERER_MISSING",
18201
- REACT_PROFILER_START_FAILED: "REACT_PROFILER_START_FAILED",
18202
- REACT_PROFILER_START_VERIFY_FAILED: "REACT_PROFILER_START_VERIFY_FAILED",
18203
- REACT_PROFILER_HOOK_ERROR: "REACT_PROFILER_HOOK_ERROR",
18204
- REACT_PROFILER_ANALYZE_NO_DATA: "REACT_PROFILER_ANALYZE_NO_DATA",
18205
- NATIVE_PROFILER_FACTORY_OPTIONS_MISSING: "NATIVE_PROFILER_FACTORY_OPTIONS_MISSING",
18206
- NATIVE_PROFILER_WRONG_PLATFORM: "NATIVE_PROFILER_WRONG_PLATFORM",
18207
- NATIVE_PROFILER_APP_PROCESS_LIST_FAILED: "NATIVE_PROFILER_APP_PROCESS_LIST_FAILED",
18208
- NATIVE_PROFILER_APP_LIST_FAILED: "NATIVE_PROFILER_APP_LIST_FAILED",
18209
- NATIVE_PROFILER_NO_RUNNING_APPS: "NATIVE_PROFILER_NO_RUNNING_APPS",
18210
- NATIVE_PROFILER_NO_RUNNING_USER_APPS: "NATIVE_PROFILER_NO_RUNNING_USER_APPS",
18211
- NATIVE_PROFILER_MULTIPLE_RUNNING_USER_APPS: "NATIVE_PROFILER_MULTIPLE_RUNNING_USER_APPS",
18212
- NATIVE_PROFILER_MALLOC_DEGRADED_XCODE: "NATIVE_PROFILER_MALLOC_DEGRADED_XCODE",
18213
- NATIVE_PROFILER_MALLOC_STRATEGY_OVERRIDE: "NATIVE_PROFILER_MALLOC_STRATEGY_OVERRIDE",
18214
- NATIVE_PROFILER_APP_BUNDLE_PATH_FAILED: "NATIVE_PROFILER_APP_BUNDLE_PATH_FAILED",
18215
- NATIVE_PROFILER_LAUNCH_APP_NOT_FOUND: "NATIVE_PROFILER_LAUNCH_APP_NOT_FOUND",
18216
- NATIVE_PROFILER_LAUNCH_APP_AMBIGUOUS: "NATIVE_PROFILER_LAUNCH_APP_AMBIGUOUS",
18217
- NATIVE_PROFILER_SESSION_ALREADY_RUNNING: "NATIVE_PROFILER_SESSION_ALREADY_RUNNING",
18218
- NATIVE_PROFILER_XCTRACE_NO_PID: "NATIVE_PROFILER_XCTRACE_NO_PID",
18219
- NATIVE_PROFILER_XCTRACE_PROCESS_NOT_FOUND: "NATIVE_PROFILER_XCTRACE_PROCESS_NOT_FOUND",
18220
- NATIVE_PROFILER_XCTRACE_READY_EXITED: "NATIVE_PROFILER_XCTRACE_READY_EXITED",
18221
- NATIVE_PROFILER_XCTRACE_PROCESS_ERROR: "NATIVE_PROFILER_XCTRACE_PROCESS_ERROR",
18222
- NATIVE_PROFILER_XCTRACE_READY_TIMEOUT: "NATIVE_PROFILER_XCTRACE_READY_TIMEOUT",
18223
- NATIVE_PROFILER_TRACE_TEMPLATE_MISSING: "NATIVE_PROFILER_TRACE_TEMPLATE_MISSING",
18224
- NATIVE_PROFILER_NO_ACTIVE_SESSION: "NATIVE_PROFILER_NO_ACTIVE_SESSION",
18225
- NATIVE_PROFILER_APP_PROCESS_NOT_FOUND: "NATIVE_PROFILER_APP_PROCESS_NOT_FOUND",
18226
- NATIVE_PROFILER_NO_EXPORTED_TRACE: "NATIVE_PROFILER_NO_EXPORTED_TRACE",
18227
- // Android perfetto start-failure modes — mirror the iOS xctrace set so a
18228
- // failed recording start is classified rather than falling through to the
18229
- // generic tool-execution bucket.
18230
- NATIVE_PROFILER_PERFETTO_PROCESS_ERROR: "NATIVE_PROFILER_PERFETTO_PROCESS_ERROR",
18231
- NATIVE_PROFILER_PERFETTO_READY_TIMEOUT: "NATIVE_PROFILER_PERFETTO_READY_TIMEOUT",
18232
- NATIVE_PROFILER_PERFETTO_READY_EXITED: "NATIVE_PROFILER_PERFETTO_READY_EXITED",
18233
- // screen-recording-start / screen-recording-stop. One capture path for every
18234
- // platform (simulator-server's frame stream into ffmpeg), so the stages name
18235
- // the step that failed rather than the device family.
18236
- SCREEN_RECORDING_FACTORY_OPTIONS_MISSING: "SCREEN_RECORDING_FACTORY_OPTIONS_MISSING",
18237
- SCREEN_RECORDING_WRONG_PLATFORM: "SCREEN_RECORDING_WRONG_PLATFORM",
18238
- SCREEN_RECORDING_ALREADY_ACTIVE: "SCREEN_RECORDING_ALREADY_ACTIVE",
18239
- SCREEN_RECORDING_NO_ACTIVE_SESSION: "SCREEN_RECORDING_NO_ACTIVE_SESSION",
18240
- SCREEN_RECORDING_STOP_IN_PROGRESS: "SCREEN_RECORDING_STOP_IN_PROGRESS",
18241
- SCREEN_RECORDING_START_EXITED: "SCREEN_RECORDING_START_EXITED",
18242
- SCREEN_RECORDING_START_TIMEOUT: "SCREEN_RECORDING_START_TIMEOUT",
18243
- SCREEN_RECORDING_PROCESS_ERROR: "SCREEN_RECORDING_PROCESS_ERROR",
18244
- SCREEN_RECORDING_OUTPUT_MISSING: "SCREEN_RECORDING_OUTPUT_MISSING",
18245
- SCREEN_RECORDING_SERVER_SHUTTING_DOWN: "SCREEN_RECORDING_SERVER_SHUTTING_DOWN",
18246
- SCREEN_RECORDING_STREAM_UNAVAILABLE: "SCREEN_RECORDING_STREAM_UNAVAILABLE",
18247
- SCREEN_RECORDING_FFMPEG_NOT_FOUND: "SCREEN_RECORDING_FFMPEG_NOT_FOUND",
18248
- FLOW_PROJECT_ROOT_REQUIRED: "FLOW_PROJECT_ROOT_REQUIRED",
18249
- FLOW_PROJECT_ROOT_INVALID: "FLOW_PROJECT_ROOT_INVALID",
18250
- FLOW_NAME_INVALID: "FLOW_NAME_INVALID",
18251
- FLOW_NO_ACTIVE_RECORDING: "FLOW_NO_ACTIVE_RECORDING",
18252
- FLOW_FILE_INVALID: "FLOW_FILE_INVALID",
18253
- FLOW_ENTRY_UNRECOGNIZED: "FLOW_ENTRY_UNRECOGNIZED",
18254
- FLOW_E2E_HAS_PREREQUISITE: "FLOW_E2E_HAS_PREREQUISITE",
18255
- FLOW_DEVICE_RESOLUTION: "FLOW_DEVICE_RESOLUTION",
18256
- PROFILER_QUERY_MODE_INVALID: "PROFILER_QUERY_MODE_INVALID",
18257
- PROFILER_QUERY_REQUIRED_PARAM_MISSING: "PROFILER_QUERY_REQUIRED_PARAM_MISSING",
18258
- PROFILER_DATA_NOT_LOADED: "PROFILER_DATA_NOT_LOADED",
18259
- PROFILER_NATIVE_TRACE_MISSING: "PROFILER_NATIVE_TRACE_MISSING",
18260
- PROFILER_NATIVE_METADATA_MISSING: "PROFILER_NATIVE_METADATA_MISSING",
18261
- PROFILER_NATIVE_METADATA_INVALID: "PROFILER_NATIVE_METADATA_INVALID",
18262
- CHROMIUM_CDP_UNREACHABLE: "CHROMIUM_CDP_UNREACHABLE",
18263
- CHROMIUM_CDP_NO_PAGE_TARGET: "CHROMIUM_CDP_NO_PAGE_TARGET",
18264
- CHROMIUM_CDP_INVALID_RESPONSE: "CHROMIUM_CDP_INVALID_RESPONSE",
18265
- CHROMIUM_DEVICE_ID_INVALID: "CHROMIUM_DEVICE_ID_INVALID",
18266
- CHROMIUM_PARAM_INVALID: "CHROMIUM_PARAM_INVALID",
18267
- CHROMIUM_INPUT_INVALID: "CHROMIUM_INPUT_INVALID",
18268
- CHROMIUM_WINDOW_HIDDEN: "CHROMIUM_WINDOW_HIDDEN",
18269
- CHROMIUM_VIEWPORT_READ_FAILED: "CHROMIUM_VIEWPORT_READ_FAILED",
18270
- CHROMIUM_SCREENSHOT_FAILED: "CHROMIUM_SCREENSHOT_FAILED",
18271
- CHROMIUM_STORAGE_EVAL_FAILED: "CHROMIUM_STORAGE_EVAL_FAILED",
18272
- CHROMIUM_TAB_NOT_FOUND: "CHROMIUM_TAB_NOT_FOUND",
18273
- CHROMIUM_TAB_OPEN_FAILED: "CHROMIUM_TAB_OPEN_FAILED",
18274
- CHROMIUM_DESCRIBE_FAILED: "CHROMIUM_DESCRIBE_FAILED",
18275
- CHROMIUM_ELECTRON_APP_PATH_INVALID: "CHROMIUM_ELECTRON_APP_PATH_INVALID",
18276
- CHROMIUM_ELECTRON_SPAWN_FAILED: "CHROMIUM_ELECTRON_SPAWN_FAILED",
18277
- CHROMIUM_ELECTRON_CDP_TIMEOUT: "CHROMIUM_ELECTRON_CDP_TIMEOUT",
18278
- CHROMIUM_ELECTRON_EXITED_BEFORE_READY: "CHROMIUM_ELECTRON_EXITED_BEFORE_READY",
18279
- KEYBOARD_KEY_UNSUPPORTED: "KEYBOARD_KEY_UNSUPPORTED",
18280
- KEYBOARD_CHARACTER_UNSUPPORTED: "KEYBOARD_CHARACTER_UNSUPPORTED",
18281
- SECRET_PLACEHOLDER_UNKNOWN: "SECRET_PLACEHOLDER_UNKNOWN",
18282
- SCREENSHOT_DIFF_INPUT_INVALID: "SCREENSHOT_DIFF_INPUT_INVALID",
18283
- BOOT_DEVICE_TARGET_SELECTION_INVALID: "BOOT_DEVICE_TARGET_SELECTION_INVALID",
18284
- BOOT_IOS_UNSUPPORTED_HOST: "BOOT_IOS_UNSUPPORTED_HOST",
18285
- BOOT_ANDROID_NO_AVDS: "BOOT_ANDROID_NO_AVDS",
18286
- BOOT_ANDROID_AVD_NOT_FOUND: "BOOT_ANDROID_AVD_NOT_FOUND",
18287
- BOOT_ANDROID_ADB_UNAVAILABLE: "BOOT_ANDROID_ADB_UNAVAILABLE",
18288
- BOOT_ANDROID_GPU_MODE_INVALID: "BOOT_ANDROID_GPU_MODE_INVALID",
18289
- BOOT_ANDROID_ADB_REGISTER_TIMEOUT: "BOOT_ANDROID_ADB_REGISTER_TIMEOUT",
18290
- BOOT_ANDROID_HOT_BOOT_FRAME_UNUSABLE: "BOOT_ANDROID_HOT_BOOT_FRAME_UNUSABLE",
18291
- BOOT_ANDROID_FIRST_FRAME_TIMEOUT: "BOOT_ANDROID_FIRST_FRAME_TIMEOUT",
18292
- BOOT_ANDROID_PACKAGE_MANAGER_UNAVAILABLE: "BOOT_ANDROID_PACKAGE_MANAGER_UNAVAILABLE",
18293
- BOOT_ANDROID_COLD_BOOT_FAILED: "BOOT_ANDROID_COLD_BOOT_FAILED"
18506
+ droppedKeys: []
18507
+ };
18508
+ const droppedKeys = [];
18509
+ const sanitizedProperties = Object.keys(properties).reduce((acc, key) => {
18510
+ if (RESERVED_EXCEPTION_STEP_KEYS.has(key)) {
18511
+ droppedKeys.push(key);
18512
+ return acc;
18513
+ }
18514
+ acc[key] = properties[key];
18515
+ return acc;
18516
+ }, {});
18517
+ return {
18518
+ sanitizedProperties,
18519
+ droppedKeys
18520
+ };
18521
+ }
18522
+ var ExceptionStepsBuffer = class {
18523
+ constructor(config2) {
18524
+ this._entries = [];
18525
+ this._totalBytes = 0;
18526
+ this._config = resolveExceptionStepsConfig(config2);
18527
+ }
18528
+ setConfig(config2) {
18529
+ this._config = resolveExceptionStepsConfig(config2);
18530
+ this._trimToMaxBytes();
18531
+ }
18532
+ add(step) {
18533
+ const serialized = normalizeAndSerializeStep(step);
18534
+ if (!serialized) return;
18535
+ const bytes = getUtf8ByteLength(serialized.json);
18536
+ if (bytes > this._config.max_bytes) return;
18537
+ this._entries.push({
18538
+ step: serialized.step,
18539
+ bytes
18540
+ });
18541
+ this._totalBytes += bytes;
18542
+ this._trimToMaxBytes();
18543
+ }
18544
+ getAttachable() {
18545
+ return this._entries.map((e) => e.step);
18546
+ }
18547
+ clear() {
18548
+ this._entries = [];
18549
+ this._totalBytes = 0;
18550
+ }
18551
+ size() {
18552
+ return this._entries.length;
18553
+ }
18554
+ _trimToMaxBytes() {
18555
+ while (this._totalBytes > this._config.max_bytes && this._entries.length > 0) {
18556
+ const evicted = this._entries.shift();
18557
+ if (evicted) this._totalBytes -= evicted.bytes;
18558
+ }
18559
+ }
18294
18560
  };
18561
+ function normalizePositiveInteger(input, fallback) {
18562
+ if (!isNumber(input) || input === 1 / 0 || input === -1 / 0) return fallback;
18563
+ const normalized = Math.floor(input);
18564
+ if (normalized < 0) return fallback;
18565
+ return normalized;
18566
+ }
18567
+ function normalizeAndSerializeStep(step) {
18568
+ const json = safeStringify(step);
18569
+ if (!json) return;
18570
+ try {
18571
+ const parsed = JSON.parse(json);
18572
+ if (!isObject2(parsed)) return;
18573
+ const parsedStep = parsed;
18574
+ const message = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.MESSAGE];
18575
+ const timestamp = parsedStep[EXCEPTION_STEP_INTERNAL_FIELDS.TIMESTAMP];
18576
+ if (!isString(message) || 0 === message.trim().length) return;
18577
+ if (!isString(timestamp) && !isNumber(timestamp)) return;
18578
+ return {
18579
+ step: parsedStep,
18580
+ json
18581
+ };
18582
+ } catch {
18583
+ return;
18584
+ }
18585
+ }
18586
+ function safeStringify(value) {
18587
+ const seen = /* @__PURE__ */ new WeakSet();
18588
+ try {
18589
+ return JSON.stringify(value, (_key, replacementValue) => {
18590
+ if ("bigint" == typeof replacementValue) return replacementValue.toString();
18591
+ if ("function" == typeof replacementValue || "symbol" == typeof replacementValue) return;
18592
+ if (replacementValue instanceof Date) return replacementValue.toISOString();
18593
+ if (replacementValue instanceof Error) return {
18594
+ name: replacementValue.name,
18595
+ message: replacementValue.message,
18596
+ stack: replacementValue.stack
18597
+ };
18598
+ if (replacementValue && "object" == typeof replacementValue) {
18599
+ if (seen.has(replacementValue)) return "[Circular]";
18600
+ seen.add(replacementValue);
18601
+ }
18602
+ return replacementValue;
18603
+ });
18604
+ } catch {
18605
+ return;
18606
+ }
18607
+ }
18608
+ function getUtf8ByteLength(value) {
18609
+ if ("undefined" != typeof TextEncoder) return new TextEncoder().encode(value).length;
18610
+ const encoded = encodeURIComponent(value);
18611
+ let byteLength = 0;
18612
+ for (let i = 0; i < encoded.length; i++) if ("%" === encoded[i]) {
18613
+ byteLength += 1;
18614
+ i += 2;
18615
+ } else byteLength += 1;
18616
+ return byteLength;
18617
+ }
18295
18618
 
18296
- // ../registry/src/errors.ts
18297
- var FAILURE_AREAS = ["cli", "http", "registry", "tool_server", "installer"];
18298
- var FAILURE_KINDS = [
18299
- "validation",
18300
- "not_found",
18301
- "dependency_missing",
18302
- "unsupported",
18303
- "not_implemented",
18304
- "timeout",
18305
- "network",
18306
- "subprocess",
18307
- "crash",
18308
- "unknown"
18309
- ];
18310
- var FAILURE_COMMANDS = [
18311
- "adb",
18312
- "emulator",
18313
- "vega",
18314
- "xcrun_simctl",
18315
- "xctrace",
18316
- "native_devtools",
18317
- "android_devtools",
18318
- "ax_service",
18319
- "simulator_server",
18320
- "ffmpeg",
18321
- "cdp",
18322
- "electron",
18323
- "npm",
18324
- "npx",
18325
- "unknown"
18326
- ];
18327
- var FAILURE_SIGNAL_NAMES = [
18328
- "SIGABRT",
18329
- "SIGHUP",
18330
- "SIGINT",
18331
- "SIGKILL",
18332
- "SIGQUIT",
18333
- "SIGTERM"
18334
- ];
18335
- var FAILURE_SPAWN_CODES = ["EACCES", "ENOENT", "EPERM", "ETIMEDOUT"];
18336
- var NETWORK_FAILURES = [
18337
- "timeout",
18338
- "connection_refused",
18339
- "connection_reset",
18340
- "invalid_response",
18341
- "other"
18342
- ];
18343
- var FALLBACK_SIGNAL = {
18344
- error_code: FAILURE_CODES.ARGENT_UNCLASSIFIED_FAILURE,
18345
- failure_stage: "unclassified",
18346
- failure_area: "registry",
18347
- error_kind: "unknown"
18348
- };
18349
- var FAILURE_SIGNAL_NAME_SET = new Set(FAILURE_SIGNAL_NAMES);
18350
- var FAILURE_SPAWN_CODE_SET = new Set(FAILURE_SPAWN_CODES);
18619
+ // ../../node_modules/posthog-node/dist/extensions/error-tracking/modifiers/context-lines.node.mjs
18620
+ import { createReadStream as createReadStream2 } from "node:fs";
18621
+ import { createInterface as createInterface2 } from "node:readline";
18622
+ var LRU_FILE_CONTENTS_CACHE = new error_tracking_exports.ReduceableCache(25);
18623
+ var LRU_FILE_CONTENTS_FS_READ_FAILED = new error_tracking_exports.ReduceableCache(20);
18351
18624
 
18352
- // ../registry/src/registry.ts
18353
- import { randomUUID as randomUUID4 } from "node:crypto";
18625
+ // ../../node_modules/posthog-node/dist/extensions/context/context.mjs
18626
+ import { AsyncLocalStorage } from "node:async_hooks";
18627
+
18628
+ // ../../node_modules/posthog-node/dist/extensions/sentry-integration.mjs
18629
+ var NAME = "posthog-node";
18630
+ function createEventProcessor(_posthog, { organization, projectId, prefix, severityAllowList = [
18631
+ "error"
18632
+ ], sendExceptionsToPostHog = true } = {}) {
18633
+ return (event) => {
18634
+ const shouldProcessLevel = "*" === severityAllowList || severityAllowList.includes(event.level);
18635
+ if (!shouldProcessLevel) return event;
18636
+ if (!event.tags) event.tags = {};
18637
+ const userId = event.tags[PostHogSentryIntegration.POSTHOG_ID_TAG];
18638
+ if (void 0 === userId) return event;
18639
+ const uiHost = _posthog.options.host ?? "https://us.i.posthog.com";
18640
+ const personUrl = new URL(`/project/${_posthog.apiKey}/person/${userId}`, uiHost).toString();
18641
+ event.tags["PostHog Person URL"] = personUrl;
18642
+ const exceptions = event.exception?.values || [];
18643
+ const exceptionList = exceptions.map((exception) => ({
18644
+ ...exception,
18645
+ stacktrace: exception.stacktrace ? {
18646
+ ...exception.stacktrace,
18647
+ type: "raw",
18648
+ frames: (exception.stacktrace.frames || []).map((frame) => ({
18649
+ ...frame,
18650
+ platform: "node:javascript"
18651
+ }))
18652
+ } : void 0
18653
+ }));
18654
+ const properties = {
18655
+ $exception_message: exceptions[0]?.value || event.message,
18656
+ $exception_type: exceptions[0]?.type,
18657
+ $exception_level: event.level,
18658
+ $exception_list: exceptionList,
18659
+ $sentry_event_id: event.event_id,
18660
+ $sentry_exception: event.exception,
18661
+ $sentry_exception_message: exceptions[0]?.value || event.message,
18662
+ $sentry_exception_type: exceptions[0]?.type,
18663
+ $sentry_tags: event.tags
18664
+ };
18665
+ if (organization && projectId) properties["$sentry_url"] = (prefix || "https://sentry.io/organizations/") + organization + "/issues/?project=" + projectId + "&query=" + event.event_id;
18666
+ if (sendExceptionsToPostHog) _posthog.capture({
18667
+ event: "$exception",
18668
+ distinctId: userId,
18669
+ properties
18670
+ });
18671
+ return event;
18672
+ };
18673
+ }
18674
+ var PostHogSentryIntegration = class {
18675
+ static #_ = this.POSTHOG_ID_TAG = "posthog_distinct_id";
18676
+ constructor(_posthog, organization, prefix, severityAllowList, sendExceptionsToPostHog) {
18677
+ this.name = NAME;
18678
+ this.name = NAME;
18679
+ this.setupOnce = function(addGlobalEventProcessor, getCurrentHub) {
18680
+ const projectId = getCurrentHub()?.getClient()?.getDsn()?.projectId;
18681
+ addGlobalEventProcessor(createEventProcessor(_posthog, {
18682
+ organization,
18683
+ projectId,
18684
+ prefix,
18685
+ severityAllowList,
18686
+ sendExceptionsToPostHog: sendExceptionsToPostHog ?? true
18687
+ }));
18688
+ };
18689
+ }
18690
+ };
18354
18691
 
18355
18692
  // ../telemetry/src/events.ts
18356
18693
  var PLATFORMS = [
@@ -19005,31 +19342,31 @@ var SESSION_ID2 = randomUUID5();
19005
19342
 
19006
19343
  // ../telemetry/src/identity.ts
19007
19344
  import * as crypto2 from "node:crypto";
19008
- import * as fs4 from "node:fs";
19009
- import * as path9 from "node:path";
19345
+ import * as fs5 from "node:fs";
19346
+ import * as path10 from "node:path";
19010
19347
 
19011
19348
  // ../telemetry/src/paths.ts
19012
- import * as path8 from "node:path";
19349
+ import * as path9 from "node:path";
19013
19350
 
19014
19351
  // ../telemetry/src/fingerprint.ts
19015
19352
  import { execFileSync as execFileSync2, spawn as spawn2 } from "node:child_process";
19016
19353
 
19017
19354
  // ../native-devtools-ios/src/index.ts
19018
- import * as path10 from "node:path";
19019
- import * as fs5 from "node:fs";
19020
- var DYLIB_DIR = process.env.ARGENT_NATIVE_DEVTOOLS_DIR ?? path10.join(__dirname, "..", "dylibs");
19021
- var BIN_DIR = process.env.ARGENT_SIMULATOR_SERVER_DIR ?? path10.join(__dirname, "..", "bin");
19022
- var DYLIB_TCP_DIR = process.env.ARGENT_NATIVE_DEVTOOLS_TCP_DIR ?? path10.join(DYLIB_DIR, "tcp");
19023
- var DYLIB_TVOS_DIR = path10.join(DYLIB_DIR, "tvos");
19355
+ import * as path11 from "node:path";
19356
+ import * as fs6 from "node:fs";
19357
+ var DYLIB_DIR = process.env.ARGENT_NATIVE_DEVTOOLS_DIR ?? path11.join(__dirname, "..", "dylibs");
19358
+ var BIN_DIR = process.env.ARGENT_SIMULATOR_SERVER_DIR ?? path11.join(__dirname, "..", "bin");
19359
+ var DYLIB_TCP_DIR = process.env.ARGENT_NATIVE_DEVTOOLS_TCP_DIR ?? path11.join(DYLIB_DIR, "tcp");
19360
+ var DYLIB_TVOS_DIR = path11.join(DYLIB_DIR, "tvos");
19024
19361
 
19025
19362
  // ../telemetry/src/consent.ts
19026
- import * as fs6 from "node:fs";
19363
+ import * as fs7 from "node:fs";
19027
19364
  var cache = { current: null };
19028
19365
  var sessionOverride = null;
19029
19366
  function readConfigOverride() {
19030
19367
  let stats;
19031
19368
  try {
19032
- stats = fs6.lstatSync(configFilePath());
19369
+ stats = fs7.lstatSync(configFilePath());
19033
19370
  } catch (err) {
19034
19371
  if (err.code === "ENOENT") {
19035
19372
  cache.current = { mtimeMs: null, fingerprint: null, enabledOverride: null };
@@ -19049,7 +19386,7 @@ function readConfigOverride() {
19049
19386
  }
19050
19387
  let parsedEnabled = null;
19051
19388
  try {
19052
- const raw = fs6.readFileSync(configFilePath(), "utf8");
19389
+ const raw = fs7.readFileSync(configFilePath(), "utf8");
19053
19390
  const json = JSON.parse(raw);
19054
19391
  if (json && typeof json === "object") {
19055
19392
  const t = json.telemetry;
@@ -19103,7 +19440,7 @@ function isEnabled(env = process.env) {
19103
19440
  }
19104
19441
 
19105
19442
  // ../telemetry/src/debug.ts
19106
- import * as fs7 from "node:fs";
19443
+ import * as fs8 from "node:fs";
19107
19444
 
19108
19445
  // ../telemetry/src/notice.ts
19109
19446
  var TELEMETRY_OPT_OUT_COMMAND = "argent telemetry disable";
@@ -19259,9 +19596,9 @@ function stepIndent(depth) {
19259
19596
  }
19260
19597
  function stepLabel(step) {
19261
19598
  if (step.kind === "echo") return step.message ?? "";
19262
- if (step.kind === "run") return `run ${step.flow ?? ""}`.trim();
19263
19599
  if (step.tool) return step.tool;
19264
19600
  if (step.target) return `${step.kind} ${step.target}`;
19601
+ if (step.kind === "run") return `run ${step.flow ?? ""}`.trim();
19265
19602
  return step.kind;
19266
19603
  }
19267
19604
  async function flowRunToMcpContent(result, ctx) {
@@ -19292,9 +19629,11 @@ async function flowRunToMcpContent(result, ctx) {
19292
19629
  }
19293
19630
  }
19294
19631
  if (result.ok !== void 0) {
19632
+ const counted = (result.passed ?? 0) + (result.failed ?? 0) + (result.errored ?? 0) + (result.skipped ?? 0);
19633
+ const note = result.ok && counted === 0 ? " (no test steps)" : "";
19295
19634
  blocks.push({
19296
19635
  type: "text",
19297
- text: `${result.ok ? "PASS" : "FAIL"} \u2014 ${result.passed ?? 0} passed, ${result.failed ?? 0} failed, ${result.errored ?? 0} errored, ${result.skipped ?? 0} skipped`
19636
+ text: `${result.ok ? "PASS" : "FAIL"} \u2014 ${result.passed ?? 0} passed, ${result.failed ?? 0} failed, ${result.errored ?? 0} errored, ${result.skipped ?? 0} skipped${note}`
19298
19637
  });
19299
19638
  } else {
19300
19639
  blocks.push({ type: "text", text: `Flow "${result.flow}" complete.` });
@@ -19409,12 +19748,12 @@ function toMcpTool(t) {
19409
19748
  }
19410
19749
 
19411
19750
  // ../argent-mcp/src/installed-version.ts
19412
- import * as fs8 from "node:fs";
19413
- import * as path11 from "node:path";
19751
+ import * as fs9 from "node:fs";
19752
+ import * as path12 from "node:path";
19414
19753
  function getInstalledVersion() {
19415
19754
  try {
19416
- const pkgPath = path11.resolve(import.meta.dirname, "..", "package.json");
19417
- const pkg = JSON.parse(fs8.readFileSync(pkgPath, "utf8"));
19755
+ const pkgPath = path12.resolve(import.meta.dirname, "..", "package.json");
19756
+ const pkg = JSON.parse(fs9.readFileSync(pkgPath, "utf8"));
19418
19757
  return pkg.version ?? "unknown";
19419
19758
  } catch {
19420
19759
  return "unknown";