@eve-horizon/cli 0.2.33 → 0.2.35

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.
Files changed (2) hide show
  1. package/dist/index.js +425 -330
  2. package/package.json +8 -8
package/dist/index.js CHANGED
@@ -8768,19 +8768,19 @@ var require_module_details_from_path = __commonJS({
8768
8768
  basedir += segments[i] + sep;
8769
8769
  }
8770
8770
  }
8771
- var path6 = "";
8771
+ var path7 = "";
8772
8772
  var lastSegmentIndex = segments.length - 1;
8773
8773
  for (var i2 = index + offset; i2 <= lastSegmentIndex; i2++) {
8774
8774
  if (i2 === lastSegmentIndex) {
8775
- path6 += segments[i2];
8775
+ path7 += segments[i2];
8776
8776
  } else {
8777
- path6 += segments[i2] + sep;
8777
+ path7 += segments[i2] + sep;
8778
8778
  }
8779
8779
  }
8780
8780
  return {
8781
8781
  name,
8782
8782
  basedir,
8783
- path: path6
8783
+ path: path7
8784
8784
  };
8785
8785
  };
8786
8786
  }
@@ -8886,8 +8886,8 @@ var require_path_parse = __commonJS({
8886
8886
  // ../../node_modules/.pnpm/resolve@1.22.11/node_modules/resolve/lib/node-modules-paths.js
8887
8887
  var require_node_modules_paths = __commonJS({
8888
8888
  "../../node_modules/.pnpm/resolve@1.22.11/node_modules/resolve/lib/node-modules-paths.js"(exports2, module2) {
8889
- var path6 = require("path");
8890
- var parse3 = path6.parse || require_path_parse();
8889
+ var path7 = require("path");
8890
+ var parse3 = path7.parse || require_path_parse();
8891
8891
  var driveLetterRegex = /^([A-Za-z]:)/;
8892
8892
  var uncPathRegex = /^\\\\/;
8893
8893
  var getNodeModulesDirs = function getNodeModulesDirs2(absoluteStart, modules) {
@@ -8905,7 +8905,7 @@ var require_node_modules_paths = __commonJS({
8905
8905
  }
8906
8906
  return paths.reduce(function(dirs, aPath) {
8907
8907
  return dirs.concat(modules.map(function(moduleDir) {
8908
- return path6.resolve(prefix, aPath, moduleDir);
8908
+ return path7.resolve(prefix, aPath, moduleDir);
8909
8909
  }));
8910
8910
  }, []);
8911
8911
  };
@@ -9268,7 +9268,7 @@ var require_async = __commonJS({
9268
9268
  "../../node_modules/.pnpm/resolve@1.22.11/node_modules/resolve/lib/async.js"(exports2, module2) {
9269
9269
  var fs5 = require("fs");
9270
9270
  var getHomedir = require_homedir();
9271
- var path6 = require("path");
9271
+ var path7 = require("path");
9272
9272
  var caller = require_caller();
9273
9273
  var nodeModulesPaths = require_node_modules_paths();
9274
9274
  var normalizeOptions = require_normalize_options();
@@ -9280,8 +9280,8 @@ var require_async = __commonJS({
9280
9280
  var homedir6 = getHomedir();
9281
9281
  var defaultPaths = function() {
9282
9282
  return [
9283
- path6.join(homedir6, ".node_modules"),
9284
- path6.join(homedir6, ".node_libraries")
9283
+ path7.join(homedir6, ".node_modules"),
9284
+ path7.join(homedir6, ".node_libraries")
9285
9285
  ];
9286
9286
  };
9287
9287
  var defaultIsFile = function isFile(file, cb) {
@@ -9331,7 +9331,7 @@ var require_async = __commonJS({
9331
9331
  var getPackageCandidates = function getPackageCandidates2(x, start, opts) {
9332
9332
  var dirs = nodeModulesPaths(start, opts, x);
9333
9333
  for (var i = 0; i < dirs.length; i++) {
9334
- dirs[i] = path6.join(dirs[i], x);
9334
+ dirs[i] = path7.join(dirs[i], x);
9335
9335
  }
9336
9336
  return dirs;
9337
9337
  };
@@ -9363,10 +9363,10 @@ var require_async = __commonJS({
9363
9363
  var packageIterator = opts.packageIterator;
9364
9364
  var extensions = opts.extensions || [".js"];
9365
9365
  var includeCoreModules = opts.includeCoreModules !== false;
9366
- var basedir = opts.basedir || path6.dirname(caller());
9366
+ var basedir = opts.basedir || path7.dirname(caller());
9367
9367
  var parent = opts.filename || basedir;
9368
9368
  opts.paths = opts.paths || defaultPaths();
9369
- var absoluteStart = path6.resolve(basedir);
9369
+ var absoluteStart = path7.resolve(basedir);
9370
9370
  maybeRealpath(
9371
9371
  realpath,
9372
9372
  absoluteStart,
@@ -9379,7 +9379,7 @@ var require_async = __commonJS({
9379
9379
  var res;
9380
9380
  function init(basedir2) {
9381
9381
  if (relativePathRegex.test(x)) {
9382
- res = path6.resolve(basedir2, x);
9382
+ res = path7.resolve(basedir2, x);
9383
9383
  if (x === "." || x === ".." || x.slice(-1) === "/") res += "/";
9384
9384
  if (x.slice(-1) === "/" && res === basedir2) {
9385
9385
  loadAsDirectory(res, opts.package, onfile);
@@ -9437,17 +9437,17 @@ var require_async = __commonJS({
9437
9437
  var file = x3 + exts2[0];
9438
9438
  var pkg = loadPackage;
9439
9439
  if (pkg) onpkg(null, pkg);
9440
- else loadpkg(path6.dirname(file), onpkg);
9440
+ else loadpkg(path7.dirname(file), onpkg);
9441
9441
  function onpkg(err2, pkg_, dir) {
9442
9442
  pkg = pkg_;
9443
9443
  if (err2) return cb2(err2);
9444
9444
  if (dir && pkg && opts.pathFilter) {
9445
- var rfile = path6.relative(dir, file);
9445
+ var rfile = path7.relative(dir, file);
9446
9446
  var rel = rfile.slice(0, rfile.length - exts2[0].length);
9447
9447
  var r = opts.pathFilter(pkg, x3, rel);
9448
9448
  if (r) return load(
9449
9449
  [""].concat(extensions.slice()),
9450
- path6.resolve(dir, r),
9450
+ path7.resolve(dir, r),
9451
9451
  pkg
9452
9452
  );
9453
9453
  }
@@ -9467,10 +9467,10 @@ var require_async = __commonJS({
9467
9467
  }
9468
9468
  if (nodeModulesRegex.test(dir)) return cb2(null);
9469
9469
  maybeRealpath(realpath, dir, opts, function(unwrapErr, pkgdir) {
9470
- if (unwrapErr) return loadpkg(path6.dirname(dir), cb2);
9471
- var pkgfile = path6.join(pkgdir, "package.json");
9470
+ if (unwrapErr) return loadpkg(path7.dirname(dir), cb2);
9471
+ var pkgfile = path7.join(pkgdir, "package.json");
9472
9472
  isFile(pkgfile, function(err2, ex) {
9473
- if (!ex) return loadpkg(path6.dirname(dir), cb2);
9473
+ if (!ex) return loadpkg(path7.dirname(dir), cb2);
9474
9474
  readPackage(readFile, pkgfile, function(err3, pkgParam) {
9475
9475
  if (err3) cb2(err3);
9476
9476
  var pkg = pkgParam;
@@ -9491,10 +9491,10 @@ var require_async = __commonJS({
9491
9491
  }
9492
9492
  maybeRealpath(realpath, x2, opts, function(unwrapErr, pkgdir) {
9493
9493
  if (unwrapErr) return cb2(unwrapErr);
9494
- var pkgfile = path6.join(pkgdir, "package.json");
9494
+ var pkgfile = path7.join(pkgdir, "package.json");
9495
9495
  isFile(pkgfile, function(err2, ex) {
9496
9496
  if (err2) return cb2(err2);
9497
- if (!ex) return loadAsFile(path6.join(x2, "index"), fpkg, cb2);
9497
+ if (!ex) return loadAsFile(path7.join(x2, "index"), fpkg, cb2);
9498
9498
  readPackage(readFile, pkgfile, function(err3, pkgParam) {
9499
9499
  if (err3) return cb2(err3);
9500
9500
  var pkg = pkgParam;
@@ -9510,20 +9510,20 @@ var require_async = __commonJS({
9510
9510
  if (pkg.main === "." || pkg.main === "./") {
9511
9511
  pkg.main = "index";
9512
9512
  }
9513
- loadAsFile(path6.resolve(x2, pkg.main), pkg, function(err4, m, pkg2) {
9513
+ loadAsFile(path7.resolve(x2, pkg.main), pkg, function(err4, m, pkg2) {
9514
9514
  if (err4) return cb2(err4);
9515
9515
  if (m) return cb2(null, m, pkg2);
9516
- if (!pkg2) return loadAsFile(path6.join(x2, "index"), pkg2, cb2);
9517
- var dir = path6.resolve(x2, pkg2.main);
9516
+ if (!pkg2) return loadAsFile(path7.join(x2, "index"), pkg2, cb2);
9517
+ var dir = path7.resolve(x2, pkg2.main);
9518
9518
  loadAsDirectory(dir, pkg2, function(err5, n, pkg3) {
9519
9519
  if (err5) return cb2(err5);
9520
9520
  if (n) return cb2(null, n, pkg3);
9521
- loadAsFile(path6.join(x2, "index"), pkg3, cb2);
9521
+ loadAsFile(path7.join(x2, "index"), pkg3, cb2);
9522
9522
  });
9523
9523
  });
9524
9524
  return;
9525
9525
  }
9526
- loadAsFile(path6.join(x2, "/index"), pkg, cb2);
9526
+ loadAsFile(path7.join(x2, "/index"), pkg, cb2);
9527
9527
  });
9528
9528
  });
9529
9529
  });
@@ -9531,7 +9531,7 @@ var require_async = __commonJS({
9531
9531
  function processDirs(cb2, dirs) {
9532
9532
  if (dirs.length === 0) return cb2(null, void 0);
9533
9533
  var dir = dirs[0];
9534
- isDirectory(path6.dirname(dir), isdir);
9534
+ isDirectory(path7.dirname(dir), isdir);
9535
9535
  function isdir(err2, isdir2) {
9536
9536
  if (err2) return cb2(err2);
9537
9537
  if (!isdir2) return processDirs(cb2, dirs.slice(1));
@@ -9761,7 +9761,7 @@ var require_sync = __commonJS({
9761
9761
  "../../node_modules/.pnpm/resolve@1.22.11/node_modules/resolve/lib/sync.js"(exports2, module2) {
9762
9762
  var isCore = require_is_core_module();
9763
9763
  var fs5 = require("fs");
9764
- var path6 = require("path");
9764
+ var path7 = require("path");
9765
9765
  var getHomedir = require_homedir();
9766
9766
  var caller = require_caller();
9767
9767
  var nodeModulesPaths = require_node_modules_paths();
@@ -9773,8 +9773,8 @@ var require_sync = __commonJS({
9773
9773
  var homedir6 = getHomedir();
9774
9774
  var defaultPaths = function() {
9775
9775
  return [
9776
- path6.join(homedir6, ".node_modules"),
9777
- path6.join(homedir6, ".node_libraries")
9776
+ path7.join(homedir6, ".node_modules"),
9777
+ path7.join(homedir6, ".node_libraries")
9778
9778
  ];
9779
9779
  };
9780
9780
  var defaultIsFile = function isFile(file) {
@@ -9811,8 +9811,8 @@ var require_sync = __commonJS({
9811
9811
  }
9812
9812
  return x;
9813
9813
  };
9814
- var defaultReadPackageSync = function defaultReadPackageSync2(readFileSync23, pkgfile) {
9815
- var body = readFileSync23(pkgfile);
9814
+ var defaultReadPackageSync = function defaultReadPackageSync2(readFileSync24, pkgfile) {
9815
+ var body = readFileSync24(pkgfile);
9816
9816
  try {
9817
9817
  var pkg = JSON.parse(body);
9818
9818
  return pkg;
@@ -9822,7 +9822,7 @@ var require_sync = __commonJS({
9822
9822
  var getPackageCandidates = function getPackageCandidates2(x, start, opts) {
9823
9823
  var dirs = nodeModulesPaths(start, opts, x);
9824
9824
  for (var i = 0; i < dirs.length; i++) {
9825
- dirs[i] = path6.join(dirs[i], x);
9825
+ dirs[i] = path7.join(dirs[i], x);
9826
9826
  }
9827
9827
  return dirs;
9828
9828
  };
@@ -9832,7 +9832,7 @@ var require_sync = __commonJS({
9832
9832
  }
9833
9833
  var opts = normalizeOptions(x, options);
9834
9834
  var isFile = opts.isFile || defaultIsFile;
9835
- var readFileSync23 = opts.readFileSync || fs5.readFileSync;
9835
+ var readFileSync24 = opts.readFileSync || fs5.readFileSync;
9836
9836
  var isDirectory = opts.isDirectory || defaultIsDir;
9837
9837
  var realpathSync = opts.realpathSync || defaultRealpathSync;
9838
9838
  var readPackageSync = opts.readPackageSync || defaultReadPackageSync;
@@ -9842,12 +9842,12 @@ var require_sync = __commonJS({
9842
9842
  var packageIterator = opts.packageIterator;
9843
9843
  var extensions = opts.extensions || [".js"];
9844
9844
  var includeCoreModules = opts.includeCoreModules !== false;
9845
- var basedir = opts.basedir || path6.dirname(caller());
9845
+ var basedir = opts.basedir || path7.dirname(caller());
9846
9846
  var parent = opts.filename || basedir;
9847
9847
  opts.paths = opts.paths || defaultPaths();
9848
- var absoluteStart = maybeRealpathSync(realpathSync, path6.resolve(basedir), opts);
9848
+ var absoluteStart = maybeRealpathSync(realpathSync, path7.resolve(basedir), opts);
9849
9849
  if (relativePathRegex.test(x)) {
9850
- var res = path6.resolve(absoluteStart, x);
9850
+ var res = path7.resolve(absoluteStart, x);
9851
9851
  if (x === "." || x === ".." || x.slice(-1) === "/") res += "/";
9852
9852
  var m = loadAsFileSync(res) || loadAsDirectorySync(res);
9853
9853
  if (m) return maybeRealpathSync(realpathSync, m, opts);
@@ -9861,12 +9861,12 @@ var require_sync = __commonJS({
9861
9861
  err.code = "MODULE_NOT_FOUND";
9862
9862
  throw err;
9863
9863
  function loadAsFileSync(x2) {
9864
- var pkg = loadpkg(path6.dirname(x2));
9864
+ var pkg = loadpkg(path7.dirname(x2));
9865
9865
  if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {
9866
- var rfile = path6.relative(pkg.dir, x2);
9866
+ var rfile = path7.relative(pkg.dir, x2);
9867
9867
  var r = opts.pathFilter(pkg.pkg, x2, rfile);
9868
9868
  if (r) {
9869
- x2 = path6.resolve(pkg.dir, r);
9869
+ x2 = path7.resolve(pkg.dir, r);
9870
9870
  }
9871
9871
  }
9872
9872
  if (isFile(x2)) {
@@ -9885,11 +9885,11 @@ var require_sync = __commonJS({
9885
9885
  return;
9886
9886
  }
9887
9887
  if (nodeModulesRegex.test(dir)) return;
9888
- var pkgfile = path6.join(maybeRealpathSync(realpathSync, dir, opts), "package.json");
9888
+ var pkgfile = path7.join(maybeRealpathSync(realpathSync, dir, opts), "package.json");
9889
9889
  if (!isFile(pkgfile)) {
9890
- return loadpkg(path6.dirname(dir));
9890
+ return loadpkg(path7.dirname(dir));
9891
9891
  }
9892
- var pkg = readPackageSync(readFileSync23, pkgfile);
9892
+ var pkg = readPackageSync(readFileSync24, pkgfile);
9893
9893
  if (pkg && opts.packageFilter) {
9894
9894
  pkg = opts.packageFilter(
9895
9895
  pkg,
@@ -9900,10 +9900,10 @@ var require_sync = __commonJS({
9900
9900
  return { pkg, dir };
9901
9901
  }
9902
9902
  function loadAsDirectorySync(x2) {
9903
- var pkgfile = path6.join(maybeRealpathSync(realpathSync, x2, opts), "/package.json");
9903
+ var pkgfile = path7.join(maybeRealpathSync(realpathSync, x2, opts), "/package.json");
9904
9904
  if (isFile(pkgfile)) {
9905
9905
  try {
9906
- var pkg = readPackageSync(readFileSync23, pkgfile);
9906
+ var pkg = readPackageSync(readFileSync24, pkgfile);
9907
9907
  } catch (e) {
9908
9908
  }
9909
9909
  if (pkg && opts.packageFilter) {
@@ -9923,15 +9923,15 @@ var require_sync = __commonJS({
9923
9923
  pkg.main = "index";
9924
9924
  }
9925
9925
  try {
9926
- var m2 = loadAsFileSync(path6.resolve(x2, pkg.main));
9926
+ var m2 = loadAsFileSync(path7.resolve(x2, pkg.main));
9927
9927
  if (m2) return m2;
9928
- var n2 = loadAsDirectorySync(path6.resolve(x2, pkg.main));
9928
+ var n2 = loadAsDirectorySync(path7.resolve(x2, pkg.main));
9929
9929
  if (n2) return n2;
9930
9930
  } catch (e) {
9931
9931
  }
9932
9932
  }
9933
9933
  }
9934
- return loadAsFileSync(path6.join(x2, "/index"));
9934
+ return loadAsFileSync(path7.join(x2, "/index"));
9935
9935
  }
9936
9936
  function loadNodeModulesSync(x2, start) {
9937
9937
  var thunk = function() {
@@ -9940,7 +9940,7 @@ var require_sync = __commonJS({
9940
9940
  var dirs = packageIterator ? packageIterator(x2, start, thunk, opts) : thunk();
9941
9941
  for (var i = 0; i < dirs.length; i++) {
9942
9942
  var dir = dirs[i];
9943
- if (isDirectory(path6.dirname(dir))) {
9943
+ if (isDirectory(path7.dirname(dir))) {
9944
9944
  var m2 = loadAsFileSync(dir);
9945
9945
  if (m2) return m2;
9946
9946
  var n2 = loadAsDirectorySync(dir);
@@ -10031,7 +10031,7 @@ var require_package = __commonJS({
10031
10031
  var require_require_in_the_middle = __commonJS({
10032
10032
  "../../node_modules/.pnpm/require-in-the-middle@7.5.2/node_modules/require-in-the-middle/index.js"(exports2, module2) {
10033
10033
  "use strict";
10034
- var path6 = require("path");
10034
+ var path7 = require("path");
10035
10035
  var Module = require("module");
10036
10036
  var debug = require_src3()("require-in-the-middle");
10037
10037
  var moduleDetailsFromPath = require_module_details_from_path();
@@ -10083,7 +10083,7 @@ var require_require_in_the_middle = __commonJS({
10083
10083
  }
10084
10084
  return _resolve(moduleName, basedir);
10085
10085
  }
10086
- var normalize = /([/\\]index)?(\.js)?$/;
10086
+ var normalize2 = /([/\\]index)?(\.js)?$/;
10087
10087
  var ExportsCache = class {
10088
10088
  constructor() {
10089
10089
  this._localCache = /* @__PURE__ */ new Map();
@@ -10205,7 +10205,7 @@ var require_require_in_the_middle = __commonJS({
10205
10205
  }
10206
10206
  moduleName = filename;
10207
10207
  } else if (hasWhitelist === true && modules.includes(filename)) {
10208
- const parsedPath = path6.parse(filename);
10208
+ const parsedPath = path7.parse(filename);
10209
10209
  moduleName = parsedPath.name;
10210
10210
  basedir = parsedPath.dir;
10211
10211
  } else {
@@ -10243,7 +10243,7 @@ var require_require_in_the_middle = __commonJS({
10243
10243
  }
10244
10244
  if (res !== filename) {
10245
10245
  if (internals === true) {
10246
- moduleName = moduleName + path6.sep + path6.relative(basedir, filename);
10246
+ moduleName = moduleName + path7.sep + path7.relative(basedir, filename);
10247
10247
  debug("preparing to process require of internal file: %s", moduleName);
10248
10248
  } else {
10249
10249
  debug("ignoring require of non-main module file: %s", res);
@@ -10279,8 +10279,8 @@ var require_require_in_the_middle = __commonJS({
10279
10279
  }
10280
10280
  };
10281
10281
  function resolveModuleName(stat) {
10282
- const normalizedPath = path6.sep !== "/" ? stat.path.split(path6.sep).join("/") : stat.path;
10283
- return path6.posix.join(stat.name, normalizedPath).replace(normalize, "");
10282
+ const normalizedPath = path7.sep !== "/" ? stat.path.split(path7.sep).join("/") : stat.path;
10283
+ return path7.posix.join(stat.name, normalizedPath).replace(normalize2, "");
10284
10284
  }
10285
10285
  }
10286
10286
  });
@@ -10369,7 +10369,7 @@ var require_RequireInTheMiddleSingleton = __commonJS({
10369
10369
  Object.defineProperty(exports2, "__esModule", { value: true });
10370
10370
  exports2.RequireInTheMiddleSingleton = void 0;
10371
10371
  var require_in_the_middle_1 = require_require_in_the_middle();
10372
- var path6 = require("path");
10372
+ var path7 = require("path");
10373
10373
  var ModuleNameTrie_1 = require_ModuleNameTrie();
10374
10374
  var isMocha = [
10375
10375
  "afterEach",
@@ -10433,7 +10433,7 @@ var require_RequireInTheMiddleSingleton = __commonJS({
10433
10433
  };
10434
10434
  exports2.RequireInTheMiddleSingleton = RequireInTheMiddleSingleton;
10435
10435
  function normalizePathSeparators(moduleNameOrPath) {
10436
- return path6.sep !== ModuleNameTrie_1.ModuleNameSeparator ? moduleNameOrPath.split(path6.sep).join(ModuleNameTrie_1.ModuleNameSeparator) : moduleNameOrPath;
10436
+ return path7.sep !== ModuleNameTrie_1.ModuleNameSeparator ? moduleNameOrPath.split(path7.sep).join(ModuleNameTrie_1.ModuleNameSeparator) : moduleNameOrPath;
10437
10437
  }
10438
10438
  }
10439
10439
  });
@@ -10493,7 +10493,7 @@ var require_register = __commonJS({
10493
10493
  // ../../node_modules/.pnpm/import-in-the-middle@1.15.0/node_modules/import-in-the-middle/index.js
10494
10494
  var require_import_in_the_middle = __commonJS({
10495
10495
  "../../node_modules/.pnpm/import-in-the-middle@1.15.0/node_modules/import-in-the-middle/index.js"(exports2, module2) {
10496
- var path6 = require("path");
10496
+ var path7 = require("path");
10497
10497
  var parse3 = require_module_details_from_path();
10498
10498
  var { fileURLToPath } = require("url");
10499
10499
  var { MessageChannel } = require("worker_threads");
@@ -10589,7 +10589,7 @@ var require_import_in_the_middle = __commonJS({
10589
10589
  if (moduleName === name) {
10590
10590
  if (baseDir) {
10591
10591
  if (internals) {
10592
- name = name + path6.sep + path6.relative(baseDir, fileURLToPath(filename));
10592
+ name = name + path7.sep + path7.relative(baseDir, fileURLToPath(filename));
10593
10593
  } else {
10594
10594
  if (!getExperimentalPatchInternals() && !baseDir.endsWith(specifiers.get(filename))) continue;
10595
10595
  }
@@ -10665,7 +10665,7 @@ var require_instrumentation2 = __commonJS({
10665
10665
  "use strict";
10666
10666
  Object.defineProperty(exports2, "__esModule", { value: true });
10667
10667
  exports2.InstrumentationBase = void 0;
10668
- var path6 = require("path");
10668
+ var path7 = require("path");
10669
10669
  var util_1 = require("util");
10670
10670
  var semver_1 = require_semver2();
10671
10671
  var shimmer_1 = require_shimmer();
@@ -10762,7 +10762,7 @@ var require_instrumentation2 = __commonJS({
10762
10762
  }
10763
10763
  _extractPackageVersion(baseDir) {
10764
10764
  try {
10765
- const json = (0, fs_1.readFileSync)(path6.join(baseDir, "package.json"), {
10765
+ const json = (0, fs_1.readFileSync)(path7.join(baseDir, "package.json"), {
10766
10766
  encoding: "utf8"
10767
10767
  });
10768
10768
  const version2 = JSON.parse(json).version;
@@ -10805,7 +10805,7 @@ var require_instrumentation2 = __commonJS({
10805
10805
  return exports3;
10806
10806
  }
10807
10807
  const files = (_a = module3.files) !== null && _a !== void 0 ? _a : [];
10808
- const normalizedName = path6.normalize(name);
10808
+ const normalizedName = path7.normalize(name);
10809
10809
  const supportedFileInstrumentations = files.filter((f) => f.name === normalizedName).filter((f) => isSupported(f.supportedVersions, version2, module3.includePrerelease));
10810
10810
  return supportedFileInstrumentations.reduce((patchedExports, file) => {
10811
10811
  file.moduleExports = patchedExports;
@@ -10851,8 +10851,8 @@ var require_instrumentation2 = __commonJS({
10851
10851
  this._warnOnPreloadedModules();
10852
10852
  for (const module3 of this._modules) {
10853
10853
  const hookFn = (exports3, name, baseDir) => {
10854
- if (!baseDir && path6.isAbsolute(name)) {
10855
- const parsedPath = path6.parse(name);
10854
+ if (!baseDir && path7.isAbsolute(name)) {
10855
+ const parsedPath = path7.parse(name);
10856
10856
  name = parsedPath.name;
10857
10857
  baseDir = parsedPath.dir;
10858
10858
  }
@@ -10861,7 +10861,7 @@ var require_instrumentation2 = __commonJS({
10861
10861
  const onRequire = (exports3, name, baseDir) => {
10862
10862
  return this._onRequire(module3, exports3, name, baseDir);
10863
10863
  };
10864
- const hook = path6.isAbsolute(module3.name) ? new require_in_the_middle_1.Hook([module3.name], { internals: true }, onRequire) : this._requireInTheMiddleSingleton.register(module3.name, onRequire);
10864
+ const hook = path7.isAbsolute(module3.name) ? new require_in_the_middle_1.Hook([module3.name], { internals: true }, onRequire) : this._requireInTheMiddleSingleton.register(module3.name, onRequire);
10865
10865
  this._hooks.push(hook);
10866
10866
  const esmHook = new import_in_the_middle_1.Hook([module3.name], { internals: false }, hookFn);
10867
10867
  this._hooks.push(esmHook);
@@ -18108,7 +18108,7 @@ var require_instrumentation3 = __commonJS({
18108
18108
  "use strict";
18109
18109
  Object.defineProperty(exports2, "__esModule", { value: true });
18110
18110
  exports2.AwsLambdaInstrumentation = exports2.lambdaMaxInitInMilliseconds = void 0;
18111
- var path6 = require("path");
18111
+ var path7 = require("path");
18112
18112
  var fs5 = require("fs");
18113
18113
  var instrumentation_1 = require_src4();
18114
18114
  var api_1 = (init_esm(), __toCommonJS(esm_exports));
@@ -18136,10 +18136,10 @@ var require_instrumentation3 = __commonJS({
18136
18136
  this._diag.debug("Skipping lambda instrumentation: no _HANDLER/lambdaHandler or LAMBDA_TASK_ROOT.", { taskRoot, handlerDef });
18137
18137
  return [];
18138
18138
  }
18139
- const handler = path6.basename(handlerDef);
18139
+ const handler = path7.basename(handlerDef);
18140
18140
  const moduleRoot = handlerDef.substr(0, handlerDef.length - handler.length);
18141
18141
  const [module3, functionName] = handler.split(".", 2);
18142
- let filename = path6.resolve(taskRoot, moduleRoot, module3);
18142
+ let filename = path7.resolve(taskRoot, moduleRoot, module3);
18143
18143
  if (!filename.endsWith(".js")) {
18144
18144
  try {
18145
18145
  fs5.statSync(`${filename}.js`);
@@ -21306,16 +21306,16 @@ var require_utils7 = __commonJS({
21306
21306
  request[internal_types_1._LAYERS_STORE_PROPERTY].push(value);
21307
21307
  };
21308
21308
  exports2.storeLayerPath = storeLayerPath;
21309
- var getRouterPath = (path6, layer) => {
21309
+ var getRouterPath = (path7, layer) => {
21310
21310
  var _a, _b, _c, _d;
21311
21311
  const stackLayer = (_b = (_a = layer.handle) === null || _a === void 0 ? void 0 : _a.stack) === null || _b === void 0 ? void 0 : _b[0];
21312
21312
  if ((_c = stackLayer === null || stackLayer === void 0 ? void 0 : stackLayer.route) === null || _c === void 0 ? void 0 : _c.path) {
21313
- return `${path6}${stackLayer.route.path}`;
21313
+ return `${path7}${stackLayer.route.path}`;
21314
21314
  }
21315
21315
  if ((_d = stackLayer === null || stackLayer === void 0 ? void 0 : stackLayer.handle) === null || _d === void 0 ? void 0 : _d.stack) {
21316
- return (0, exports2.getRouterPath)(path6, stackLayer);
21316
+ return (0, exports2.getRouterPath)(path7, stackLayer);
21317
21317
  }
21318
- return path6;
21318
+ return path7;
21319
21319
  };
21320
21320
  exports2.getRouterPath = getRouterPath;
21321
21321
  var getLayerMetadata = (route, layer, layerPath) => {
@@ -21515,7 +21515,7 @@ var require_instrumentation10 = __commonJS({
21515
21515
  return original;
21516
21516
  const patched = function(req, res) {
21517
21517
  (0, utils_1.storeLayerPath)(req, layerPath);
21518
- const route = req[internal_types_1._LAYERS_STORE_PROPERTY].filter((path6) => path6 !== "/" && path6 !== "/*").join("").replace(/\/{2,}/g, "/");
21518
+ const route = req[internal_types_1._LAYERS_STORE_PROPERTY].filter((path7) => path7 !== "/" && path7 !== "/*").join("").replace(/\/{2,}/g, "/");
21519
21519
  const attributes = {
21520
21520
  [semantic_conventions_1.SEMATTRS_HTTP_ROUTE]: route.length > 0 ? route : "/"
21521
21521
  };
@@ -22393,8 +22393,8 @@ var require_instrumentation12 = __commonJS({
22393
22393
  }
22394
22394
  };
22395
22395
  const functionWithOriginalProperties = patchedFunctionWithOriginalProperties(patchedFunction, original);
22396
- const promisified = function(path6) {
22397
- return new Promise((resolve8) => functionWithOriginalProperties(path6, resolve8));
22396
+ const promisified = function(path7) {
22397
+ return new Promise((resolve8) => functionWithOriginalProperties(path7, resolve8));
22398
22398
  };
22399
22399
  Object.defineProperty(promisified, "name", { value: functionName });
22400
22400
  Object.defineProperty(functionWithOriginalProperties, util_1.promisify.custom, {
@@ -22769,26 +22769,26 @@ var require_utils10 = __commonJS({
22769
22769
  span.setAttribute(AttributeNames_1.AttributeNames.SOURCE, source);
22770
22770
  }
22771
22771
  exports2.addSpanSource = addSpanSource;
22772
- function createFieldIfNotExists(tracer, getConfig, contextValue, info, path6) {
22773
- let field = getField(contextValue, path6);
22772
+ function createFieldIfNotExists(tracer, getConfig, contextValue, info, path7) {
22773
+ let field = getField(contextValue, path7);
22774
22774
  let spanAdded = false;
22775
22775
  if (!field) {
22776
22776
  spanAdded = true;
22777
- const parent = getParentField(contextValue, path6);
22777
+ const parent = getParentField(contextValue, path7);
22778
22778
  field = {
22779
22779
  parent,
22780
- span: createResolverSpan(tracer, getConfig, contextValue, info, path6, parent.span),
22780
+ span: createResolverSpan(tracer, getConfig, contextValue, info, path7, parent.span),
22781
22781
  error: null
22782
22782
  };
22783
- addField(contextValue, path6, field);
22783
+ addField(contextValue, path7, field);
22784
22784
  }
22785
22785
  return { spanAdded, field };
22786
22786
  }
22787
- function createResolverSpan(tracer, getConfig, contextValue, info, path6, parentSpan) {
22787
+ function createResolverSpan(tracer, getConfig, contextValue, info, path7, parentSpan) {
22788
22788
  var _a, _b;
22789
22789
  const attributes = {
22790
22790
  [AttributeNames_1.AttributeNames.FIELD_NAME]: info.fieldName,
22791
- [AttributeNames_1.AttributeNames.FIELD_PATH]: path6.join("."),
22791
+ [AttributeNames_1.AttributeNames.FIELD_PATH]: path7.join("."),
22792
22792
  [AttributeNames_1.AttributeNames.FIELD_TYPE]: info.returnType.toString()
22793
22793
  };
22794
22794
  const span = tracer.startSpan(`${enum_1.SpanNames.RESOLVE} ${attributes[AttributeNames_1.AttributeNames.FIELD_PATH]}`, {
@@ -22828,15 +22828,15 @@ var require_utils10 = __commonJS({
22828
22828
  }
22829
22829
  }
22830
22830
  exports2.getOperation = getOperation;
22831
- function addField(contextValue, path6, field) {
22832
- return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path6.join(".")] = field;
22831
+ function addField(contextValue, path7, field) {
22832
+ return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path7.join(".")] = field;
22833
22833
  }
22834
- function getField(contextValue, path6) {
22835
- return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path6.join(".")];
22834
+ function getField(contextValue, path7) {
22835
+ return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path7.join(".")];
22836
22836
  }
22837
- function getParentField(contextValue, path6) {
22838
- for (let i = path6.length - 1; i > 0; i--) {
22839
- const field = getField(contextValue, path6.slice(0, i));
22837
+ function getParentField(contextValue, path7) {
22838
+ for (let i = path7.length - 1; i > 0; i--) {
22839
+ const field = getField(contextValue, path7.slice(0, i));
22840
22840
  if (field) {
22841
22841
  return field;
22842
22842
  }
@@ -22845,9 +22845,9 @@ var require_utils10 = __commonJS({
22845
22845
  span: contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].span
22846
22846
  };
22847
22847
  }
22848
- function pathToArray(mergeItems, path6) {
22848
+ function pathToArray(mergeItems, path7) {
22849
22849
  const flattened = [];
22850
- let curr = path6;
22850
+ let curr = path7;
22851
22851
  while (curr) {
22852
22852
  let key = curr.key;
22853
22853
  if (mergeItems && typeof key === "number") {
@@ -22984,14 +22984,14 @@ var require_utils10 = __commonJS({
22984
22984
  if (!contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL]) {
22985
22985
  return fieldResolver.call(this, source, args, contextValue, info);
22986
22986
  }
22987
- const path6 = pathToArray(config.mergeItems, info && info.path);
22988
- const depth = path6.filter((item) => typeof item === "string").length;
22987
+ const path7 = pathToArray(config.mergeItems, info && info.path);
22988
+ const depth = path7.filter((item) => typeof item === "string").length;
22989
22989
  let field;
22990
22990
  let shouldEndSpan = false;
22991
22991
  if (config.depth >= 0 && config.depth < depth) {
22992
- field = getParentField(contextValue, path6);
22992
+ field = getParentField(contextValue, path7);
22993
22993
  } else {
22994
- const newField = createFieldIfNotExists(tracer, getConfig, contextValue, info, path6);
22994
+ const newField = createFieldIfNotExists(tracer, getConfig, contextValue, info, path7);
22995
22995
  field = newField.field;
22996
22996
  shouldEndSpan = newField.spanAdded;
22997
22997
  }
@@ -28447,12 +28447,12 @@ var require_utils14 = __commonJS({
28447
28447
  const reqUrlObject = requestUrl || {};
28448
28448
  const protocol = reqUrlObject.protocol || fallbackProtocol;
28449
28449
  const port = (reqUrlObject.port || "").toString();
28450
- const path6 = reqUrlObject.path || "/";
28450
+ const path7 = reqUrlObject.path || "/";
28451
28451
  let host = reqUrlObject.host || reqUrlObject.hostname || headers.host || "localhost";
28452
28452
  if (host.indexOf(":") === -1 && port && port !== "80" && port !== "443") {
28453
28453
  host += `:${port}`;
28454
28454
  }
28455
- return `${protocol}//${host}${path6}`;
28455
+ return `${protocol}//${host}${path7}`;
28456
28456
  };
28457
28457
  exports2.getAbsoluteUrl = getAbsoluteUrl;
28458
28458
  var parseResponseStatus = (kind, statusCode) => {
@@ -30520,11 +30520,11 @@ var require_instrumentation20 = __commonJS({
30520
30520
  const router = dispatchLayer.router;
30521
30521
  const routesStack = (_a = router === null || router === void 0 ? void 0 : router.stack) !== null && _a !== void 0 ? _a : [];
30522
30522
  for (const pathLayer of routesStack) {
30523
- const path6 = pathLayer.path;
30523
+ const path7 = pathLayer.path;
30524
30524
  const pathStack = pathLayer.stack;
30525
30525
  for (let j = 0; j < pathStack.length; j++) {
30526
30526
  const routedMiddleware = pathStack[j];
30527
- pathStack[j] = this._patchLayer(routedMiddleware, true, path6);
30527
+ pathStack[j] = this._patchLayer(routedMiddleware, true, path7);
30528
30528
  }
30529
30529
  }
30530
30530
  return dispatchLayer;
@@ -36914,8 +36914,8 @@ var require_instrumentation32 = __commonJS({
36914
36914
  }
36915
36915
  _methodPatcher(original, methodName) {
36916
36916
  const instrumentation = this;
36917
- return function(path6, ...handler) {
36918
- return original.call(this, path6, ...instrumentation._handlerPatcher({ type: types_1.LayerType.REQUEST_HANDLER, path: path6, methodName }, handler));
36917
+ return function(path7, ...handler) {
36918
+ return original.call(this, path7, ...instrumentation._handlerPatcher({ type: types_1.LayerType.REQUEST_HANDLER, path: path7, methodName }, handler));
36919
36919
  };
36920
36920
  }
36921
36921
  // will return the same type as `handler`, but all functions recursively patched
@@ -38863,9 +38863,9 @@ var require_getMachineId_linux = __commonJS({
38863
38863
  var api_1 = (init_esm(), __toCommonJS(esm_exports));
38864
38864
  async function getMachineId() {
38865
38865
  const paths = ["/etc/machine-id", "/var/lib/dbus/machine-id"];
38866
- for (const path6 of paths) {
38866
+ for (const path7 of paths) {
38867
38867
  try {
38868
- const result = await fs_1.promises.readFile(path6, { encoding: "utf8" });
38868
+ const result = await fs_1.promises.readFile(path7, { encoding: "utf8" });
38869
38869
  return result.trim();
38870
38870
  } catch (e) {
38871
38871
  api_1.diag.debug(`error reading machine id: ${e}`);
@@ -41012,7 +41012,7 @@ var require_tr46 = __commonJS({
41012
41012
  TRANSITIONAL: 0,
41013
41013
  NONTRANSITIONAL: 1
41014
41014
  };
41015
- function normalize(str) {
41015
+ function normalize2(str) {
41016
41016
  return str.split("\0").map(function(s) {
41017
41017
  return s.normalize("NFC");
41018
41018
  }).join("\0");
@@ -41092,7 +41092,7 @@ var require_tr46 = __commonJS({
41092
41092
  processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;
41093
41093
  }
41094
41094
  var error = false;
41095
- if (normalize(label) !== label || label[3] === "-" && label[4] === "-" || label[0] === "-" || label[label.length - 1] === "-" || label.indexOf(".") !== -1 || label.search(combiningMarksRegex) === 0) {
41095
+ if (normalize2(label) !== label || label[3] === "-" && label[4] === "-" || label[0] === "-" || label[label.length - 1] === "-" || label.indexOf(".") !== -1 || label.search(combiningMarksRegex) === 0) {
41096
41096
  error = true;
41097
41097
  }
41098
41098
  var len = countSymbols(label);
@@ -41110,7 +41110,7 @@ var require_tr46 = __commonJS({
41110
41110
  }
41111
41111
  function processing(domain_name, useSTD3, processing_option) {
41112
41112
  var result = mapChars(domain_name, useSTD3, processing_option);
41113
- result.string = normalize(result.string);
41113
+ result.string = normalize2(result.string);
41114
41114
  var labels = result.string.split(".");
41115
41115
  for (var i = 0; i < labels.length; ++i) {
41116
41116
  try {
@@ -41553,14 +41553,14 @@ var require_url_state_machine = __commonJS({
41553
41553
  return url.replace(/\u0009|\u000A|\u000D/g, "");
41554
41554
  }
41555
41555
  function shortenPath(url) {
41556
- const path6 = url.path;
41557
- if (path6.length === 0) {
41556
+ const path7 = url.path;
41557
+ if (path7.length === 0) {
41558
41558
  return;
41559
41559
  }
41560
- if (url.scheme === "file" && path6.length === 1 && isNormalizedWindowsDriveLetter(path6[0])) {
41560
+ if (url.scheme === "file" && path7.length === 1 && isNormalizedWindowsDriveLetter(path7[0])) {
41561
41561
  return;
41562
41562
  }
41563
- path6.pop();
41563
+ path7.pop();
41564
41564
  }
41565
41565
  function includesCredentials(url) {
41566
41566
  return url.username !== "" || url.password !== "";
@@ -48612,21 +48612,21 @@ function ensureConfigDir() {
48612
48612
  (0, import_node_fs.mkdirSync)(CONFIG_DIR, { recursive: true });
48613
48613
  }
48614
48614
  }
48615
- function readJsonFile(path6, fallback) {
48616
- if (!(0, import_node_fs.existsSync)(path6)) return fallback;
48617
- const raw = (0, import_node_fs.readFileSync)(path6, "utf8");
48615
+ function readJsonFile(path7, fallback) {
48616
+ if (!(0, import_node_fs.existsSync)(path7)) return fallback;
48617
+ const raw = (0, import_node_fs.readFileSync)(path7, "utf8");
48618
48618
  if (!raw.trim()) return fallback;
48619
48619
  try {
48620
48620
  return JSON.parse(raw);
48621
48621
  } catch (error) {
48622
- throw new Error(`Failed to parse ${path6}: ${error.message}`);
48622
+ throw new Error(`Failed to parse ${path7}: ${error.message}`);
48623
48623
  }
48624
48624
  }
48625
- function writeJsonFile(path6, value) {
48625
+ function writeJsonFile(path7, value) {
48626
48626
  ensureConfigDir();
48627
- (0, import_node_fs.writeFileSync)(path6, JSON.stringify(value, null, 2));
48627
+ (0, import_node_fs.writeFileSync)(path7, JSON.stringify(value, null, 2));
48628
48628
  try {
48629
- (0, import_node_fs.chmodSync)(path6, 384);
48629
+ (0, import_node_fs.chmodSync)(path7, 384);
48630
48630
  } catch {
48631
48631
  }
48632
48632
  }
@@ -49514,7 +49514,7 @@ and switching profiles won't affect other checkouts.`,
49514
49514
  auth: {
49515
49515
  description: `Authenticate with Eve Horizon. Auth is optional for local development but required
49516
49516
  for cloud deployments. Credentials are stored globally per API URL.`,
49517
- usage: "eve auth <login|logout|status|whoami|bootstrap|sync|creds|token|mint|permissions>",
49517
+ usage: "eve auth <login|logout|status|whoami|bootstrap|sync|creds|token|mint|permissions|request-access>",
49518
49518
  subcommands: {
49519
49519
  login: {
49520
49520
  description: "Login via GitHub SSH challenge (default) or Supabase (legacy)",
@@ -49642,6 +49642,24 @@ for cloud deployments. Credentials are stored globally per API URL.`,
49642
49642
  "eve auth permissions",
49643
49643
  "eve auth permissions --json"
49644
49644
  ]
49645
+ },
49646
+ "request-access": {
49647
+ description: "Self-service access request \u2014 submit your SSH key and wait for admin approval",
49648
+ usage: 'eve auth request-access --org "<org name>" [--ssh-key <path>] [--email <email>] [--wait]',
49649
+ options: [
49650
+ "--org <name> Organization to request access to (required)",
49651
+ "--org-slug <slug> Preferred org slug",
49652
+ "--ssh-key <path> Path to SSH public key (default: ~/.ssh/id_ed25519.pub)",
49653
+ "--email <email> Contact email",
49654
+ "--nostr-pubkey <hex> Nostr public key (alternative to SSH)",
49655
+ "--wait Poll until approved, then auto-login",
49656
+ "--status <id> Check status of an existing request"
49657
+ ],
49658
+ examples: [
49659
+ 'eve auth request-access --org "Acme Corp" --ssh-key ~/.ssh/id_ed25519.pub --wait',
49660
+ 'eve auth request-access --org "Acme Corp" --email user@example.com --wait',
49661
+ "eve auth request-access --status <request_id>"
49662
+ ]
49645
49663
  }
49646
49664
  }
49647
49665
  },
@@ -50293,17 +50311,40 @@ for cloud deployments. Credentials are stored globally per API URL.`,
50293
50311
  usage: "eve admin <subcommand> [options]",
50294
50312
  subcommands: {
50295
50313
  invite: {
50296
- description: "Invite a user by registering their GitHub SSH keys and adding them to an org",
50297
- usage: "eve admin invite --email <email> [--github <username>] [--role <role>] [--org <org_id>]",
50314
+ description: "Invite a user by registering their SSH keys (from GitHub or a local file) and adding them to an org",
50315
+ usage: "eve admin invite --email <email> [--github <username>] [--ssh-key <path>] [--role <role>] [--org <org_id>] [--web] [--redirect-to <url>]",
50298
50316
  options: [
50299
50317
  "--email <email> User email address (required)",
50300
50318
  "--github <username> GitHub username to fetch SSH keys from",
50319
+ "--ssh-key <path> Path to an SSH public key file to register",
50301
50320
  "--role <role> Org role: owner, admin, member (default: member)",
50302
- "--org <org_id> Organization to add user to"
50321
+ "--org <org_id> Organization to add user to",
50322
+ "--web Send a Supabase Auth invite email",
50323
+ "--redirect-to <url> Redirect URL after web login",
50324
+ "",
50325
+ "At least one auth method (--github, --ssh-key, or --web) is recommended.",
50326
+ 'Users can also self-register: eve auth request-access --org "Org" --ssh-key ~/.ssh/id_ed25519.pub --wait'
50303
50327
  ],
50304
50328
  examples: [
50305
50329
  "eve admin invite --email user@example.com --github octocat",
50306
- "eve admin invite --email user@example.com --github octocat --role admin --org org_xxx"
50330
+ "eve admin invite --email user@example.com --ssh-key ~/.ssh/id_ed25519.pub --org org_xxx",
50331
+ "eve admin invite --email user@example.com --github octocat --role admin --org org_xxx",
50332
+ "eve admin invite --email user@example.com --web --redirect-to https://app.example.com"
50333
+ ]
50334
+ },
50335
+ "access-requests": {
50336
+ description: "Review, approve, or reject self-service access requests",
50337
+ usage: 'eve admin access-requests [approve|reject <id>] [--reason "..."]',
50338
+ options: [
50339
+ "(no action) List pending access requests",
50340
+ "approve <id> Approve a request (creates user, org membership, and identity)",
50341
+ "reject <id> Reject a request",
50342
+ '--reason "<text>" Note to attach to approval/rejection'
50343
+ ],
50344
+ examples: [
50345
+ "eve admin access-requests",
50346
+ "eve admin access-requests approve ar_xxx",
50347
+ 'eve admin access-requests reject ar_xxx --reason "Unknown user"'
50307
50348
  ]
50308
50349
  },
50309
50350
  "ingress-aliases": {
@@ -50321,7 +50362,9 @@ for cloud deployments. Credentials are stored globally per API URL.`,
50321
50362
  },
50322
50363
  examples: [
50323
50364
  "eve admin invite --email user@example.com --github octocat",
50324
- "eve admin invite --email user@example.com --github octocat --org org_xxx",
50365
+ "eve admin invite --email user@example.com --ssh-key ~/.ssh/id_ed25519.pub --org org_xxx",
50366
+ "eve admin access-requests",
50367
+ "eve admin access-requests approve ar_xxx",
50325
50368
  "eve admin ingress-aliases list"
50326
50369
  ]
50327
50370
  },
@@ -51425,8 +51468,8 @@ function showSubcommandHelp(command, subcommand) {
51425
51468
  }
51426
51469
 
51427
51470
  // src/lib/client.ts
51428
- async function requestJson(context2, path6, options = {}) {
51429
- const response = await requestRaw(context2, path6, options);
51471
+ async function requestJson(context2, path7, options = {}) {
51472
+ const response = await requestRaw(context2, path7, options);
51430
51473
  const method = options.method ?? "GET";
51431
51474
  if (response.status === 401 && options.tokenOverride === void 0) {
51432
51475
  const refreshed = await attemptRefresh(context2);
@@ -51434,20 +51477,20 @@ async function requestJson(context2, path6, options = {}) {
51434
51477
  context2.token = refreshed.access_token;
51435
51478
  context2.refreshToken = refreshed.refresh_token;
51436
51479
  context2.expiresAt = refreshed.expires_at;
51437
- const retry = await requestRaw(context2, path6, {
51480
+ const retry = await requestRaw(context2, path7, {
51438
51481
  ...options,
51439
51482
  tokenOverride: refreshed.access_token
51440
51483
  });
51441
51484
  if (!retry.ok && !options.allowError) {
51442
51485
  const message = formatErrorMessage(retry);
51443
- throw new Error(`HTTP ${retry.status}: ${method} ${path6}: ${message}`);
51486
+ throw new Error(`HTTP ${retry.status}: ${method} ${path7}: ${message}`);
51444
51487
  }
51445
51488
  return retry.data;
51446
51489
  }
51447
51490
  }
51448
51491
  if (!response.ok && !options.allowError) {
51449
51492
  const message = formatErrorMessage(response);
51450
- const requestTarget = `${method} ${path6}`;
51493
+ const requestTarget = `${method} ${path7}`;
51451
51494
  const requestFailedContext = `while calling ${requestTarget}: ${message}`;
51452
51495
  if ((response.status === 404 || response.status === 500) && message.includes("Project not found")) {
51453
51496
  const projectIdMatch = message.match(/Project not found: (proj_[a-z0-9]+)/);
@@ -51479,7 +51522,7 @@ function unwrapListResponse(value) {
51479
51522
  }
51480
51523
  throw new Error("Expected list response envelope with data[]");
51481
51524
  }
51482
- async function requestRaw(context2, path6, options = {}) {
51525
+ async function requestRaw(context2, path7, options = {}) {
51483
51526
  const headers = {
51484
51527
  ...options.headers
51485
51528
  };
@@ -51490,7 +51533,7 @@ async function requestRaw(context2, path6, options = {}) {
51490
51533
  if (token) {
51491
51534
  headers.Authorization = `Bearer ${token}`;
51492
51535
  }
51493
- const url = `${context2.apiUrl}${path6}`;
51536
+ const url = `${context2.apiUrl}${path7}`;
51494
51537
  const method = options.method ?? "GET";
51495
51538
  let response;
51496
51539
  try {
@@ -52828,8 +52871,8 @@ function getErrorMap() {
52828
52871
 
52829
52872
  // ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js
52830
52873
  var makeIssue = (params) => {
52831
- const { data, path: path6, errorMaps, issueData } = params;
52832
- const fullPath = [...path6, ...issueData.path || []];
52874
+ const { data, path: path7, errorMaps, issueData } = params;
52875
+ const fullPath = [...path7, ...issueData.path || []];
52833
52876
  const fullIssue = {
52834
52877
  ...issueData,
52835
52878
  path: fullPath
@@ -52945,11 +52988,11 @@ var errorUtil;
52945
52988
 
52946
52989
  // ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js
52947
52990
  var ParseInputLazyPath = class {
52948
- constructor(parent, value, path6, key) {
52991
+ constructor(parent, value, path7, key) {
52949
52992
  this._cachedPath = [];
52950
52993
  this.parent = parent;
52951
52994
  this.data = value;
52952
- this._path = path6;
52995
+ this._path = path7;
52953
52996
  this._key = key;
52954
52997
  }
52955
52998
  get path() {
@@ -60038,10 +60081,10 @@ function mergeXEve(packFragments, projectXEve) {
60038
60081
  // ../shared/dist/lib/resource-uris.js
60039
60082
  var ORG_DOCS_PREFIX = "org_docs:/";
60040
60083
  var JOB_ATTACHMENTS_PREFIX = "job_attachments:/";
60041
- function normalizeOrgDocPath(path6) {
60042
- if (!path6)
60084
+ function normalizeOrgDocPath(path7) {
60085
+ if (!path7)
60043
60086
  return "/";
60044
- return path6.startsWith("/") ? path6 : `/${path6}`;
60087
+ return path7.startsWith("/") ? path7 : `/${path7}`;
60045
60088
  }
60046
60089
  function parseResourceUri(uri) {
60047
60090
  if (!uri || typeof uri !== "string")
@@ -60052,11 +60095,11 @@ function parseResourceUri(uri) {
60052
60095
  return null;
60053
60096
  const match = raw.match(/^(.*)@v(\d+)$/);
60054
60097
  if (match) {
60055
- const path6 = normalizeOrgDocPath(match[1]);
60098
+ const path7 = normalizeOrgDocPath(match[1]);
60056
60099
  const version2 = Number(match[2]);
60057
60100
  if (!Number.isFinite(version2) || version2 <= 0)
60058
60101
  return null;
60059
- return { scheme: "org_docs", path: path6, version: version2 };
60102
+ return { scheme: "org_docs", path: path7, version: version2 };
60060
60103
  }
60061
60104
  return { scheme: "org_docs", path: normalizeOrgDocPath(raw) };
60062
60105
  }
@@ -65513,7 +65556,10 @@ ${tokenList.map((t) => ` - ${t.name}`).join("\n")}`
65513
65556
  const requestData = submitResponse.data;
65514
65557
  if (!wait) {
65515
65558
  outputJson(requestData, json, `Access request submitted: ${requestData.id} (status: ${requestData.status})
65516
- Poll with: eve auth request-access --status ${requestData.id}`);
65559
+ Poll with: eve auth request-access --status ${requestData.id}
65560
+
65561
+ Tip: Use --wait to auto-poll and login on approval:
65562
+ eve auth request-access --org "${orgName}" --wait`);
65517
65563
  return;
65518
65564
  }
65519
65565
  console.log(`Access request submitted: ${requestData.id}`);
@@ -66758,9 +66804,9 @@ function getOrchestratorUrl(context2) {
66758
66804
  apiUrl.port = orchPort;
66759
66805
  return apiUrl.toString().replace(/\/$/, "");
66760
66806
  }
66761
- async function requestOrchestratorJson(context2, path6, options) {
66807
+ async function requestOrchestratorJson(context2, path7, options) {
66762
66808
  const orchUrl = getOrchestratorUrl(context2);
66763
- const url = `${orchUrl}${path6}`;
66809
+ const url = `${orchUrl}${path7}`;
66764
66810
  const headers = {};
66765
66811
  if (options?.body) {
66766
66812
  headers["Content-Type"] = "application/json";
@@ -68966,13 +69012,13 @@ async function handleCall(positionals, flags, context2) {
68966
69012
  const body = graphqlBody ?? jsonBody;
68967
69013
  const method = methodInput.toUpperCase();
68968
69014
  const resolvedBaseUrl = resolveApiBaseUrlForRuntime(api.base_url, context2.apiUrl);
68969
- const path6 = resolveApiPath(resolvedBaseUrl, pathInput);
69015
+ const path7 = resolveApiPath(resolvedBaseUrl, pathInput);
68970
69016
  const tokenOverride = getStringFlag(flags, ["token"]);
68971
69017
  const authToken = tokenOverride ?? process.env.EVE_JOB_TOKEN ?? context2.token;
68972
69018
  if (printCurl) {
68973
69019
  const curl = buildCurlCommand({
68974
69020
  method,
68975
- url: path6,
69021
+ url: path7,
68976
69022
  authToken,
68977
69023
  jsonBody: body,
68978
69024
  authHint: tokenOverride ? "override" : process.env.EVE_JOB_TOKEN ? "job" : "user"
@@ -68980,7 +69026,7 @@ async function handleCall(positionals, flags, context2) {
68980
69026
  console.log(curl);
68981
69027
  return;
68982
69028
  }
68983
- const response = await fetch(path6, {
69029
+ const response = await fetch(path7, {
68984
69030
  method,
68985
69031
  headers: buildApiHeaders(authToken, body),
68986
69032
  body: body ? JSON.stringify(body) : void 0
@@ -69076,7 +69122,7 @@ async function fetchApiSpec(context2, projectId, name, env) {
69076
69122
  function buildCurlExamples(api, spec) {
69077
69123
  const paths = spec.paths ?? {};
69078
69124
  const examples = [];
69079
- Object.entries(paths).forEach(([path6, methods]) => {
69125
+ Object.entries(paths).forEach(([path7, methods]) => {
69080
69126
  Object.entries(methods).forEach(([method, operation]) => {
69081
69127
  const lower = method.toLowerCase();
69082
69128
  if (!["get", "post", "put", "patch", "delete"].includes(lower)) {
@@ -69087,7 +69133,7 @@ function buildCurlExamples(api, spec) {
69087
69133
  const needsBody = ["post", "put", "patch"].includes(lower);
69088
69134
  const curl = buildCurlCommand({
69089
69135
  method: lower.toUpperCase(),
69090
- url: resolveApiPath(api.base_url, path6),
69136
+ url: resolveApiPath(api.base_url, path7),
69091
69137
  authToken: api.auth_mode === "eve" ? "$EVE_JOB_TOKEN" : void 0,
69092
69138
  jsonBody: needsBody ? examplePayload ?? {} : void 0,
69093
69139
  authHint: "job"
@@ -69109,15 +69155,15 @@ function extractExamplePayload(requestBody) {
69109
69155
  if (examples.length === 0) return void 0;
69110
69156
  return examples[0]?.value;
69111
69157
  }
69112
- function resolveApiPath(baseUrl, path6) {
69113
- if (path6.startsWith("http://") || path6.startsWith("https://")) {
69114
- return path6;
69158
+ function resolveApiPath(baseUrl, path7) {
69159
+ if (path7.startsWith("http://") || path7.startsWith("https://")) {
69160
+ return path7;
69115
69161
  }
69116
69162
  if (!baseUrl) {
69117
- return path6;
69163
+ return path7;
69118
69164
  }
69119
69165
  const trimmedBase = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
69120
- const trimmedPath = path6.startsWith("/") ? path6 : `/${path6}`;
69166
+ const trimmedPath = path7.startsWith("/") ? path7 : `/${path7}`;
69121
69167
  return `${trimmedBase}${trimmedPath}`;
69122
69168
  }
69123
69169
  function resolveApiBaseUrlForRuntime(baseUrl, eveApiUrl) {
@@ -69314,7 +69360,7 @@ function buildCurlCommand(options) {
69314
69360
 
69315
69361
  // src/commands/db.ts
69316
69362
  var import_node_fs9 = require("node:fs");
69317
- var import_node_path9 = require("node:path");
69363
+ var import_node_path10 = require("node:path");
69318
69364
 
69319
69365
  // ../../node_modules/.pnpm/postgres@3.4.8/node_modules/postgres/src/index.js
69320
69366
  var import_os = __toESM(require("os"), 1);
@@ -70846,13 +70892,13 @@ function Subscribe(postgres2, options) {
70846
70892
  }
70847
70893
  }
70848
70894
  function handle(a, b2) {
70849
- const path6 = b2.relation.schema + "." + b2.relation.table;
70895
+ const path7 = b2.relation.schema + "." + b2.relation.table;
70850
70896
  call("*", a, b2);
70851
- call("*:" + path6, a, b2);
70852
- b2.relation.keys.length && call("*:" + path6 + "=" + b2.relation.keys.map((x2) => a[x2.name]), a, b2);
70897
+ call("*:" + path7, a, b2);
70898
+ b2.relation.keys.length && call("*:" + path7 + "=" + b2.relation.keys.map((x2) => a[x2.name]), a, b2);
70853
70899
  call(b2.command, a, b2);
70854
- call(b2.command + ":" + path6, a, b2);
70855
- b2.relation.keys.length && call(b2.command + ":" + path6 + "=" + b2.relation.keys.map((x2) => a[x2.name]), a, b2);
70900
+ call(b2.command + ":" + path7, a, b2);
70901
+ b2.relation.keys.length && call(b2.command + ":" + path7 + "=" + b2.relation.keys.map((x2) => a[x2.name]), a, b2);
70856
70902
  }
70857
70903
  function pong() {
70858
70904
  const x2 = Buffer.alloc(34);
@@ -70965,8 +71011,8 @@ function parseEvent(x) {
70965
71011
  const xs = x.match(/^(\*|insert|update|delete)?:?([^.]+?\.?[^=]+)?=?(.+)?/i) || [];
70966
71012
  if (!xs)
70967
71013
  throw new Error("Malformed subscribe pattern: " + x);
70968
- const [, command, path6, key] = xs;
70969
- return (command || "*") + (path6 ? ":" + (path6.indexOf(".") === -1 ? "public." + path6 : path6) : "") + (key ? "=" + key : "");
71014
+ const [, command, path7, key] = xs;
71015
+ return (command || "*") + (path7 ? ":" + (path7.indexOf(".") === -1 ? "public." + path7 : path7) : "") + (key ? "=" + key : "");
70970
71016
  }
70971
71017
 
70972
71018
  // ../../node_modules/.pnpm/postgres@3.4.8/node_modules/postgres/src/large.js
@@ -71111,10 +71157,10 @@ function Postgres(a, b2) {
71111
71157
  });
71112
71158
  return query;
71113
71159
  }
71114
- function file(path6, args = [], options2 = {}) {
71160
+ function file(path7, args = [], options2 = {}) {
71115
71161
  arguments.length === 2 && !Array.isArray(args) && (options2 = args, args = []);
71116
71162
  const query = new Query([], args, (query2) => {
71117
- import_fs2.default.readFile(path6, "utf8", (err, string) => {
71163
+ import_fs2.default.readFile(path7, "utf8", (err, string) => {
71118
71164
  if (err)
71119
71165
  return query2.reject(err);
71120
71166
  query2.strings = [string];
@@ -71490,6 +71536,11 @@ async function ensureMigrationsTable(db) {
71490
71536
  )
71491
71537
  `;
71492
71538
  }
71539
+ async function ensureExtensions(db) {
71540
+ console.log("Ensuring optional migration prerequisites...");
71541
+ await db`CREATE EXTENSION IF NOT EXISTS pgcrypto`;
71542
+ await db`CREATE EXTENSION IF NOT EXISTS "uuid-ossp"`;
71543
+ }
71493
71544
  async function listMigrations(options) {
71494
71545
  const db = src_default(options.connectionUrl, {
71495
71546
  max: 1,
@@ -71526,6 +71577,7 @@ async function applyMigrations(options) {
71526
71577
  });
71527
71578
  try {
71528
71579
  await ensureMigrationsTable(db);
71580
+ await ensureExtensions(db);
71529
71581
  const appliedRows = await db`
71530
71582
  SELECT name, checksum
71531
71583
  FROM schema_migrations
@@ -71534,6 +71586,7 @@ async function applyMigrations(options) {
71534
71586
  const appliedMap = new Map(appliedRows.map((row) => [row.name, row.checksum]));
71535
71587
  const results = [];
71536
71588
  const isBaseline = appliedMap.size === 0;
71589
+ console.log(`Running ${migrations.length} migration file(s) from directory: ${options.migrationsDir ?? "(inline)"}`);
71537
71590
  for (const migration of migrations) {
71538
71591
  const checksum = (0, import_crypto6.createHash)("sha256").update(migration.sql).digest("hex");
71539
71592
  const existingChecksum = appliedMap.get(migration.name);
@@ -71594,6 +71647,9 @@ async function resetSchema(connectionUrl) {
71594
71647
  }
71595
71648
 
71596
71649
  // ../migrate/dist/index.js
71650
+ var import_node_path9 = __toESM(require("node:path"), 1);
71651
+ var import_node_url = require("node:url");
71652
+ var import_meta = {};
71597
71653
  async function main() {
71598
71654
  const databaseUrl = process.env.DATABASE_URL;
71599
71655
  const migrationsDir = process.env.MIGRATIONS_DIR || "/migrations";
@@ -71625,7 +71681,8 @@ Migration failed: ${message}`);
71625
71681
  }
71626
71682
  }
71627
71683
  var scriptPath = (process.argv[1] ?? "").replace(/\\/g, "/");
71628
- var invokedAsCli = scriptPath.endsWith("/eve-migrate") || scriptPath.endsWith("/migrate/dist/index.js") || scriptPath.endsWith("/@eve/migrate/dist/index.js");
71684
+ var scriptUrl = process.argv[1] ? (0, import_node_url.pathToFileURL)(import_node_path9.default.resolve(scriptPath)).href : "";
71685
+ var invokedAsCli = import_meta.url === scriptUrl;
71629
71686
  if (invokedAsCli) {
71630
71687
  void main();
71631
71688
  }
@@ -71697,12 +71754,12 @@ function handleRlsInit(flags, jsonOutput) {
71697
71754
  throw new Error("Usage: eve db rls init --with-groups [--out <path>] [--force]");
71698
71755
  }
71699
71756
  const outPath = getStringFlag(flags, ["out"]) ?? "db/rls/helpers.sql";
71700
- const fullPath = (0, import_node_path9.resolve)(outPath);
71757
+ const fullPath = (0, import_node_path10.resolve)(outPath);
71701
71758
  if ((0, import_node_fs9.existsSync)(fullPath) && !force) {
71702
71759
  throw new Error(`RLS helper file already exists: ${fullPath}
71703
71760
  Use --force to overwrite.`);
71704
71761
  }
71705
- (0, import_node_fs9.mkdirSync)((0, import_node_path9.dirname)(fullPath), { recursive: true });
71762
+ (0, import_node_fs9.mkdirSync)((0, import_node_path10.dirname)(fullPath), { recursive: true });
71706
71763
  (0, import_node_fs9.writeFileSync)(fullPath, renderRlsHelperTemplate());
71707
71764
  const payload = {
71708
71765
  path: fullPath,
@@ -71791,7 +71848,7 @@ async function handleSql(positionals, flags, context2, jsonOutput) {
71791
71848
  const sqlPositionals = target.mode === "env" ? target.remainingPositionals : positionals;
71792
71849
  const sqlInput = getStringFlag(flags, ["sql"]) ?? sqlPositionals.join(" ");
71793
71850
  const fileInput = getStringFlag(flags, ["file"]);
71794
- const sqlText = fileInput ? (0, import_node_fs9.readFileSync)((0, import_node_path9.resolve)(fileInput), "utf-8") : sqlInput;
71851
+ const sqlText = fileInput ? (0, import_node_fs9.readFileSync)((0, import_node_path10.resolve)(fileInput), "utf-8") : sqlInput;
71795
71852
  if (!sqlText) {
71796
71853
  throw new Error("Usage: eve db sql --env <name>|--url <postgres-url> --sql <statement> [--params <json>] [--write]");
71797
71854
  }
@@ -71879,7 +71936,7 @@ function resolveDbUrlFromEnv() {
71879
71936
  return readEnvFileValue("EVE_DB_URL");
71880
71937
  }
71881
71938
  function readEnvFileValue(key) {
71882
- const envPath = (0, import_node_path9.resolve)(".env");
71939
+ const envPath = (0, import_node_path10.resolve)(".env");
71883
71940
  if (!(0, import_node_fs9.existsSync)(envPath)) return void 0;
71884
71941
  const content = (0, import_node_fs9.readFileSync)(envPath, "utf-8");
71885
71942
  for (const rawLine of content.split(/\r?\n/)) {
@@ -71898,7 +71955,7 @@ function readEnvFileValue(key) {
71898
71955
  return void 0;
71899
71956
  }
71900
71957
  function loadMigrationsFromPath(migrationsPath) {
71901
- const fullPath = (0, import_node_path9.resolve)(migrationsPath);
71958
+ const fullPath = (0, import_node_path10.resolve)(migrationsPath);
71902
71959
  if (!(0, import_node_fs9.existsSync)(fullPath)) {
71903
71960
  throw new Error(`Migrations directory not found: ${fullPath}`);
71904
71961
  }
@@ -71914,7 +71971,7 @@ Example: 20260128100000_create_users.sql`
71914
71971
  }
71915
71972
  return files.map((file) => ({
71916
71973
  name: file,
71917
- sql: (0, import_node_fs9.readFileSync)((0, import_node_path9.join)(fullPath, file), "utf-8")
71974
+ sql: (0, import_node_fs9.readFileSync)((0, import_node_path10.join)(fullPath, file), "utf-8")
71918
71975
  }));
71919
71976
  }
71920
71977
  async function executeSqlDirect(connectionUrl, sql, params, allowWrite) {
@@ -72164,11 +72221,11 @@ function handleNew(positionals, flags) {
72164
72221
  ].join("");
72165
72222
  const filename = `${timestamp}_${normalizedDescription}.sql`;
72166
72223
  const migrationsPath = getStringFlag(flags, ["path"]) ?? "db/migrations";
72167
- const fullPath = (0, import_node_path9.resolve)(migrationsPath);
72224
+ const fullPath = (0, import_node_path10.resolve)(migrationsPath);
72168
72225
  if (!(0, import_node_fs9.existsSync)(fullPath)) {
72169
72226
  (0, import_node_fs9.mkdirSync)(fullPath, { recursive: true });
72170
72227
  }
72171
- const filePath = (0, import_node_path9.join)(fullPath, filename);
72228
+ const filePath = (0, import_node_path10.join)(fullPath, filename);
72172
72229
  if ((0, import_node_fs9.existsSync)(filePath)) {
72173
72230
  throw new Error(`Migration file already exists: ${filePath}`);
72174
72231
  }
@@ -72492,9 +72549,9 @@ function padRight6(str, width) {
72492
72549
 
72493
72550
  // src/commands/skills.ts
72494
72551
  var fs3 = __toESM(require("node:fs"));
72495
- var path4 = __toESM(require("node:path"));
72552
+ var path5 = __toESM(require("node:path"));
72496
72553
  var import_node_child_process7 = require("node:child_process");
72497
- var UNIVERSAL_SKILLS_DIR = path4.join(".agents", "skills");
72554
+ var UNIVERSAL_SKILLS_DIR = path5.join(".agents", "skills");
72498
72555
  var PRIVATE_SKILLS_DIRNAME = "private-skills";
72499
72556
  async function handleSkills(subcommand, positionals, flags) {
72500
72557
  switch (subcommand) {
@@ -72510,8 +72567,8 @@ async function handleInstall(positionals, flags) {
72510
72567
  const skipInstalled = Boolean(flags["skip-installed"]);
72511
72568
  const projectRoot = process.cwd();
72512
72569
  const skillsBin = resolveSkillsBinary();
72513
- const manifestPath = path4.join(projectRoot, "skills.txt");
72514
- const skillsDir = path4.join(projectRoot, UNIVERSAL_SKILLS_DIR);
72570
+ const manifestPath = path5.join(projectRoot, "skills.txt");
72571
+ const skillsDir = path5.join(projectRoot, UNIVERSAL_SKILLS_DIR);
72515
72572
  const source = positionals[0];
72516
72573
  if (source) {
72517
72574
  const parsed = parseSkillSource(source);
@@ -72544,7 +72601,7 @@ async function handleInstall(positionals, flags) {
72544
72601
  function installSkill(skillsBin, skill, projectRoot) {
72545
72602
  console.log(` Installing: ${skill.source} (${skill.type})`);
72546
72603
  const localDir = resolveLocalDirIfExists(skill, projectRoot);
72547
- const wantsExcludePrivate = localDir !== null && fs3.existsSync(path4.join(localDir, PRIVATE_SKILLS_DIRNAME)) && !sourcePathExplicitlyTargetsPrivate(skill.source);
72604
+ const wantsExcludePrivate = localDir !== null && fs3.existsSync(path5.join(localDir, PRIVATE_SKILLS_DIRNAME)) && !sourcePathExplicitlyTargetsPrivate(skill.source);
72548
72605
  try {
72549
72606
  const agents = ["claude-code", "codex", "gemini-cli"];
72550
72607
  if (wantsExcludePrivate && localDir) {
@@ -72555,7 +72612,7 @@ function installSkill(skillsBin, skill, projectRoot) {
72555
72612
  }
72556
72613
  console.log(` Installing ${skillDirs.length} public skill(s) (excluding ${PRIVATE_SKILLS_DIRNAME}/)...`);
72557
72614
  for (const dir of skillDirs) {
72558
- const rel = path4.relative(projectRoot, dir);
72615
+ const rel = path5.relative(projectRoot, dir);
72559
72616
  const installSource = rel.startsWith(".") ? rel : `./${rel}`;
72560
72617
  for (const agent of agents) {
72561
72618
  (0, import_node_child_process7.execSync)(`${skillsBin} add ${JSON.stringify(installSource)} -a ${agent} -s '*' -y --full-depth`, {
@@ -72596,8 +72653,8 @@ ${source}
72596
72653
  }
72597
72654
  function resolveSkillsBinary() {
72598
72655
  const candidates = [
72599
- path4.resolve(__dirname, "..", "node_modules", ".bin", "skills"),
72600
- path4.resolve(__dirname, "..", "..", ".bin", "skills")
72656
+ path5.resolve(__dirname, "..", "node_modules", ".bin", "skills"),
72657
+ path5.resolve(__dirname, "..", "..", ".bin", "skills")
72601
72658
  ];
72602
72659
  for (const candidate of candidates) {
72603
72660
  if (fs3.existsSync(candidate)) return candidate;
@@ -72618,19 +72675,19 @@ function commandExists(cmd) {
72618
72675
  function isGlobPattern(line) {
72619
72676
  return line.includes("*");
72620
72677
  }
72621
- function expandGlobPattern(pattern, basePath) {
72678
+ function expandGlobPattern(pattern, basePath, explicitPrivateTarget) {
72622
72679
  const sources = [];
72623
72680
  const isRecursive = pattern.endsWith("/**");
72624
72681
  const basePattern = pattern.replace(/\/\*+$/, "");
72625
72682
  let searchRoot;
72626
72683
  if (basePattern.startsWith("./") || basePattern.startsWith("../")) {
72627
- searchRoot = path4.resolve(path4.dirname(basePath), basePattern);
72684
+ searchRoot = path5.resolve(path5.dirname(basePath), basePattern);
72628
72685
  } else if (basePattern.startsWith("/")) {
72629
72686
  searchRoot = basePattern;
72630
72687
  } else if (basePattern.startsWith("~")) {
72631
72688
  searchRoot = basePattern.replace(/^~/, process.env.HOME || "~");
72632
72689
  } else {
72633
- searchRoot = path4.resolve(path4.dirname(basePath), basePattern);
72690
+ searchRoot = path5.resolve(path5.dirname(basePath), basePattern);
72634
72691
  }
72635
72692
  if (!fs3.existsSync(searchRoot)) {
72636
72693
  console.warn(`Warning: Glob pattern base directory not found: ${searchRoot}`);
@@ -72643,12 +72700,18 @@ function expandGlobPattern(pattern, basePath) {
72643
72700
  if (!entry.isDirectory() || entry.name.startsWith(".")) {
72644
72701
  continue;
72645
72702
  }
72646
- const fullPath = path4.join(dir, entry.name);
72647
- const skillMdPath = path4.join(fullPath, "SKILL.md");
72703
+ if (!explicitPrivateTarget && entry.name === PRIVATE_SKILLS_DIRNAME) {
72704
+ continue;
72705
+ }
72706
+ const fullPath = path5.join(dir, entry.name);
72707
+ const skillMdPath = path5.join(fullPath, "SKILL.md");
72648
72708
  if (fs3.existsSync(skillMdPath)) {
72649
72709
  const name = entry.name;
72650
- const relativePath = path4.relative(path4.dirname(basePath), fullPath);
72710
+ const relativePath = path5.relative(path5.dirname(basePath), fullPath);
72651
72711
  const source = relativePath.startsWith(".") ? relativePath : `./${relativePath}`;
72712
+ if (!explicitPrivateTarget && pathContainsPrivateSkills(source)) {
72713
+ continue;
72714
+ }
72652
72715
  sources.push({
72653
72716
  raw: pattern,
72654
72717
  source,
@@ -72677,7 +72740,8 @@ function parseSkillsManifest(manifestPath) {
72677
72740
  const line = rawLine.split("#")[0].trim();
72678
72741
  if (!line) continue;
72679
72742
  if (isGlobPattern(line)) {
72680
- const expanded = expandGlobPattern(line, manifestPath);
72743
+ const explicitPrivateTarget = sourcePathExplicitlyTargetsPrivate(line);
72744
+ const expanded = expandGlobPattern(line, manifestPath, explicitPrivateTarget);
72681
72745
  sources.push(...expanded);
72682
72746
  } else {
72683
72747
  sources.push(parseSkillSource(line));
@@ -72696,22 +72760,22 @@ function parseSkillSource(line) {
72696
72760
  return { raw: line, source: line, type: "github", name: name2 };
72697
72761
  }
72698
72762
  if (line.startsWith("/") || line.startsWith("~")) {
72699
- const name2 = path4.basename(line);
72763
+ const name2 = path5.basename(line);
72700
72764
  return { raw: line, source: line, type: "local", name: name2 };
72701
72765
  }
72702
72766
  if (line.startsWith("./") || line.startsWith("../")) {
72703
- const name2 = path4.basename(line);
72767
+ const name2 = path5.basename(line);
72704
72768
  return { raw: line, source: line, type: "local", name: name2 };
72705
72769
  }
72706
72770
  if (fs3.existsSync(line)) {
72707
- const name2 = path4.basename(line);
72771
+ const name2 = path5.basename(line);
72708
72772
  return { raw: line, source: `./${line}`, type: "local", name: name2 };
72709
72773
  }
72710
72774
  if (line.includes("/") && !line.includes(" ")) {
72711
72775
  const name2 = extractNameFromRepo(line);
72712
72776
  return { raw: line, source: line, type: "github", name: name2 };
72713
72777
  }
72714
- const name = path4.basename(line);
72778
+ const name = path5.basename(line);
72715
72779
  return { raw: line, source: `./${line}`, type: "local", name };
72716
72780
  }
72717
72781
  function extractNameFromUrl(url) {
@@ -72719,7 +72783,7 @@ function extractNameFromUrl(url) {
72719
72783
  if (match) {
72720
72784
  return match[1].replace(/\.git$/, "");
72721
72785
  }
72722
- return path4.basename(new URL(url).pathname).replace(/\.git$/, "");
72786
+ return path5.basename(new URL(url).pathname).replace(/\.git$/, "");
72723
72787
  }
72724
72788
  function extractNameFromRepo(repo) {
72725
72789
  const parts = repo.split("/");
@@ -72739,9 +72803,9 @@ function getInstalledSkills(skillsDir) {
72739
72803
  return installed;
72740
72804
  }
72741
72805
  function ensureSkillsSymlink(projectRoot) {
72742
- const agentSkills = path4.join(projectRoot, UNIVERSAL_SKILLS_DIR);
72743
- const claudeDir = path4.join(projectRoot, ".claude");
72744
- const claudeSkills = path4.join(claudeDir, "skills");
72806
+ const agentSkills = path5.join(projectRoot, UNIVERSAL_SKILLS_DIR);
72807
+ const claudeDir = path5.join(projectRoot, ".claude");
72808
+ const claudeSkills = path5.join(claudeDir, "skills");
72745
72809
  if (!fs3.existsSync(agentSkills)) {
72746
72810
  fs3.mkdirSync(agentSkills, { recursive: true });
72747
72811
  }
@@ -72755,9 +72819,9 @@ function ensureSkillsSymlink(projectRoot) {
72755
72819
  const entries = fs3.readdirSync(agentSkills, { withFileTypes: true });
72756
72820
  for (const entry of entries) {
72757
72821
  if (!entry.isDirectory() || entry.name.startsWith(".")) continue;
72758
- const dst = path4.join(claudeSkills, entry.name);
72822
+ const dst = path5.join(claudeSkills, entry.name);
72759
72823
  if (fs3.existsSync(dst)) continue;
72760
- fs3.symlinkSync(path4.join("..", "..", UNIVERSAL_SKILLS_DIR, entry.name), dst);
72824
+ fs3.symlinkSync(path5.join("..", "..", UNIVERSAL_SKILLS_DIR, entry.name), dst);
72761
72825
  }
72762
72826
  }
72763
72827
  } catch {
@@ -72790,7 +72854,7 @@ function resolveLocalDirIfExists(skill, projectRoot) {
72790
72854
  if (source.startsWith("~")) {
72791
72855
  source = source.replace(/^~/, process.env.HOME || "~");
72792
72856
  }
72793
- const abs = path4.isAbsolute(source) ? source : path4.resolve(projectRoot, source);
72857
+ const abs = path5.isAbsolute(source) ? source : path5.resolve(projectRoot, source);
72794
72858
  try {
72795
72859
  if (!fs3.existsSync(abs)) return null;
72796
72860
  if (!fs3.statSync(abs).isDirectory()) return null;
@@ -72800,8 +72864,12 @@ function resolveLocalDirIfExists(skill, projectRoot) {
72800
72864
  }
72801
72865
  }
72802
72866
  function sourcePathExplicitlyTargetsPrivate(source) {
72803
- const normalized = source.replace(/\\/g, "/");
72804
- return normalized === PRIVATE_SKILLS_DIRNAME || normalized.includes(`/${PRIVATE_SKILLS_DIRNAME}/`);
72867
+ return pathContainsPrivateSkills(source);
72868
+ }
72869
+ function pathContainsPrivateSkills(source) {
72870
+ const normalized = path5.normalize(source).replace(/\\/g, "/");
72871
+ const segments = normalized.split("/").filter(Boolean);
72872
+ return segments.includes(PRIVATE_SKILLS_DIRNAME);
72805
72873
  }
72806
72874
  function findSkillDirs(rootDir, opts) {
72807
72875
  const out = [];
@@ -72827,7 +72895,7 @@ function findSkillDirs(rootDir, opts) {
72827
72895
  for (const entry of entries) {
72828
72896
  if (!entry.isDirectory()) continue;
72829
72897
  if (shouldSkipDir(dir, entry.name)) continue;
72830
- walk(path4.join(dir, entry.name));
72898
+ walk(path5.join(dir, entry.name));
72831
72899
  }
72832
72900
  };
72833
72901
  walk(rootDir);
@@ -72835,18 +72903,20 @@ function findSkillDirs(rootDir, opts) {
72835
72903
  }
72836
72904
 
72837
72905
  // src/commands/admin.ts
72906
+ var import_node_fs10 = require("node:fs");
72838
72907
  async function handleAdmin(subcommand, positionals, flags, context2) {
72839
72908
  const json = Boolean(flags.json);
72840
72909
  switch (subcommand) {
72841
72910
  case "invite": {
72842
72911
  const githubUsername = getStringFlag(flags, ["github"]);
72912
+ const sshKeyPath = getStringFlag(flags, ["ssh-key"]);
72843
72913
  const email = getStringFlag(flags, ["email"]);
72844
72914
  const role = getStringFlag(flags, ["role"]) ?? "member";
72845
72915
  const orgId = getStringFlag(flags, ["org"]) ?? context2.orgId;
72846
72916
  const web = getBooleanFlag(flags, ["web"]) ?? false;
72847
72917
  const redirectTo = getStringFlag(flags, ["redirect-to"]);
72848
72918
  if (!email) {
72849
- throw new Error("Usage: eve admin invite --email <email> [--github <username>] [--role <role>] [--org <org_id>] [--web] [--redirect-to <url>]");
72919
+ throw new Error("Usage: eve admin invite --email <email> [--github <username>] [--ssh-key <path>] [--role <role>] [--org <org_id>] [--web] [--redirect-to <url>]");
72850
72920
  }
72851
72921
  if (!["owner", "admin", "member"].includes(role)) {
72852
72922
  throw new Error(`Invalid role: ${role}. Must be one of: owner, admin, member`);
@@ -72886,6 +72956,29 @@ async function handleAdmin(subcommand, positionals, flags, context2) {
72886
72956
  results.keys_registered += 1;
72887
72957
  }
72888
72958
  }
72959
+ if (sshKeyPath) {
72960
+ if (!(0, import_node_fs10.existsSync)(sshKeyPath)) {
72961
+ throw new Error(`SSH public key not found: ${sshKeyPath}`);
72962
+ }
72963
+ const publicKey = (0, import_node_fs10.readFileSync)(sshKeyPath, "utf8").trim();
72964
+ if (!publicKey.startsWith("ssh-")) {
72965
+ throw new Error(`File does not look like an SSH public key: ${sshKeyPath}`);
72966
+ }
72967
+ const identity = await requestJson(context2, "/auth/identities", {
72968
+ method: "POST",
72969
+ body: {
72970
+ email,
72971
+ public_key: publicKey,
72972
+ label: `ssh-key`
72973
+ }
72974
+ });
72975
+ results.identities.push(identity);
72976
+ results.keys_registered += 1;
72977
+ }
72978
+ if (!githubUsername && !sshKeyPath && !web) {
72979
+ console.warn("Warning: No auth method specified (--github, --ssh-key, or --web). User won't be able to log in.");
72980
+ console.warn('Tip: The user can self-register via: eve auth request-access --org "<org>" --ssh-key ~/.ssh/id_ed25519.pub --wait');
72981
+ }
72889
72982
  if (web) {
72890
72983
  const body = { email };
72891
72984
  if (redirectTo) {
@@ -73095,8 +73188,8 @@ async function handleAdmin(subcommand, positionals, flags, context2) {
73095
73188
  if (untilRaw) params.set("until", untilRaw);
73096
73189
  if (limit) params.set("limit", limit);
73097
73190
  const qs = params.toString();
73098
- const path6 = `/admin/orgs/${orgId}/balance/transactions${qs ? `?${qs}` : ""}`;
73099
- const response = await requestJson(context2, path6);
73191
+ const path7 = `/admin/orgs/${orgId}/balance/transactions${qs ? `?${qs}` : ""}`;
73192
+ const response = await requestJson(context2, path7);
73100
73193
  if (json) {
73101
73194
  outputJson(response, true);
73102
73195
  } else {
@@ -73134,8 +73227,8 @@ ${response.length} transaction(s)`);
73134
73227
  if (untilRaw) params.set("until", untilRaw);
73135
73228
  if (limit) params.set("limit", limit);
73136
73229
  const qs = params.toString();
73137
- const path6 = `/admin/orgs/${orgId}/usage${qs ? `?${qs}` : ""}`;
73138
- const response = await requestJson(context2, path6);
73230
+ const path7 = `/admin/orgs/${orgId}/usage${qs ? `?${qs}` : ""}`;
73231
+ const response = await requestJson(context2, path7);
73139
73232
  if (json) {
73140
73233
  outputJson(response, true);
73141
73234
  } else {
@@ -73159,8 +73252,8 @@ ${response.length} record(s)`);
73159
73252
  if (sinceRaw) params.set("since", parseSinceValue4(sinceRaw));
73160
73253
  if (untilRaw) params.set("until", untilRaw);
73161
73254
  const qs = params.toString();
73162
- const path6 = `/admin/orgs/${orgId}/usage/summary${qs ? `?${qs}` : ""}`;
73163
- const response = await requestJson(context2, path6);
73255
+ const path7 = `/admin/orgs/${orgId}/usage/summary${qs ? `?${qs}` : ""}`;
73256
+ const response = await requestJson(context2, path7);
73164
73257
  if (json) {
73165
73258
  outputJson(response, true);
73166
73259
  } else {
@@ -73196,8 +73289,8 @@ ${response.length} record(s)`);
73196
73289
  if (limit) params.set("limit", limit);
73197
73290
  if (offset) params.set("offset", offset);
73198
73291
  const query = params.toString();
73199
- const path6 = `/admin/ingress-aliases${query ? `?${query}` : ""}`;
73200
- const response = await requestJson(context2, path6);
73292
+ const path7 = `/admin/ingress-aliases${query ? `?${query}` : ""}`;
73293
+ const response = await requestJson(context2, path7);
73201
73294
  if (json) {
73202
73295
  outputJson(response, true);
73203
73296
  return;
@@ -73292,6 +73385,8 @@ ${rows.length} alias(es)`);
73292
73385
  }
73293
73386
  console.log(`Approve: eve admin access-requests approve <id>`);
73294
73387
  console.log(`Reject: eve admin access-requests reject <id> --reason "..."`);
73388
+ console.log("");
73389
+ console.log(`Tip: Users can self-register with: eve auth request-access --org "Org Name" --ssh-key ~/.ssh/id_ed25519.pub --wait`);
73295
73390
  return;
73296
73391
  }
73297
73392
  }
@@ -73352,11 +73447,11 @@ async function fetchGitHubKeys2(username) {
73352
73447
 
73353
73448
  // src/commands/agents.ts
73354
73449
  var import_node_child_process8 = require("node:child_process");
73355
- var import_node_fs10 = require("node:fs");
73356
- var import_node_path10 = require("node:path");
73450
+ var import_node_fs11 = require("node:fs");
73451
+ var import_node_path11 = require("node:path");
73357
73452
  var import_yaml3 = require("yaml");
73358
73453
  function readYamlFile(filePath) {
73359
- const raw = (0, import_node_fs10.readFileSync)(filePath, "utf-8");
73454
+ const raw = (0, import_node_fs11.readFileSync)(filePath, "utf-8");
73360
73455
  const parsed = (0, import_yaml3.parse)(raw);
73361
73456
  if (!parsed || typeof parsed !== "object") {
73362
73457
  throw new Error(`Invalid YAML in ${filePath}`);
@@ -73368,9 +73463,9 @@ function resolveAgentsConfigPaths(repoRoot, manifest) {
73368
73463
  const agentsBlock = xEve["agents"] || {};
73369
73464
  const chatBlock = xEve["chat"] || {};
73370
73465
  const manifestChat = manifest["chat"] || {};
73371
- const agentsPath = (0, import_node_path10.resolve)(repoRoot, pickString(agentsBlock.config_path) ?? "agents/agents.yaml");
73372
- const teamsPath = (0, import_node_path10.resolve)(repoRoot, pickString(agentsBlock.teams_path) ?? "agents/teams.yaml");
73373
- const chatPath = (0, import_node_path10.resolve)(
73466
+ const agentsPath = (0, import_node_path11.resolve)(repoRoot, pickString(agentsBlock.config_path) ?? "agents/agents.yaml");
73467
+ const teamsPath = (0, import_node_path11.resolve)(repoRoot, pickString(agentsBlock.teams_path) ?? "agents/teams.yaml");
73468
+ const chatPath = (0, import_node_path11.resolve)(
73374
73469
  repoRoot,
73375
73470
  pickString(chatBlock.config_path) ?? pickString(manifestChat.config_path) ?? "agents/chat.yaml"
73376
73471
  );
@@ -73379,11 +73474,11 @@ function resolveAgentsConfigPaths(repoRoot, manifest) {
73379
73474
  function pickString(value) {
73380
73475
  return typeof value === "string" && value.trim().length > 0 ? value : void 0;
73381
73476
  }
73382
- function ensureFileExists(path6, label) {
73383
- if (!(0, import_node_fs10.existsSync)(path6)) {
73384
- throw new Error(`Missing ${label} at ${path6}. Update manifest config_path or add the file.`);
73477
+ function ensureFileExists(path7, label) {
73478
+ if (!(0, import_node_fs11.existsSync)(path7)) {
73479
+ throw new Error(`Missing ${label} at ${path7}. Update manifest config_path or add the file.`);
73385
73480
  }
73386
- return path6;
73481
+ return path7;
73387
73482
  }
73388
73483
  function isLocalApiUrl(apiUrl) {
73389
73484
  try {
@@ -73395,9 +73490,9 @@ function isLocalApiUrl(apiUrl) {
73395
73490
  }
73396
73491
  }
73397
73492
  function loadAgentsConfig(repoRoot) {
73398
- const eveDir = (0, import_node_path10.join)(repoRoot, ".eve");
73399
- const manifestPath = (0, import_node_path10.join)(eveDir, "manifest.yaml");
73400
- if ((0, import_node_fs10.existsSync)(manifestPath)) {
73493
+ const eveDir = (0, import_node_path11.join)(repoRoot, ".eve");
73494
+ const manifestPath = (0, import_node_path11.join)(eveDir, "manifest.yaml");
73495
+ if ((0, import_node_fs11.existsSync)(manifestPath)) {
73401
73496
  const manifest = readYamlFile(manifestPath);
73402
73497
  const xEve = manifest["x-eve"] || manifest["x_eve"] || {};
73403
73498
  const policy = xEve["agents"] || null;
@@ -73447,16 +73542,16 @@ async function resolvePacksAndMerge(repoRoot, manifest, projectSlug) {
73447
73542
  }
73448
73543
  }
73449
73544
  const configPaths = resolveAgentsConfigPaths(repoRoot, manifest);
73450
- if ((0, import_node_fs10.existsSync)(configPaths.agentsPath)) {
73451
- const projectAgents = (0, import_yaml3.parse)((0, import_node_fs10.readFileSync)(configPaths.agentsPath, "utf-8")) ?? {};
73545
+ if ((0, import_node_fs11.existsSync)(configPaths.agentsPath)) {
73546
+ const projectAgents = (0, import_yaml3.parse)((0, import_node_fs11.readFileSync)(configPaths.agentsPath, "utf-8")) ?? {};
73452
73547
  mergedAgents = mergeMapConfig(mergedAgents, projectAgents);
73453
73548
  }
73454
- if ((0, import_node_fs10.existsSync)(configPaths.teamsPath)) {
73455
- const projectTeams = (0, import_yaml3.parse)((0, import_node_fs10.readFileSync)(configPaths.teamsPath, "utf-8")) ?? {};
73549
+ if ((0, import_node_fs11.existsSync)(configPaths.teamsPath)) {
73550
+ const projectTeams = (0, import_yaml3.parse)((0, import_node_fs11.readFileSync)(configPaths.teamsPath, "utf-8")) ?? {};
73456
73551
  mergedTeams = mergeMapConfig(mergedTeams, projectTeams);
73457
73552
  }
73458
- if ((0, import_node_fs10.existsSync)(configPaths.chatPath)) {
73459
- const projectChat = (0, import_yaml3.parse)((0, import_node_fs10.readFileSync)(configPaths.chatPath, "utf-8")) ?? {};
73553
+ if ((0, import_node_fs11.existsSync)(configPaths.chatPath)) {
73554
+ const projectChat = (0, import_yaml3.parse)((0, import_node_fs11.readFileSync)(configPaths.chatPath, "utf-8")) ?? {};
73460
73555
  mergedChat = mergeChatConfig(
73461
73556
  mergedChat,
73462
73557
  projectChat
@@ -73485,10 +73580,10 @@ async function resolvePacksAndMerge(repoRoot, manifest, projectSlug) {
73485
73580
  chat_hash: simpleHash(JSON.stringify(mergedChat))
73486
73581
  }
73487
73582
  };
73488
- const eveDir = (0, import_node_path10.join)(repoRoot, ".eve");
73489
- (0, import_node_fs10.mkdirSync)(eveDir, { recursive: true });
73490
- const lockfilePath = (0, import_node_path10.join)(eveDir, "packs.lock.yaml");
73491
- (0, import_node_fs10.writeFileSync)(lockfilePath, (0, import_yaml3.stringify)(lockfile), "utf-8");
73583
+ const eveDir = (0, import_node_path11.join)(repoRoot, ".eve");
73584
+ (0, import_node_fs11.mkdirSync)(eveDir, { recursive: true });
73585
+ const lockfilePath = (0, import_node_path11.join)(eveDir, "packs.lock.yaml");
73586
+ (0, import_node_fs11.writeFileSync)(lockfilePath, (0, import_yaml3.stringify)(lockfile), "utf-8");
73492
73587
  console.log(` \u2713 Lockfile written: .eve/packs.lock.yaml`);
73493
73588
  const packRefs = resolvedPacks.map((p) => ({ id: p.id, source: p.source, ref: p.ref }));
73494
73589
  return {
@@ -73561,7 +73656,7 @@ async function handleAgents(subcommand, positionals, flags, context2) {
73561
73656
  const command = subcommand ?? "config";
73562
73657
  const json = Boolean(flags.json);
73563
73658
  const includeHarnesses = !(getBooleanFlag(flags, ["no-harnesses"]) ?? false);
73564
- const repoRoot = (0, import_node_path10.resolve)(getStringFlag(flags, ["repo-dir", "repo_dir", "dir", "path"]) ?? process.cwd());
73659
+ const repoRoot = (0, import_node_path11.resolve)(getStringFlag(flags, ["repo-dir", "repo_dir", "dir", "path"]) ?? process.cwd());
73565
73660
  switch (command) {
73566
73661
  case "config": {
73567
73662
  const result = loadAgentsConfig(repoRoot);
@@ -73630,8 +73725,8 @@ async function handleAgents(subcommand, positionals, flags, context2) {
73630
73725
  if (dirty && !allowDirty) {
73631
73726
  throw new Error("Working tree is dirty. Commit changes or pass --allow-dirty to sync anyway.");
73632
73727
  }
73633
- const manifestPath = (0, import_node_path10.join)(repoRoot, ".eve", "manifest.yaml");
73634
- if (!(0, import_node_fs10.existsSync)(manifestPath)) {
73728
+ const manifestPath = (0, import_node_path11.join)(repoRoot, ".eve", "manifest.yaml");
73729
+ if (!(0, import_node_fs11.existsSync)(manifestPath)) {
73635
73730
  throw new Error(`Missing manifest at ${manifestPath}. Expected .eve/manifest.yaml.`);
73636
73731
  }
73637
73732
  const manifest = readYamlFile(manifestPath);
@@ -73660,9 +73755,9 @@ async function handleAgents(subcommand, positionals, flags, context2) {
73660
73755
  packRefs = packResult.packRefs;
73661
73756
  } else {
73662
73757
  const configPaths = resolveAgentsConfigPaths(repoRoot, manifest);
73663
- agentsYaml = (0, import_node_fs10.readFileSync)(ensureFileExists(configPaths.agentsPath, "agents config"), "utf-8");
73664
- teamsYaml = (0, import_node_fs10.readFileSync)(ensureFileExists(configPaths.teamsPath, "teams config"), "utf-8");
73665
- chatYaml = (0, import_node_fs10.readFileSync)(ensureFileExists(configPaths.chatPath, "chat config"), "utf-8");
73758
+ agentsYaml = (0, import_node_fs11.readFileSync)(ensureFileExists(configPaths.agentsPath, "agents config"), "utf-8");
73759
+ teamsYaml = (0, import_node_fs11.readFileSync)(ensureFileExists(configPaths.teamsPath, "teams config"), "utf-8");
73760
+ chatYaml = (0, import_node_fs11.readFileSync)(ensureFileExists(configPaths.chatPath, "chat config"), "utf-8");
73666
73761
  }
73667
73762
  let gitSha;
73668
73763
  let branch;
@@ -73786,7 +73881,7 @@ function formatAgeSeconds(isoDate) {
73786
73881
 
73787
73882
  // src/commands/init.ts
73788
73883
  var fs4 = __toESM(require("node:fs"));
73789
- var path5 = __toESM(require("node:path"));
73884
+ var path6 = __toESM(require("node:path"));
73790
73885
  var os3 = __toESM(require("node:os"));
73791
73886
  var import_node_child_process9 = require("node:child_process");
73792
73887
  var DEFAULT_TEMPLATE = "https://github.com/incept5/eve-horizon-starter";
@@ -73796,8 +73891,8 @@ async function handleInit(positionals, flags) {
73796
73891
  const template = getStringFlag(flags, ["template", "t"]) || DEFAULT_TEMPLATE;
73797
73892
  const branch = getStringFlag(flags, ["branch", "b"]) || DEFAULT_BRANCH;
73798
73893
  const skipSkills = Boolean(flags["skip-skills"]);
73799
- const resolvedTarget = path5.resolve(targetDir);
73800
- const targetName = path5.basename(resolvedTarget);
73894
+ const resolvedTarget = path6.resolve(targetDir);
73895
+ const targetName = path6.basename(resolvedTarget);
73801
73896
  const isCurrentDir = targetDir === ".";
73802
73897
  if (isCurrentDir) {
73803
73898
  if (fs4.existsSync(resolvedTarget)) {
@@ -73824,7 +73919,7 @@ async function handleInit(positionals, flags) {
73824
73919
  console.log(`Template: ${template}`);
73825
73920
  console.log(`Branch: ${branch}`);
73826
73921
  console.log("");
73827
- const tempDir = fs4.mkdtempSync(path5.join(os3.tmpdir(), "eve-init-"));
73922
+ const tempDir = fs4.mkdtempSync(path6.join(os3.tmpdir(), "eve-init-"));
73828
73923
  try {
73829
73924
  console.log("Downloading template...");
73830
73925
  const cloneResult = (0, import_node_child_process9.spawnSync)("git", ["clone", "--depth=1", `--branch=${branch}`, template, tempDir], {
@@ -73837,7 +73932,7 @@ async function handleInit(positionals, flags) {
73837
73932
  ${cloneResult.stderr || cloneResult.stdout}`
73838
73933
  );
73839
73934
  }
73840
- const gitDir = path5.join(tempDir, ".git");
73935
+ const gitDir = path6.join(tempDir, ".git");
73841
73936
  if (fs4.existsSync(gitDir)) {
73842
73937
  fs4.rmSync(gitDir, { recursive: true, force: true });
73843
73938
  }
@@ -73885,8 +73980,8 @@ ${cloneResult.stderr || cloneResult.stdout}`
73885
73980
  function copyDirRecursive(src, dest) {
73886
73981
  const entries = fs4.readdirSync(src, { withFileTypes: true });
73887
73982
  for (const entry of entries) {
73888
- const srcPath = path5.join(src, entry.name);
73889
- const destPath = path5.join(dest, entry.name);
73983
+ const srcPath = path6.join(src, entry.name);
73984
+ const destPath = path6.join(dest, entry.name);
73890
73985
  if (entry.isDirectory()) {
73891
73986
  if (!fs4.existsSync(destPath)) {
73892
73987
  fs4.mkdirSync(destPath, { recursive: true });
@@ -73904,8 +73999,8 @@ function copyDirRecursive(src, dest) {
73904
73999
  }
73905
74000
  function resolveSkillsBinary2() {
73906
74001
  const candidates = [
73907
- path5.resolve(__dirname, "..", "node_modules", ".bin", "skills"),
73908
- path5.resolve(__dirname, "..", "..", ".bin", "skills")
74002
+ path6.resolve(__dirname, "..", "node_modules", ".bin", "skills"),
74003
+ path6.resolve(__dirname, "..", "..", ".bin", "skills")
73909
74004
  ];
73910
74005
  for (const candidate of candidates) {
73911
74006
  if (fs4.existsSync(candidate)) return candidate;
@@ -73917,7 +74012,7 @@ function resolveSkillsBinary2() {
73917
74012
  );
73918
74013
  }
73919
74014
  async function installSkills(projectRoot) {
73920
- const skillsTxt = path5.join(projectRoot, "skills.txt");
74015
+ const skillsTxt = path6.join(projectRoot, "skills.txt");
73921
74016
  if (!fs4.existsSync(skillsTxt)) {
73922
74017
  console.log("No skills.txt found, skipping skill installation");
73923
74018
  return;
@@ -73961,9 +74056,9 @@ async function installSkills(projectRoot) {
73961
74056
  }
73962
74057
  }
73963
74058
  function ensureSkillsSymlink2(projectRoot) {
73964
- const agentSkills = path5.join(projectRoot, ".agents", "skills");
73965
- const claudeDir = path5.join(projectRoot, ".claude");
73966
- const claudeSkills = path5.join(claudeDir, "skills");
74059
+ const agentSkills = path6.join(projectRoot, ".agents", "skills");
74060
+ const claudeDir = path6.join(projectRoot, ".claude");
74061
+ const claudeSkills = path6.join(claudeDir, "skills");
73967
74062
  if (!fs4.existsSync(agentSkills)) {
73968
74063
  fs4.mkdirSync(agentSkills, { recursive: true });
73969
74064
  }
@@ -73977,9 +74072,9 @@ function ensureSkillsSymlink2(projectRoot) {
73977
74072
  const entries = fs4.readdirSync(agentSkills, { withFileTypes: true });
73978
74073
  for (const entry of entries) {
73979
74074
  if (!entry.isDirectory() || entry.name.startsWith(".")) continue;
73980
- const dst = path5.join(claudeSkills, entry.name);
74075
+ const dst = path6.join(claudeSkills, entry.name);
73981
74076
  if (fs4.existsSync(dst)) continue;
73982
- fs4.symlinkSync(path5.join("..", "..", ".agents", "skills", entry.name), dst);
74077
+ fs4.symlinkSync(path6.join("..", "..", ".agents", "skills", entry.name), dst);
73983
74078
  }
73984
74079
  }
73985
74080
  } catch {
@@ -74005,8 +74100,8 @@ function ensureSkillsSymlink2(projectRoot) {
74005
74100
  }
74006
74101
 
74007
74102
  // src/commands/release.ts
74008
- var import_node_fs11 = require("node:fs");
74009
- var import_node_path11 = require("node:path");
74103
+ var import_node_fs12 = require("node:fs");
74104
+ var import_node_path12 = require("node:path");
74010
74105
  async function handleRelease2(subcommand, positionals, flags, context2) {
74011
74106
  const json = Boolean(flags.json);
74012
74107
  switch (subcommand) {
@@ -74018,9 +74113,9 @@ async function handleRelease2(subcommand, positionals, flags, context2) {
74018
74113
  let projectId = typeof flags.project === "string" ? flags.project : context2.projectId;
74019
74114
  if (!projectId) {
74020
74115
  const dir = typeof flags.dir === "string" ? flags.dir : process.cwd();
74021
- const manifestPath = (0, import_node_path11.join)(dir, ".eve", "manifest.yaml");
74116
+ const manifestPath = (0, import_node_path12.join)(dir, ".eve", "manifest.yaml");
74022
74117
  try {
74023
- const yaml = (0, import_node_fs11.readFileSync)(manifestPath, "utf-8");
74118
+ const yaml = (0, import_node_fs12.readFileSync)(manifestPath, "utf-8");
74024
74119
  const projectMatch = yaml.match(/^project:\s*(\S+)/m);
74025
74120
  if (projectMatch) {
74026
74121
  projectId = projectMatch[1];
@@ -74069,8 +74164,8 @@ Make sure the release exists and the tag is correct.`
74069
74164
  }
74070
74165
 
74071
74166
  // src/commands/manifest.ts
74072
- var import_node_fs12 = require("node:fs");
74073
- var import_node_path12 = require("node:path");
74167
+ var import_node_fs13 = require("node:fs");
74168
+ var import_node_path13 = require("node:path");
74074
74169
  async function handleManifest(subcommand, positionals, flags, context2) {
74075
74170
  const json = Boolean(flags.json);
74076
74171
  switch (subcommand) {
@@ -74080,11 +74175,11 @@ async function handleManifest(subcommand, positionals, flags, context2) {
74080
74175
  const validateSecretsFlag = flags["validate-secrets"] ?? flags.validate_secrets;
74081
74176
  const validateSecrets = toBoolean(validateSecretsFlag) ?? false;
74082
74177
  const dir = typeof flags.dir === "string" ? flags.dir : process.cwd();
74083
- const manifestPath = getStringFlag(flags, ["path"]) ?? (0, import_node_path12.join)(dir, ".eve", "manifest.yaml");
74178
+ const manifestPath = getStringFlag(flags, ["path"]) ?? (0, import_node_path13.join)(dir, ".eve", "manifest.yaml");
74084
74179
  let manifestYaml;
74085
74180
  if (!useLatest) {
74086
74181
  try {
74087
- manifestYaml = (0, import_node_fs12.readFileSync)(manifestPath, "utf-8");
74182
+ manifestYaml = (0, import_node_fs13.readFileSync)(manifestPath, "utf-8");
74088
74183
  } catch (error) {
74089
74184
  throw new Error(`Failed to read manifest at ${manifestPath}: ${error.message}`);
74090
74185
  }
@@ -74152,11 +74247,11 @@ async function handleManifest(subcommand, positionals, flags, context2) {
74152
74247
  }
74153
74248
 
74154
74249
  // src/commands/packs.ts
74155
- var import_node_fs13 = require("node:fs");
74156
- var import_node_path13 = require("node:path");
74250
+ var import_node_fs14 = require("node:fs");
74251
+ var import_node_path14 = require("node:path");
74157
74252
  var import_yaml4 = require("yaml");
74158
74253
  async function handlePacks(subcommand, _rest, flags, _context) {
74159
- const repoRoot = (0, import_node_path13.resolve)(getStringFlag(flags, ["repo-dir", "repo_dir", "dir", "path"]) ?? process.cwd());
74254
+ const repoRoot = (0, import_node_path14.resolve)(getStringFlag(flags, ["repo-dir", "repo_dir", "dir", "path"]) ?? process.cwd());
74160
74255
  switch (subcommand) {
74161
74256
  case "status": {
74162
74257
  printPacksStatus(repoRoot);
@@ -74172,14 +74267,14 @@ async function handlePacks(subcommand, _rest, flags, _context) {
74172
74267
  }
74173
74268
  }
74174
74269
  function printPacksStatus(repoRoot) {
74175
- const lockfilePath = (0, import_node_path13.join)(repoRoot, ".eve", "packs.lock.yaml");
74176
- const manifestPath = (0, import_node_path13.join)(repoRoot, ".eve", "manifest.yaml");
74177
- if (!(0, import_node_fs13.existsSync)(lockfilePath)) {
74270
+ const lockfilePath = (0, import_node_path14.join)(repoRoot, ".eve", "packs.lock.yaml");
74271
+ const manifestPath = (0, import_node_path14.join)(repoRoot, ".eve", "manifest.yaml");
74272
+ if (!(0, import_node_fs14.existsSync)(lockfilePath)) {
74178
74273
  console.log("No lockfile found at .eve/packs.lock.yaml");
74179
74274
  console.log('Run "eve agents sync" to resolve packs and generate the lockfile.');
74180
74275
  return;
74181
74276
  }
74182
- const lockRaw = (0, import_node_fs13.readFileSync)(lockfilePath, "utf-8");
74277
+ const lockRaw = (0, import_node_fs14.readFileSync)(lockfilePath, "utf-8");
74183
74278
  const lock = (0, import_yaml4.parse)(lockRaw);
74184
74279
  if (!lock || !lock.packs) {
74185
74280
  console.log("Lockfile is empty or malformed.");
@@ -74214,8 +74309,8 @@ function printPacksStatus(repoRoot) {
74214
74309
  console.log(` Agents: ${lock.effective.agents_count}`);
74215
74310
  console.log(` Teams: ${lock.effective.teams_count}`);
74216
74311
  console.log(` Routes: ${lock.effective.routes_count}`);
74217
- if ((0, import_node_fs13.existsSync)(manifestPath)) {
74218
- const manifestRaw = (0, import_node_fs13.readFileSync)(manifestPath, "utf-8");
74312
+ if ((0, import_node_fs14.existsSync)(manifestPath)) {
74313
+ const manifestRaw = (0, import_node_fs14.readFileSync)(manifestPath, "utf-8");
74219
74314
  const manifest = (0, import_yaml4.parse)(manifestRaw);
74220
74315
  if (manifest) {
74221
74316
  const xEve = manifest["x-eve"] ?? manifest["x_eve"] ?? {};
@@ -74260,12 +74355,12 @@ function detectDrift(lock, manifestPacks) {
74260
74355
  }
74261
74356
  function printPacksResolve(repoRoot, dryRun) {
74262
74357
  if (dryRun) {
74263
- const lockfilePath = (0, import_node_path13.join)(repoRoot, ".eve", "packs.lock.yaml");
74264
- const manifestPath = (0, import_node_path13.join)(repoRoot, ".eve", "manifest.yaml");
74265
- if (!(0, import_node_fs13.existsSync)(manifestPath)) {
74358
+ const lockfilePath = (0, import_node_path14.join)(repoRoot, ".eve", "packs.lock.yaml");
74359
+ const manifestPath = (0, import_node_path14.join)(repoRoot, ".eve", "manifest.yaml");
74360
+ if (!(0, import_node_fs14.existsSync)(manifestPath)) {
74266
74361
  throw new Error("No manifest found at .eve/manifest.yaml");
74267
74362
  }
74268
- const manifestRaw = (0, import_node_fs13.readFileSync)(manifestPath, "utf-8");
74363
+ const manifestRaw = (0, import_node_fs14.readFileSync)(manifestPath, "utf-8");
74269
74364
  const manifest = (0, import_yaml4.parse)(manifestRaw);
74270
74365
  if (!manifest) {
74271
74366
  throw new Error("Manifest is empty or malformed.");
@@ -74283,8 +74378,8 @@ function printPacksResolve(repoRoot, dryRun) {
74283
74378
  const refShort = mp.ref ? mp.ref.substring(0, 12) : "(local)";
74284
74379
  console.log(` - ${mp.source} @ ${refShort}`);
74285
74380
  }
74286
- if ((0, import_node_fs13.existsSync)(lockfilePath)) {
74287
- const lockRaw = (0, import_node_fs13.readFileSync)(lockfilePath, "utf-8");
74381
+ if ((0, import_node_fs14.existsSync)(lockfilePath)) {
74382
+ const lockRaw = (0, import_node_fs14.readFileSync)(lockfilePath, "utf-8");
74288
74383
  const lock = (0, import_yaml4.parse)(lockRaw);
74289
74384
  if (lock?.packs) {
74290
74385
  const drift = detectDrift(lock, manifestPacks);
@@ -75174,8 +75269,8 @@ Cursor: ${result.cursor}`);
75174
75269
  }
75175
75270
 
75176
75271
  // src/commands/migrate.ts
75177
- var import_node_fs14 = require("node:fs");
75178
- var import_node_path14 = require("node:path");
75272
+ var import_node_fs15 = require("node:fs");
75273
+ var import_node_path15 = require("node:path");
75179
75274
  var import_yaml5 = require("yaml");
75180
75275
  async function handleMigrate2(subcommand, _rest, _flags) {
75181
75276
  switch (subcommand) {
@@ -75195,12 +75290,12 @@ async function migrateSkillsToPacks() {
75195
75290
  if (!repoRoot) {
75196
75291
  throw new Error("Not in a git repository. Run this from your project root.");
75197
75292
  }
75198
- const skillsTxtPath = (0, import_node_path14.join)(repoRoot, "skills.txt");
75199
- if (!(0, import_node_fs14.existsSync)(skillsTxtPath)) {
75293
+ const skillsTxtPath = (0, import_node_path15.join)(repoRoot, "skills.txt");
75294
+ if (!(0, import_node_fs15.existsSync)(skillsTxtPath)) {
75200
75295
  console.log("No skills.txt found at repository root. Nothing to migrate.");
75201
75296
  return;
75202
75297
  }
75203
- const content = (0, import_node_fs14.readFileSync)(skillsTxtPath, "utf-8");
75298
+ const content = (0, import_node_fs15.readFileSync)(skillsTxtPath, "utf-8");
75204
75299
  const lines = content.split("\n");
75205
75300
  const localSources = [];
75206
75301
  const remoteSources = [];
@@ -75338,8 +75433,8 @@ function padRight9(str, width) {
75338
75433
  }
75339
75434
 
75340
75435
  // src/commands/access.ts
75341
- var import_node_fs15 = require("node:fs");
75342
- var import_node_path15 = require("node:path");
75436
+ var import_node_fs16 = require("node:fs");
75437
+ var import_node_path16 = require("node:path");
75343
75438
  var readline3 = __toESM(require("node:readline/promises"));
75344
75439
  var import_yaml6 = require("yaml");
75345
75440
  function resolvePrincipalSelection(flags, options) {
@@ -75834,8 +75929,8 @@ async function handleBindings(action, flags, context2, json) {
75834
75929
  params.set("project_id", projectId);
75835
75930
  }
75836
75931
  const queryString = params.toString();
75837
- const path6 = queryString ? `/orgs/${orgId}/access/bindings?${queryString}` : `/orgs/${orgId}/access/bindings`;
75838
- const bindingsResponse = await requestJson(context2, path6);
75932
+ const path7 = queryString ? `/orgs/${orgId}/access/bindings?${queryString}` : `/orgs/${orgId}/access/bindings`;
75933
+ const bindingsResponse = await requestJson(context2, path7);
75839
75934
  const bindings = unwrapListResponse(bindingsResponse);
75840
75935
  if (json) {
75841
75936
  outputJson({ data: bindings }, json);
@@ -76099,13 +76194,13 @@ async function handleMemberships(flags, context2, json) {
76099
76194
  var DEFAULT_ACCESS_YAML = ".eve/access.yaml";
76100
76195
  function resolveFilePath(flags) {
76101
76196
  const filePath = getStringFlag(flags, ["file", "f"]) ?? DEFAULT_ACCESS_YAML;
76102
- return (0, import_node_path15.resolve)(process.cwd(), filePath);
76197
+ return (0, import_node_path16.resolve)(process.cwd(), filePath);
76103
76198
  }
76104
76199
  function loadAccessYaml(filePath) {
76105
- if (!(0, import_node_fs15.existsSync)(filePath)) {
76200
+ if (!(0, import_node_fs16.existsSync)(filePath)) {
76106
76201
  throw new Error(`File not found: ${filePath}`);
76107
76202
  }
76108
- const raw = (0, import_node_fs15.readFileSync)(filePath, "utf-8");
76203
+ const raw = (0, import_node_fs16.readFileSync)(filePath, "utf-8");
76109
76204
  let parsed;
76110
76205
  try {
76111
76206
  parsed = (0, import_yaml6.parse)(raw);
@@ -77073,10 +77168,10 @@ Sync complete: ${parts.join(", ")}`);
77073
77168
  }
77074
77169
 
77075
77170
  // src/commands/docs.ts
77076
- var import_node_fs16 = require("node:fs");
77077
- var import_node_path16 = require("node:path");
77078
- function encodeDocPathParam(path6) {
77079
- const trimmed = path6.startsWith("/") ? path6.slice(1) : path6;
77171
+ var import_node_fs17 = require("node:fs");
77172
+ var import_node_path17 = require("node:path");
77173
+ function encodeDocPathParam(path7) {
77174
+ const trimmed = path7.startsWith("/") ? path7.slice(1) : path7;
77080
77175
  return encodeURIComponent(trimmed);
77081
77176
  }
77082
77177
  function parseWhereClause(raw) {
@@ -77149,9 +77244,9 @@ async function handleDocs(subcommand, positionals, flags, context2) {
77149
77244
  const filePath = getStringFlag(flags, ["file"]);
77150
77245
  const useStdin = flags.stdin === true || flags.stdin === "true";
77151
77246
  if (filePath) {
77152
- content = (0, import_node_fs16.readFileSync)((0, import_node_path16.resolve)(filePath), "utf-8");
77247
+ content = (0, import_node_fs17.readFileSync)((0, import_node_path17.resolve)(filePath), "utf-8");
77153
77248
  } else if (useStdin) {
77154
- content = (0, import_node_fs16.readFileSync)(0, "utf-8");
77249
+ content = (0, import_node_fs17.readFileSync)(0, "utf-8");
77155
77250
  } else {
77156
77251
  throw new Error("Provide --file <path> or --stdin to supply document content");
77157
77252
  }
@@ -77389,8 +77484,8 @@ async function handleDocs(subcommand, positionals, flags, context2) {
77389
77484
  }
77390
77485
 
77391
77486
  // src/commands/memory.ts
77392
- var import_node_fs17 = require("node:fs");
77393
- var import_node_path17 = require("node:path");
77487
+ var import_node_fs18 = require("node:fs");
77488
+ var import_node_path18 = require("node:path");
77394
77489
  function parseCsv(raw) {
77395
77490
  if (!raw) return [];
77396
77491
  return raw.split(",").map((item) => item.trim()).filter(Boolean);
@@ -77449,9 +77544,9 @@ async function handleMemory(subcommand, positionals, flags, context2) {
77449
77544
  if (contentInline !== void 0) {
77450
77545
  content = contentInline;
77451
77546
  } else if (filePath) {
77452
- content = (0, import_node_fs17.readFileSync)((0, import_node_path17.resolve)(filePath), "utf-8");
77547
+ content = (0, import_node_fs18.readFileSync)((0, import_node_path18.resolve)(filePath), "utf-8");
77453
77548
  } else if (useStdin) {
77454
- content = (0, import_node_fs17.readFileSync)(0, "utf-8");
77549
+ content = (0, import_node_fs18.readFileSync)(0, "utf-8");
77455
77550
  } else {
77456
77551
  throw new Error("Provide --file <path>, --stdin, or --content <text>");
77457
77552
  }
@@ -78108,8 +78203,8 @@ function normalizeManagedModelRows(payload) {
78108
78203
  function looksLikeGatewayPath(baseUrl) {
78109
78204
  try {
78110
78205
  const parsed = new URL(baseUrl);
78111
- const path6 = parsed.pathname.toLowerCase();
78112
- return path6.includes("/inference/v1") || path6.endsWith("/v1");
78206
+ const path7 = parsed.pathname.toLowerCase();
78207
+ return path7.includes("/inference/v1") || path7.endsWith("/v1");
78113
78208
  } catch {
78114
78209
  return false;
78115
78210
  }
@@ -78572,7 +78667,7 @@ async function handleOllama(subcommand, positionals, flags, context2) {
78572
78667
 
78573
78668
  // src/commands/fs.ts
78574
78669
  var import_promises = require("node:fs/promises");
78575
- var import_node_fs18 = require("node:fs");
78670
+ var import_node_fs19 = require("node:fs");
78576
78671
  var import_node_os5 = require("node:os");
78577
78672
  function getOrgOrThrow(flags, context2) {
78578
78673
  const orgId = getStringFlag(flags, ["org", "org-id", "org_id"]) ?? context2.orgId;
@@ -78816,7 +78911,7 @@ async function handleSync2(action, positionals, flags, context2) {
78816
78911
  for (const link of links.data) {
78817
78912
  let writable = false;
78818
78913
  try {
78819
- await (0, import_promises.access)(link.local_path, import_node_fs18.constants.R_OK | import_node_fs18.constants.W_OK);
78914
+ await (0, import_promises.access)(link.local_path, import_node_fs19.constants.R_OK | import_node_fs19.constants.W_OK);
78820
78915
  writable = true;
78821
78916
  } catch {
78822
78917
  writable = false;
@@ -78849,22 +78944,22 @@ async function handleFs(subcommand, positionals, flags, context2) {
78849
78944
  }
78850
78945
 
78851
78946
  // src/commands/local.ts
78852
- var import_node_fs19 = require("node:fs");
78947
+ var import_node_fs20 = require("node:fs");
78853
78948
  var import_node_crypto = require("node:crypto");
78854
78949
  var import_node_child_process10 = require("node:child_process");
78855
78950
  var import_node_os6 = require("node:os");
78856
- var import_node_path18 = require("node:path");
78951
+ var import_node_path19 = require("node:path");
78857
78952
  var import_promises2 = require("node:readline/promises");
78858
78953
  var DEFAULT_CLUSTER_NAME = "eve-local";
78859
78954
  var DEFAULT_KUBE_CONTEXT = "k3d-eve-local";
78860
- var MANAGED_BIN_DIR = (0, import_node_path18.join)((0, import_node_os6.homedir)(), ".eve", "bin");
78955
+ var MANAGED_BIN_DIR = (0, import_node_path19.join)((0, import_node_os6.homedir)(), ".eve", "bin");
78861
78956
  var LOCAL_API_URL = "http://api.eve.lvh.me";
78862
78957
  var WATCH_INTERVAL_MS = 5e3;
78863
78958
  var K3D_VERSION = "v5.7.5";
78864
78959
  var KUBECTL_STABLE_URL = "https://dl.k8s.io/release/stable.txt";
78865
- var LOCAL_STACK_ROOT = (0, import_node_path18.resolve)(__dirname, "..", "assets", "local-k8s");
78866
- var LOCAL_STACK_OVERLAY = (0, import_node_path18.join)(LOCAL_STACK_ROOT, "overlays", "local");
78867
- var LOCAL_STACK_BASE = (0, import_node_path18.join)(LOCAL_STACK_ROOT, "base");
78960
+ var LOCAL_STACK_ROOT = (0, import_node_path19.resolve)(__dirname, "..", "assets", "local-k8s");
78961
+ var LOCAL_STACK_OVERLAY = (0, import_node_path19.join)(LOCAL_STACK_ROOT, "overlays", "local");
78962
+ var LOCAL_STACK_BASE = (0, import_node_path19.join)(LOCAL_STACK_ROOT, "base");
78868
78963
  var DEFAULT_PLATFORM_NAMESPACE = "eve-horizon";
78869
78964
  var CONFIGURED_REGISTRY = process.env.ECR_REGISTRY?.trim();
78870
78965
  var CONFIGURED_NAMESPACE = process.env.ECR_NAMESPACE?.trim() || DEFAULT_PLATFORM_NAMESPACE;
@@ -79267,7 +79362,7 @@ async function ensureManagedTool(tool, runtimeOptions) {
79267
79362
  if (findExecutable(tool)) {
79268
79363
  return;
79269
79364
  }
79270
- (0, import_node_fs19.mkdirSync)(MANAGED_BIN_DIR, { recursive: true });
79365
+ (0, import_node_fs20.mkdirSync)(MANAGED_BIN_DIR, { recursive: true });
79271
79366
  if (tool === "k3d") {
79272
79367
  printProgress(runtimeOptions, `Installing k3d ${K3D_VERSION} into ${MANAGED_BIN_DIR}...`);
79273
79368
  await installK3dBinary();
@@ -79283,7 +79378,7 @@ async function installK3dBinary() {
79283
79378
  const platform2 = normalizePlatform(process.platform);
79284
79379
  const arch = normalizeArch(process.arch);
79285
79380
  const url = `https://github.com/k3d-io/k3d/releases/download/${K3D_VERSION}/k3d-${platform2}-${arch}`;
79286
- await downloadBinary(url, (0, import_node_path18.join)(MANAGED_BIN_DIR, "k3d"));
79381
+ await downloadBinary(url, (0, import_node_path19.join)(MANAGED_BIN_DIR, "k3d"));
79287
79382
  }
79288
79383
  async function installKubectlBinary() {
79289
79384
  const platform2 = normalizePlatform(process.platform);
@@ -79303,7 +79398,7 @@ async function installKubectlBinary() {
79303
79398
  if (expectedChecksum !== actualChecksum) {
79304
79399
  throw new Error(`kubectl checksum verification failed (expected ${expectedChecksum}, got ${actualChecksum}).`);
79305
79400
  }
79306
- writeExecutable((0, import_node_path18.join)(MANAGED_BIN_DIR, "kubectl"), binary);
79401
+ writeExecutable((0, import_node_path19.join)(MANAGED_BIN_DIR, "kubectl"), binary);
79307
79402
  }
79308
79403
  function normalizePlatform(platform2) {
79309
79404
  if (platform2 === "darwin" || platform2 === "linux") {
@@ -79348,9 +79443,9 @@ async function fetchText(url, headers) {
79348
79443
  }
79349
79444
  function writeExecutable(destination, bytes) {
79350
79445
  const tempPath = `${destination}.tmp-${Date.now()}-${process.pid}`;
79351
- (0, import_node_fs19.writeFileSync)(tempPath, bytes);
79352
- (0, import_node_fs19.chmodSync)(tempPath, 493);
79353
- (0, import_node_fs19.renameSync)(tempPath, destination);
79446
+ (0, import_node_fs20.writeFileSync)(tempPath, bytes);
79447
+ (0, import_node_fs20.chmodSync)(tempPath, 493);
79448
+ (0, import_node_fs20.renameSync)(tempPath, destination);
79354
79449
  }
79355
79450
  async function ensureClusterReady(runtimeOptions) {
79356
79451
  const k3d = requireToolPath("k3d", "Run 'eve local up' again to auto-install managed tools.");
@@ -79495,13 +79590,13 @@ async function importPlatformImages(version2, runtimeOptions) {
79495
79590
  }
79496
79591
  }
79497
79592
  function importImageViaTar(docker, k3d, imageTag, component, stdio) {
79498
- const tarPath = (0, import_node_path18.join)((0, import_node_os6.tmpdir)(), `eve-local-${component}-${Date.now()}-${process.pid}.tar`);
79593
+ const tarPath = (0, import_node_path19.join)((0, import_node_os6.tmpdir)(), `eve-local-${component}-${Date.now()}-${process.pid}.tar`);
79499
79594
  try {
79500
79595
  run(docker, ["image", "save", "--platform", "linux/amd64", imageTag, "-o", tarPath], { stdio });
79501
79596
  run(k3d, ["image", "import", "--mode", "direct", tarPath, "-c", DEFAULT_CLUSTER_NAME], { stdio });
79502
79597
  } finally {
79503
- if ((0, import_node_fs19.existsSync)(tarPath)) {
79504
- (0, import_node_fs19.unlinkSync)(tarPath);
79598
+ if ((0, import_node_fs20.existsSync)(tarPath)) {
79599
+ (0, import_node_fs20.unlinkSync)(tarPath);
79505
79600
  }
79506
79601
  }
79507
79602
  }
@@ -79568,7 +79663,7 @@ function writeManagerMarker(kubectl, runtimeOptions) {
79568
79663
  }
79569
79664
  function runDbMigration(timeoutSeconds, runtimeOptions) {
79570
79665
  const kubectl = requireToolPath("kubectl", "Run 'eve local up' again to auto-install managed tools.");
79571
- const migrateJobPath = (0, import_node_path18.join)(LOCAL_STACK_BASE, "db-migrate-job.yaml");
79666
+ const migrateJobPath = (0, import_node_path19.join)(LOCAL_STACK_BASE, "db-migrate-job.yaml");
79572
79667
  printProgress(runtimeOptions, "Running database migrations...");
79573
79668
  run(kubectl, ["--context", DEFAULT_KUBE_CONTEXT, "-n", "eve", "delete", "job/eve-db-migrate", "--ignore-not-found"], {
79574
79669
  stdio: "pipe",
@@ -79669,7 +79764,7 @@ function readSecretValue(kubectl, key) {
79669
79764
  }
79670
79765
  function runAuthBootstrap(timeoutSeconds, runtimeOptions) {
79671
79766
  const kubectl = requireToolPath("kubectl", "Run 'eve local up' again to auto-install managed tools.");
79672
- const bootstrapJobPath = (0, import_node_path18.join)(LOCAL_STACK_BASE, "auth-bootstrap-job.yaml");
79767
+ const bootstrapJobPath = (0, import_node_path19.join)(LOCAL_STACK_BASE, "auth-bootstrap-job.yaml");
79673
79768
  printProgress(runtimeOptions, "Bootstrapping auth database role...");
79674
79769
  run(kubectl, ["--context", DEFAULT_KUBE_CONTEXT, "-n", "eve", "delete", "job/auth-db-bootstrap", "--ignore-not-found"], {
79675
79770
  stdio: "pipe",
@@ -79769,12 +79864,12 @@ function assertLocalAssetsPresent() {
79769
79864
  const files = [
79770
79865
  LOCAL_STACK_OVERLAY,
79771
79866
  LOCAL_STACK_BASE,
79772
- (0, import_node_path18.join)(LOCAL_STACK_OVERLAY, "kustomization.yaml"),
79773
- (0, import_node_path18.join)(LOCAL_STACK_BASE, "db-migrate-job.yaml"),
79774
- (0, import_node_path18.join)(LOCAL_STACK_BASE, "auth-bootstrap-job.yaml")
79867
+ (0, import_node_path19.join)(LOCAL_STACK_OVERLAY, "kustomization.yaml"),
79868
+ (0, import_node_path19.join)(LOCAL_STACK_BASE, "db-migrate-job.yaml"),
79869
+ (0, import_node_path19.join)(LOCAL_STACK_BASE, "auth-bootstrap-job.yaml")
79775
79870
  ];
79776
79871
  for (const file of files) {
79777
- if (!(0, import_node_fs19.existsSync)(file)) {
79872
+ if (!(0, import_node_fs20.existsSync)(file)) {
79778
79873
  throw new Error(
79779
79874
  `Missing local stack assets at ${file}. Reinstall the CLI or ensure package assets were published.`
79780
79875
  );
@@ -79862,7 +79957,7 @@ function parseTimeoutSeconds(flags, defaultValue) {
79862
79957
  }
79863
79958
  function run(command, args, options = {}) {
79864
79959
  const env = { ...process.env };
79865
- if ((0, import_node_fs19.existsSync)(MANAGED_BIN_DIR)) {
79960
+ if ((0, import_node_fs20.existsSync)(MANAGED_BIN_DIR)) {
79866
79961
  env.PATH = `${MANAGED_BIN_DIR}:${env.PATH ?? ""}`;
79867
79962
  }
79868
79963
  const result = (0, import_node_child_process10.spawnSync)(command, args, {
@@ -79882,8 +79977,8 @@ function run(command, args, options = {}) {
79882
79977
  return { status, stdout, stderr };
79883
79978
  }
79884
79979
  function findExecutable(name) {
79885
- const managed = (0, import_node_path18.join)(MANAGED_BIN_DIR, name);
79886
- if ((0, import_node_fs19.existsSync)(managed)) {
79980
+ const managed = (0, import_node_path19.join)(MANAGED_BIN_DIR, name);
79981
+ if ((0, import_node_fs20.existsSync)(managed)) {
79887
79982
  return managed;
79888
79983
  }
79889
79984
  const found = (0, import_node_child_process10.spawnSync)("which", [name], {
@@ -79901,11 +79996,11 @@ function ensureTool(name, installHint) {
79901
79996
  }
79902
79997
  }
79903
79998
  function requireToolPath(name, hint) {
79904
- const path6 = findExecutable(name);
79905
- if (!path6) {
79999
+ const path7 = findExecutable(name);
80000
+ if (!path7) {
79906
80001
  throw new Error(`Missing required tool '${name}'. ${hint}`);
79907
80002
  }
79908
- return path6;
80003
+ return path7;
79909
80004
  }
79910
80005
  function assertDockerRunning() {
79911
80006
  const docker = findExecutable("docker");