@eve-horizon/cli 0.2.54 → 0.2.56

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 +632 -243
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -8463,7 +8463,7 @@ var require_has_flag = __commonJS({
8463
8463
  var require_supports_color = __commonJS({
8464
8464
  "../../node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js"(exports2, module2) {
8465
8465
  "use strict";
8466
- var os4 = require("os");
8466
+ var os5 = require("os");
8467
8467
  var tty = require("tty");
8468
8468
  var hasFlag = require_has_flag();
8469
8469
  var { env } = process;
@@ -8511,7 +8511,7 @@ var require_supports_color = __commonJS({
8511
8511
  return min;
8512
8512
  }
8513
8513
  if (process.platform === "win32") {
8514
- const osRelease = os4.release().split(".");
8514
+ const osRelease = os5.release().split(".");
8515
8515
  if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
8516
8516
  return Number(osRelease[2]) >= 14931 ? 3 : 2;
8517
8517
  }
@@ -8768,19 +8768,19 @@ var require_module_details_from_path = __commonJS({
8768
8768
  basedir += segments[i] + sep2;
8769
8769
  }
8770
8770
  }
8771
- var path8 = "";
8771
+ var path9 = "";
8772
8772
  var lastSegmentIndex = segments.length - 1;
8773
8773
  for (var i2 = index + offset; i2 <= lastSegmentIndex; i2++) {
8774
8774
  if (i2 === lastSegmentIndex) {
8775
- path8 += segments[i2];
8775
+ path9 += segments[i2];
8776
8776
  } else {
8777
- path8 += segments[i2] + sep2;
8777
+ path9 += segments[i2] + sep2;
8778
8778
  }
8779
8779
  }
8780
8780
  return {
8781
8781
  name,
8782
8782
  basedir,
8783
- path: path8
8783
+ path: path9
8784
8784
  };
8785
8785
  };
8786
8786
  }
@@ -8790,8 +8790,8 @@ var require_module_details_from_path = __commonJS({
8790
8790
  var require_homedir = __commonJS({
8791
8791
  "../../node_modules/.pnpm/resolve@1.22.11/node_modules/resolve/lib/homedir.js"(exports2, module2) {
8792
8792
  "use strict";
8793
- var os4 = require("os");
8794
- module2.exports = os4.homedir || function homedir6() {
8793
+ var os5 = require("os");
8794
+ module2.exports = os5.homedir || function homedir6() {
8795
8795
  var home = process.env.HOME;
8796
8796
  var user = process.env.LOGNAME || process.env.USER || process.env.LNAME || process.env.USERNAME;
8797
8797
  if (process.platform === "win32") {
@@ -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 path8 = require("path");
8890
- var parse4 = path8.parse || require_path_parse();
8889
+ var path9 = require("path");
8890
+ var parse4 = path9.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 path8.resolve(prefix, aPath, moduleDir);
8908
+ return path9.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 fs6 = require("fs");
9270
9270
  var getHomedir = require_homedir();
9271
- var path8 = require("path");
9271
+ var path9 = 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
- path8.join(homedir6, ".node_modules"),
9284
- path8.join(homedir6, ".node_libraries")
9283
+ path9.join(homedir6, ".node_modules"),
9284
+ path9.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] = path8.join(dirs[i], x);
9334
+ dirs[i] = path9.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 || path8.dirname(caller());
9366
+ var basedir = opts.basedir || path9.dirname(caller());
9367
9367
  var parent = opts.filename || basedir;
9368
9368
  opts.paths = opts.paths || defaultPaths();
9369
- var absoluteStart = path8.resolve(basedir);
9369
+ var absoluteStart = path9.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 = path8.resolve(basedir2, x);
9382
+ res = path9.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(path8.dirname(file), onpkg);
9440
+ else loadpkg(path9.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 = path8.relative(dir, file);
9445
+ var rfile = path9.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
- path8.resolve(dir, r),
9450
+ path9.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(path8.dirname(dir), cb2);
9471
- var pkgfile = path8.join(pkgdir, "package.json");
9470
+ if (unwrapErr) return loadpkg(path9.dirname(dir), cb2);
9471
+ var pkgfile = path9.join(pkgdir, "package.json");
9472
9472
  isFile(pkgfile, function(err2, ex) {
9473
- if (!ex) return loadpkg(path8.dirname(dir), cb2);
9473
+ if (!ex) return loadpkg(path9.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 = path8.join(pkgdir, "package.json");
9494
+ var pkgfile = path9.join(pkgdir, "package.json");
9495
9495
  isFile(pkgfile, function(err2, ex) {
9496
9496
  if (err2) return cb2(err2);
9497
- if (!ex) return loadAsFile(path8.join(x2, "index"), fpkg, cb2);
9497
+ if (!ex) return loadAsFile(path9.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(path8.resolve(x2, pkg.main), pkg, function(err4, m, pkg2) {
9513
+ loadAsFile(path9.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(path8.join(x2, "index"), pkg2, cb2);
9517
- var dir = path8.resolve(x2, pkg2.main);
9516
+ if (!pkg2) return loadAsFile(path9.join(x2, "index"), pkg2, cb2);
9517
+ var dir = path9.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(path8.join(x2, "index"), pkg3, cb2);
9521
+ loadAsFile(path9.join(x2, "index"), pkg3, cb2);
9522
9522
  });
9523
9523
  });
9524
9524
  return;
9525
9525
  }
9526
- loadAsFile(path8.join(x2, "/index"), pkg, cb2);
9526
+ loadAsFile(path9.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(path8.dirname(dir), isdir);
9534
+ isDirectory(path9.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 fs6 = require("fs");
9764
- var path8 = require("path");
9764
+ var path9 = 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
- path8.join(homedir6, ".node_modules"),
9777
- path8.join(homedir6, ".node_libraries")
9776
+ path9.join(homedir6, ".node_modules"),
9777
+ path9.join(homedir6, ".node_libraries")
9778
9778
  ];
9779
9779
  };
9780
9780
  var defaultIsFile = function isFile(file) {
@@ -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] = path8.join(dirs[i], x);
9825
+ dirs[i] = path9.join(dirs[i], x);
9826
9826
  }
9827
9827
  return dirs;
9828
9828
  };
@@ -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 || path8.dirname(caller());
9845
+ var basedir = opts.basedir || path9.dirname(caller());
9846
9846
  var parent = opts.filename || basedir;
9847
9847
  opts.paths = opts.paths || defaultPaths();
9848
- var absoluteStart = maybeRealpathSync(realpathSync, path8.resolve(basedir), opts);
9848
+ var absoluteStart = maybeRealpathSync(realpathSync, path9.resolve(basedir), opts);
9849
9849
  if (relativePathRegex.test(x)) {
9850
- var res = path8.resolve(absoluteStart, x);
9850
+ var res = path9.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(path8.dirname(x2));
9864
+ var pkg = loadpkg(path9.dirname(x2));
9865
9865
  if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {
9866
- var rfile = path8.relative(pkg.dir, x2);
9866
+ var rfile = path9.relative(pkg.dir, x2);
9867
9867
  var r = opts.pathFilter(pkg.pkg, x2, rfile);
9868
9868
  if (r) {
9869
- x2 = path8.resolve(pkg.dir, r);
9869
+ x2 = path9.resolve(pkg.dir, r);
9870
9870
  }
9871
9871
  }
9872
9872
  if (isFile(x2)) {
@@ -9885,9 +9885,9 @@ var require_sync = __commonJS({
9885
9885
  return;
9886
9886
  }
9887
9887
  if (nodeModulesRegex.test(dir)) return;
9888
- var pkgfile = path8.join(maybeRealpathSync(realpathSync, dir, opts), "package.json");
9888
+ var pkgfile = path9.join(maybeRealpathSync(realpathSync, dir, opts), "package.json");
9889
9889
  if (!isFile(pkgfile)) {
9890
- return loadpkg(path8.dirname(dir));
9890
+ return loadpkg(path9.dirname(dir));
9891
9891
  }
9892
9892
  var pkg = readPackageSync(readFileSync26, pkgfile);
9893
9893
  if (pkg && opts.packageFilter) {
@@ -9900,7 +9900,7 @@ var require_sync = __commonJS({
9900
9900
  return { pkg, dir };
9901
9901
  }
9902
9902
  function loadAsDirectorySync(x2) {
9903
- var pkgfile = path8.join(maybeRealpathSync(realpathSync, x2, opts), "/package.json");
9903
+ var pkgfile = path9.join(maybeRealpathSync(realpathSync, x2, opts), "/package.json");
9904
9904
  if (isFile(pkgfile)) {
9905
9905
  try {
9906
9906
  var pkg = readPackageSync(readFileSync26, pkgfile);
@@ -9923,15 +9923,15 @@ var require_sync = __commonJS({
9923
9923
  pkg.main = "index";
9924
9924
  }
9925
9925
  try {
9926
- var m2 = loadAsFileSync(path8.resolve(x2, pkg.main));
9926
+ var m2 = loadAsFileSync(path9.resolve(x2, pkg.main));
9927
9927
  if (m2) return m2;
9928
- var n2 = loadAsDirectorySync(path8.resolve(x2, pkg.main));
9928
+ var n2 = loadAsDirectorySync(path9.resolve(x2, pkg.main));
9929
9929
  if (n2) return n2;
9930
9930
  } catch (e) {
9931
9931
  }
9932
9932
  }
9933
9933
  }
9934
- return loadAsFileSync(path8.join(x2, "/index"));
9934
+ return loadAsFileSync(path9.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(path8.dirname(dir))) {
9943
+ if (isDirectory(path9.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 path8 = require("path");
10034
+ var path9 = 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();
@@ -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 = path8.parse(filename);
10208
+ const parsedPath = path9.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 + path8.sep + path8.relative(basedir, filename);
10246
+ moduleName = moduleName + path9.sep + path9.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 = path8.sep !== "/" ? stat.path.split(path8.sep).join("/") : stat.path;
10283
- return path8.posix.join(stat.name, normalizedPath).replace(normalize2, "");
10282
+ const normalizedPath = path9.sep !== "/" ? stat.path.split(path9.sep).join("/") : stat.path;
10283
+ return path9.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 path8 = require("path");
10372
+ var path9 = 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 path8.sep !== ModuleNameTrie_1.ModuleNameSeparator ? moduleNameOrPath.split(path8.sep).join(ModuleNameTrie_1.ModuleNameSeparator) : moduleNameOrPath;
10436
+ return path9.sep !== ModuleNameTrie_1.ModuleNameSeparator ? moduleNameOrPath.split(path9.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 path8 = require("path");
10496
+ var path9 = require("path");
10497
10497
  var parse4 = 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 + path8.sep + path8.relative(baseDir, fileURLToPath(filename));
10592
+ name = name + path9.sep + path9.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 path8 = require("path");
10668
+ var path9 = 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)(path8.join(baseDir, "package.json"), {
10765
+ const json = (0, fs_1.readFileSync)(path9.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 = path8.normalize(name);
10808
+ const normalizedName = path9.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 && path8.isAbsolute(name)) {
10855
- const parsedPath = path8.parse(name);
10854
+ if (!baseDir && path9.isAbsolute(name)) {
10855
+ const parsedPath = path9.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 = path8.isAbsolute(module3.name) ? new require_in_the_middle_1.Hook([module3.name], { internals: true }, onRequire) : this._requireInTheMiddleSingleton.register(module3.name, onRequire);
10864
+ const hook = path9.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 path8 = require("path");
18111
+ var path9 = require("path");
18112
18112
  var fs6 = 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 = path8.basename(handlerDef);
18139
+ const handler = path9.basename(handlerDef);
18140
18140
  const moduleRoot = handlerDef.substr(0, handlerDef.length - handler.length);
18141
18141
  const [module3, functionName] = handler.split(".", 2);
18142
- let filename = path8.resolve(taskRoot, moduleRoot, module3);
18142
+ let filename = path9.resolve(taskRoot, moduleRoot, module3);
18143
18143
  if (!filename.endsWith(".js")) {
18144
18144
  try {
18145
18145
  fs6.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 = (path8, layer) => {
21309
+ var getRouterPath = (path9, 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 `${path8}${stackLayer.route.path}`;
21313
+ return `${path9}${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)(path8, stackLayer);
21316
+ return (0, exports2.getRouterPath)(path9, stackLayer);
21317
21317
  }
21318
- return path8;
21318
+ return path9;
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((path8) => path8 !== "/" && path8 !== "/*").join("").replace(/\/{2,}/g, "/");
21518
+ const route = req[internal_types_1._LAYERS_STORE_PROPERTY].filter((path9) => path9 !== "/" && path9 !== "/*").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(path8) {
22397
- return new Promise((resolve8) => functionWithOriginalProperties(path8, resolve8));
22396
+ const promisified = function(path9) {
22397
+ return new Promise((resolve8) => functionWithOriginalProperties(path9, 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, path8) {
22773
- let field = getField(contextValue, path8);
22772
+ function createFieldIfNotExists(tracer, getConfig, contextValue, info, path9) {
22773
+ let field = getField(contextValue, path9);
22774
22774
  let spanAdded = false;
22775
22775
  if (!field) {
22776
22776
  spanAdded = true;
22777
- const parent = getParentField(contextValue, path8);
22777
+ const parent = getParentField(contextValue, path9);
22778
22778
  field = {
22779
22779
  parent,
22780
- span: createResolverSpan(tracer, getConfig, contextValue, info, path8, parent.span),
22780
+ span: createResolverSpan(tracer, getConfig, contextValue, info, path9, parent.span),
22781
22781
  error: null
22782
22782
  };
22783
- addField(contextValue, path8, field);
22783
+ addField(contextValue, path9, field);
22784
22784
  }
22785
22785
  return { spanAdded, field };
22786
22786
  }
22787
- function createResolverSpan(tracer, getConfig, contextValue, info, path8, parentSpan) {
22787
+ function createResolverSpan(tracer, getConfig, contextValue, info, path9, 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]: path8.join("."),
22791
+ [AttributeNames_1.AttributeNames.FIELD_PATH]: path9.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, path8, field) {
22832
- return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path8.join(".")] = field;
22831
+ function addField(contextValue, path9, field) {
22832
+ return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path9.join(".")] = field;
22833
22833
  }
22834
- function getField(contextValue, path8) {
22835
- return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path8.join(".")];
22834
+ function getField(contextValue, path9) {
22835
+ return contextValue[symbols_1.OTEL_GRAPHQL_DATA_SYMBOL].fields[path9.join(".")];
22836
22836
  }
22837
- function getParentField(contextValue, path8) {
22838
- for (let i = path8.length - 1; i > 0; i--) {
22839
- const field = getField(contextValue, path8.slice(0, i));
22837
+ function getParentField(contextValue, path9) {
22838
+ for (let i = path9.length - 1; i > 0; i--) {
22839
+ const field = getField(contextValue, path9.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, path8) {
22848
+ function pathToArray(mergeItems, path9) {
22849
22849
  const flattened = [];
22850
- let curr = path8;
22850
+ let curr = path9;
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 path8 = pathToArray(config.mergeItems, info && info.path);
22988
- const depth = path8.filter((item) => typeof item === "string").length;
22987
+ const path9 = pathToArray(config.mergeItems, info && info.path);
22988
+ const depth = path9.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, path8);
22992
+ field = getParentField(contextValue, path9);
22993
22993
  } else {
22994
- const newField = createFieldIfNotExists(tracer, getConfig, contextValue, info, path8);
22994
+ const newField = createFieldIfNotExists(tracer, getConfig, contextValue, info, path9);
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 path8 = reqUrlObject.path || "/";
28450
+ const path9 = 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}${path8}`;
28455
+ return `${protocol}//${host}${path9}`;
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 path8 = pathLayer.path;
30523
+ const path9 = 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, path8);
30527
+ pathStack[j] = this._patchLayer(routedMiddleware, true, path9);
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(path8, ...handler) {
36918
- return original.call(this, path8, ...instrumentation._handlerPatcher({ type: types_1.LayerType.REQUEST_HANDLER, path: path8, methodName }, handler));
36917
+ return function(path9, ...handler) {
36918
+ return original.call(this, path9, ...instrumentation._handlerPatcher({ type: types_1.LayerType.REQUEST_HANDLER, path: path9, 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 path8 of paths) {
38866
+ for (const path9 of paths) {
38867
38867
  try {
38868
- const result = await fs_1.promises.readFile(path8, { encoding: "utf8" });
38868
+ const result = await fs_1.promises.readFile(path9, { encoding: "utf8" });
38869
38869
  return result.trim();
38870
38870
  } catch (e) {
38871
38871
  api_1.diag.debug(`error reading machine id: ${e}`);
@@ -39075,7 +39075,7 @@ var require_ProcessDetectorSync = __commonJS({
39075
39075
  var api_1 = (init_esm(), __toCommonJS(esm_exports));
39076
39076
  var semantic_conventions_1 = (init_esm2(), __toCommonJS(esm_exports2));
39077
39077
  var Resource_1 = require_Resource();
39078
- var os4 = require("os");
39078
+ var os5 = require("os");
39079
39079
  var ProcessDetectorSync = class {
39080
39080
  detect(_config) {
39081
39081
  const attributes = {
@@ -39095,7 +39095,7 @@ var require_ProcessDetectorSync = __commonJS({
39095
39095
  attributes[semantic_conventions_1.SEMRESATTRS_PROCESS_COMMAND] = process.argv[1];
39096
39096
  }
39097
39097
  try {
39098
- const userInfo = os4.userInfo();
39098
+ const userInfo = os5.userInfo();
39099
39099
  attributes[semantic_conventions_1.SEMRESATTRS_PROCESS_OWNER] = userInfo.username;
39100
39100
  } catch (e) {
39101
39101
  api_1.diag.debug(`error obtaining process owner: ${e}`);
@@ -40011,7 +40011,7 @@ var require_AwsEcsDetectorSync = __commonJS({
40011
40011
  var http = require("http");
40012
40012
  var util2 = require("util");
40013
40013
  var fs6 = require("fs");
40014
- var os4 = require("os");
40014
+ var os5 = require("os");
40015
40015
  var HTTP_TIMEOUT_IN_MS = 1e3;
40016
40016
  var AwsEcsDetectorSync = class _AwsEcsDetectorSync {
40017
40017
  detect() {
@@ -40051,7 +40051,7 @@ var require_AwsEcsDetectorSync = __commonJS({
40051
40051
  * and then return null string
40052
40052
  */
40053
40053
  static async _getContainerIdAndHostnameResource() {
40054
- const hostName = os4.hostname();
40054
+ const hostName = os5.hostname();
40055
40055
  let containerId = "";
40056
40056
  try {
40057
40057
  const rawData = await _AwsEcsDetectorSync.readFileAsync(_AwsEcsDetectorSync.DEFAULT_CGROUP_PATH, "utf8");
@@ -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 path8 = url.path;
41557
- if (path8.length === 0) {
41556
+ const path9 = url.path;
41557
+ if (path9.length === 0) {
41558
41558
  return;
41559
41559
  }
41560
- if (url.scheme === "file" && path8.length === 1 && isNormalizedWindowsDriveLetter(path8[0])) {
41560
+ if (url.scheme === "file" && path9.length === 1 && isNormalizedWindowsDriveLetter(path9[0])) {
41561
41561
  return;
41562
41562
  }
41563
- path8.pop();
41563
+ path9.pop();
41564
41564
  }
41565
41565
  function includesCredentials(url) {
41566
41566
  return url.username !== "" || url.password !== "";
@@ -48616,21 +48616,21 @@ function ensureConfigDir() {
48616
48616
  (0, import_node_fs.mkdirSync)(CONFIG_DIR, { recursive: true });
48617
48617
  }
48618
48618
  }
48619
- function readJsonFile(path8, fallback) {
48620
- if (!(0, import_node_fs.existsSync)(path8)) return fallback;
48621
- const raw = (0, import_node_fs.readFileSync)(path8, "utf8");
48619
+ function readJsonFile(path9, fallback) {
48620
+ if (!(0, import_node_fs.existsSync)(path9)) return fallback;
48621
+ const raw = (0, import_node_fs.readFileSync)(path9, "utf8");
48622
48622
  if (!raw.trim()) return fallback;
48623
48623
  try {
48624
48624
  return JSON.parse(raw);
48625
48625
  } catch (error) {
48626
- throw new Error(`Failed to parse ${path8}: ${error.message}`);
48626
+ throw new Error(`Failed to parse ${path9}: ${error.message}`);
48627
48627
  }
48628
48628
  }
48629
- function writeJsonFile(path8, value) {
48629
+ function writeJsonFile(path9, value) {
48630
48630
  ensureConfigDir();
48631
- (0, import_node_fs.writeFileSync)(path8, JSON.stringify(value, null, 2));
48631
+ (0, import_node_fs.writeFileSync)(path9, JSON.stringify(value, null, 2));
48632
48632
  try {
48633
- (0, import_node_fs.chmodSync)(path8, 384);
48633
+ (0, import_node_fs.chmodSync)(path9, 384);
48634
48634
  } catch {
48635
48635
  }
48636
48636
  }
@@ -51526,8 +51526,8 @@ function showSubcommandHelp(command, subcommand) {
51526
51526
  }
51527
51527
 
51528
51528
  // src/lib/client.ts
51529
- async function requestJson(context2, path8, options = {}) {
51530
- const response = await requestRaw(context2, path8, options);
51529
+ async function requestJson(context2, path9, options = {}) {
51530
+ const response = await requestRaw(context2, path9, options);
51531
51531
  const method = options.method ?? "GET";
51532
51532
  if (response.status === 401 && options.tokenOverride === void 0) {
51533
51533
  const refreshed = await attemptRefresh(context2);
@@ -51535,20 +51535,20 @@ async function requestJson(context2, path8, options = {}) {
51535
51535
  context2.token = refreshed.access_token;
51536
51536
  context2.refreshToken = refreshed.refresh_token;
51537
51537
  context2.expiresAt = refreshed.expires_at;
51538
- const retry = await requestRaw(context2, path8, {
51538
+ const retry = await requestRaw(context2, path9, {
51539
51539
  ...options,
51540
51540
  tokenOverride: refreshed.access_token
51541
51541
  });
51542
51542
  if (!retry.ok && !options.allowError) {
51543
51543
  const message = formatErrorMessage(retry);
51544
- throw new Error(`HTTP ${retry.status}: ${method} ${path8}: ${message}`);
51544
+ throw new Error(`HTTP ${retry.status}: ${method} ${path9}: ${message}`);
51545
51545
  }
51546
51546
  return retry.data;
51547
51547
  }
51548
51548
  }
51549
51549
  if (!response.ok && !options.allowError) {
51550
51550
  const message = formatErrorMessage(response);
51551
- const requestTarget = `${method} ${path8}`;
51551
+ const requestTarget = `${method} ${path9}`;
51552
51552
  const requestFailedContext = `while calling ${requestTarget}: ${message}`;
51553
51553
  if ((response.status === 404 || response.status === 500) && message.includes("Project not found")) {
51554
51554
  const projectIdMatch = message.match(/Project not found: (proj_[a-z0-9]+)/);
@@ -51580,7 +51580,7 @@ function unwrapListResponse(value) {
51580
51580
  }
51581
51581
  throw new Error("Expected list response envelope with data[]");
51582
51582
  }
51583
- async function requestRaw(context2, path8, options = {}) {
51583
+ async function requestRaw(context2, path9, options = {}) {
51584
51584
  const headers = {
51585
51585
  ...options.headers
51586
51586
  };
@@ -51591,7 +51591,7 @@ async function requestRaw(context2, path8, options = {}) {
51591
51591
  if (token) {
51592
51592
  headers.Authorization = `Bearer ${token}`;
51593
51593
  }
51594
- const url = `${context2.apiUrl}${path8}`;
51594
+ const url = `${context2.apiUrl}${path9}`;
51595
51595
  const method = options.method ?? "GET";
51596
51596
  let response;
51597
51597
  try {
@@ -51807,9 +51807,13 @@ async function handleOrg(subcommand, positionals, flags, context2) {
51807
51807
  }
51808
51808
  case "delete": {
51809
51809
  const orgId = positionals[0];
51810
- if (!orgId) throw new Error("Usage: eve org delete <org_id> [--force]");
51811
- const response = await requestJson(context2, `/orgs/${orgId}`, { method: "PATCH", body: { deleted: true } });
51812
- outputJson(response, json, `\u2713 Organization deleted: ${orgId}`);
51810
+ if (!orgId) throw new Error("Usage: eve org delete <org_id> [--hard] [--force]");
51811
+ const hard = toBoolean(flags.hard) ?? false;
51812
+ const force = toBoolean(flags.force) ?? false;
51813
+ const query = buildQuery({ hard: hard ? "true" : void 0, force: force ? "true" : void 0 });
51814
+ await requestRaw(context2, `/orgs/${orgId}${query}`, { method: "DELETE" });
51815
+ const mode = hard ? "hard-deleted" : "soft-deleted";
51816
+ outputJson({ org_id: orgId, deleted: true, mode }, json, `\u2713 Organization ${orgId} ${mode}`);
51813
51817
  return;
51814
51818
  }
51815
51819
  case "members": {
@@ -52231,10 +52235,23 @@ async function handleProject(subcommand, positionals, flags, context2) {
52231
52235
  }
52232
52236
  return;
52233
52237
  }
52238
+ case "delete": {
52239
+ const projectId = positionals[0] ?? (typeof flags.project === "string" ? flags.project : context2.projectId);
52240
+ if (!projectId) {
52241
+ throw new Error("Usage: eve project delete <project_id> [--hard] [--force]");
52242
+ }
52243
+ const hard = toBoolean(flags.hard) ?? false;
52244
+ const force = toBoolean(flags.force) ?? false;
52245
+ const query = buildQuery2({ hard: hard ? "true" : void 0, force: force ? "true" : void 0 });
52246
+ await requestRaw(context2, `/projects/${projectId}${query}`, { method: "DELETE" });
52247
+ const mode = hard ? "hard-deleted" : "soft-deleted";
52248
+ outputJson({ project_id: projectId, deleted: true, mode }, json, `\u2713 Project ${projectId} ${mode}`);
52249
+ return;
52250
+ }
52234
52251
  case "status":
52235
52252
  return handleStatus(flags, context2, json);
52236
52253
  default:
52237
- throw new Error("Usage: eve project <ensure|list|get|spend|update|sync|members|bootstrap|status>");
52254
+ throw new Error("Usage: eve project <ensure|list|get|spend|update|delete|sync|members|bootstrap|status>");
52238
52255
  }
52239
52256
  }
52240
52257
  async function handleStatus(flags, currentContext, json) {
@@ -52989,8 +53006,8 @@ function getErrorMap() {
52989
53006
 
52990
53007
  // ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js
52991
53008
  var makeIssue = (params) => {
52992
- const { data, path: path8, errorMaps, issueData } = params;
52993
- const fullPath = [...path8, ...issueData.path || []];
53009
+ const { data, path: path9, errorMaps, issueData } = params;
53010
+ const fullPath = [...path9, ...issueData.path || []];
52994
53011
  const fullIssue = {
52995
53012
  ...issueData,
52996
53013
  path: fullPath
@@ -53106,11 +53123,11 @@ var errorUtil;
53106
53123
 
53107
53124
  // ../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js
53108
53125
  var ParseInputLazyPath = class {
53109
- constructor(parent, value, path8, key) {
53126
+ constructor(parent, value, path9, key) {
53110
53127
  this._cachedPath = [];
53111
53128
  this.parent = parent;
53112
53129
  this.data = value;
53113
- this._path = path8;
53130
+ this._path = path9;
53114
53131
  this._key = key;
53115
53132
  }
53116
53133
  get path() {
@@ -57306,6 +57323,7 @@ var OrgMemberListResponseSchema = external_exports.object({
57306
57323
  var EnvironmentTypeSchema = external_exports.enum(["persistent", "temporary"]);
57307
57324
  var EnvironmentKindSchema = external_exports.enum(["standard", "preview"]);
57308
57325
  var EnvironmentStatusSchema = external_exports.enum(["active", "suspended", "terminated"]);
57326
+ var DeployStatusSchema = external_exports.enum(["unknown", "deployed", "undeployed", "deploying", "undeploying", "failed"]);
57309
57327
  var EnvironmentLabelsSchema = external_exports.record(external_exports.string(), external_exports.string());
57310
57328
  var CreateEnvironmentRequestSchema = external_exports.object({
57311
57329
  name: external_exports.string().min(1),
@@ -57340,6 +57358,7 @@ var EnvironmentResponseSchema = external_exports.object({
57340
57358
  alias: external_exports.string(),
57341
57359
  service_name: external_exports.string()
57342
57360
  })).optional(),
57361
+ deploy_status: DeployStatusSchema,
57343
57362
  status: EnvironmentStatusSchema,
57344
57363
  suspended_at: external_exports.string().nullable(),
57345
57364
  suspension_reason: external_exports.string().nullable(),
@@ -57353,6 +57372,9 @@ var EnvironmentListResponseSchema = external_exports.object({
57353
57372
  var DeleteEnvironmentRequestSchema = external_exports.object({
57354
57373
  force: external_exports.boolean().optional()
57355
57374
  }).optional().default({});
57375
+ var UndeployEnvironmentRequestSchema = external_exports.object({
57376
+ force: external_exports.boolean().optional()
57377
+ }).optional().default({});
57356
57378
  var EnvLogEntrySchema = external_exports.object({
57357
57379
  timestamp: external_exports.string(),
57358
57380
  line: external_exports.string(),
@@ -57961,7 +57983,9 @@ var AuthStatusResponseSchema = external_exports.object({
57961
57983
  is_job_token: external_exports.boolean().optional(),
57962
57984
  is_service_principal: external_exports.boolean().optional(),
57963
57985
  permissions: external_exports.array(external_exports.string()).optional(),
57964
- memberships: external_exports.array(external_exports.object({ org_id: external_exports.string(), role: external_exports.string() })).optional()
57986
+ memberships: external_exports.array(external_exports.object({ org_id: external_exports.string(), role: external_exports.string() })).optional(),
57987
+ /** Project-level role when X-Eve-Project-Id header is provided */
57988
+ project_role: external_exports.enum(["owner", "admin", "member"]).nullable().optional()
57965
57989
  });
57966
57990
  var AuthChallengeRequestSchema = external_exports.object({
57967
57991
  provider: external_exports.enum(["github_ssh", "nostr"]).default("github_ssh"),
@@ -58980,6 +59004,7 @@ var EventSchema = external_exports.object({
58980
59004
  actor_id: external_exports.string().nullable(),
58981
59005
  payload_json: external_exports.record(external_exports.unknown()).nullable(),
58982
59006
  dedupe_key: external_exports.string().nullable(),
59007
+ job_id: external_exports.string().nullable(),
58983
59008
  status: EventStatusSchema,
58984
59009
  processed_at: external_exports.string().nullable(),
58985
59010
  created_at: external_exports.string(),
@@ -60703,10 +60728,10 @@ function mergeXEve(packFragments, projectXEve) {
60703
60728
  var ORG_DOCS_PREFIX = "org_docs:/";
60704
60729
  var JOB_ATTACHMENTS_PREFIX = "job_attachments:/";
60705
60730
  var INGEST_PREFIX = "ingest:/";
60706
- function normalizeOrgDocPath(path8) {
60707
- if (!path8)
60731
+ function normalizeOrgDocPath(path9) {
60732
+ if (!path9)
60708
60733
  return "/";
60709
- return path8.startsWith("/") ? path8 : `/${path8}`;
60734
+ return path9.startsWith("/") ? path9 : `/${path9}`;
60710
60735
  }
60711
60736
  function parseResourceUri(uri) {
60712
60737
  if (!uri || typeof uri !== "string")
@@ -60717,11 +60742,11 @@ function parseResourceUri(uri) {
60717
60742
  return null;
60718
60743
  const match = raw.match(/^(.*)@v(\d+)$/);
60719
60744
  if (match) {
60720
- const path8 = normalizeOrgDocPath(match[1]);
60745
+ const path9 = normalizeOrgDocPath(match[1]);
60721
60746
  const version2 = Number(match[2]);
60722
60747
  if (!Number.isFinite(version2) || version2 <= 0)
60723
60748
  return null;
60724
- return { scheme: "org_docs", path: path8, version: version2 };
60749
+ return { scheme: "org_docs", path: path9, version: version2 };
60725
60750
  }
60726
60751
  return { scheme: "org_docs", path: normalizeOrgDocPath(raw) };
60727
60752
  }
@@ -62508,6 +62533,7 @@ var ALL_PERMISSIONS = [
62508
62533
  // Threads
62509
62534
  "threads:read",
62510
62535
  "threads:write",
62536
+ "threads:admin",
62511
62537
  // Projects
62512
62538
  "projects:read",
62513
62539
  "projects:create",
@@ -62535,9 +62561,19 @@ var ALL_PERMISSIONS = [
62535
62561
  // Builds
62536
62562
  "builds:read",
62537
62563
  "builds:write",
62564
+ "builds:admin",
62565
+ // Releases
62566
+ "releases:read",
62567
+ "releases:write",
62568
+ "releases:admin",
62538
62569
  // Pipelines
62539
62570
  "pipelines:read",
62540
62571
  "pipelines:write",
62572
+ "pipelines:admin",
62573
+ // Agents
62574
+ "agents:read",
62575
+ "agents:write",
62576
+ "agents:admin",
62541
62577
  // Workflows
62542
62578
  "workflows:read",
62543
62579
  "workflows:write",
@@ -62656,6 +62692,11 @@ var import_child_process3 = require("child_process");
62656
62692
  var import_util6 = require("util");
62657
62693
  var execFileAsync3 = (0, import_util6.promisify)(import_child_process3.execFile);
62658
62694
 
62695
+ // ../shared/dist/invoke/job-user-home.js
62696
+ var path4 = __toESM(require("path"), 1);
62697
+ var os2 = __toESM(require("os"), 1);
62698
+ var JOB_HOMES_ROOT = path4.join(os2.tmpdir(), "eve", "agent-homes");
62699
+
62659
62700
  // src/commands/job.ts
62660
62701
  async function handleJob(subcommand, positionals, flags, context2) {
62661
62702
  const json = Boolean(flags.json);
@@ -62999,10 +63040,14 @@ function parseSinceValue3(since) {
62999
63040
  async function handleList(flags, context2, json) {
63000
63041
  const all = Boolean(flags.all);
63001
63042
  if (all) {
63043
+ const root2 = Boolean(flags.root);
63002
63044
  const query2 = buildQuery3({
63003
63045
  org_id: getStringFlag(flags, ["org"]),
63004
63046
  project_id: getStringFlag(flags, ["project"]),
63005
63047
  phase: getStringFlag(flags, ["phase"]),
63048
+ label: getStringFlag(flags, ["label"]),
63049
+ type: getStringFlag(flags, ["type"]),
63050
+ parent: root2 ? "null" : void 0,
63006
63051
  limit: getStringFlag(flags, ["limit"]) ?? "50",
63007
63052
  offset: getStringFlag(flags, ["offset"])
63008
63053
  });
@@ -63031,6 +63076,7 @@ async function handleList(flags, context2, json) {
63031
63076
  const since = sinceRaw ? parseSinceValue3(sinceRaw) : void 0;
63032
63077
  const stuck = Boolean(flags.stuck);
63033
63078
  const stuckMinutes = getStringFlag(flags, ["stuck-minutes"]);
63079
+ const root = Boolean(flags.root);
63034
63080
  const query = buildQuery3({
63035
63081
  phase: getStringFlag(flags, ["phase"]),
63036
63082
  assignee: getStringFlag(flags, ["assignee"]),
@@ -63038,6 +63084,9 @@ async function handleList(flags, context2, json) {
63038
63084
  since,
63039
63085
  stuck: stuck ? "true" : void 0,
63040
63086
  stuck_minutes: stuckMinutes,
63087
+ label: getStringFlag(flags, ["label"]),
63088
+ type: getStringFlag(flags, ["type"]),
63089
+ parent: root ? "null" : void 0,
63041
63090
  limit: getStringFlag(flags, ["limit"]),
63042
63091
  offset: getStringFlag(flags, ["offset"])
63043
63092
  });
@@ -64046,8 +64095,9 @@ async function handleAttempts(positionals, context2, json) {
64046
64095
  async function handleLogs(positionals, flags, context2, json) {
64047
64096
  const jobId = positionals[0];
64048
64097
  if (!jobId) {
64049
- throw new Error("Usage: eve jobs logs <job-id> [--attempt=N] [--after=N]");
64098
+ throw new Error("Usage: eve jobs logs <job-id> [--attempt=N] [--after=N] [--summary]");
64050
64099
  }
64100
+ const summaryMode = Boolean(flags.summary);
64051
64101
  const attemptStr = getStringFlag(flags, ["attempt"]);
64052
64102
  let attemptNum;
64053
64103
  if (attemptStr) {
@@ -64071,6 +64121,40 @@ async function handleLogs(positionals, flags, context2, json) {
64071
64121
  );
64072
64122
  if (json) {
64073
64123
  outputJson(response, json);
64124
+ } else if (summaryMode) {
64125
+ if (response.logs.length === 0) {
64126
+ console.log(`No logs found for attempt #${attemptNum}.`);
64127
+ return;
64128
+ }
64129
+ console.log(`Logs for job ${jobId}, attempt #${attemptNum} (summary):`);
64130
+ console.log("");
64131
+ summaryLlmCallCount = 0;
64132
+ summaryLlmTotalMicroUsd = 0n;
64133
+ summaryLlmTotalInputTokens = 0;
64134
+ summaryLlmTotalOutputTokens = 0;
64135
+ summaryToolUseCount = 0;
64136
+ summaryLastLlmEmitCount = 0;
64137
+ summaryLastLlmEmitTime = Date.now();
64138
+ summaryStartTime = Date.now();
64139
+ for (const log of response.logs) {
64140
+ const sseEvent = {
64141
+ sequence: log.sequence,
64142
+ timestamp: log.timestamp,
64143
+ type: log.type || log.line.type || "log",
64144
+ line: log.line
64145
+ };
64146
+ const line = formatFollowSummaryLine(sseEvent);
64147
+ if (line) console.log(line);
64148
+ }
64149
+ const pending = flushSummaryLlmAggregate(true);
64150
+ if (pending) console.log(pending);
64151
+ console.log("");
64152
+ console.log("--- Summary ---");
64153
+ console.log(`Log entries: ${response.logs.length}`);
64154
+ console.log(`LLM calls: ${summaryLlmCallCount}`);
64155
+ console.log(`Tokens: ${formatNumber(summaryLlmTotalInputTokens)} in / ${formatNumber(summaryLlmTotalOutputTokens)} out`);
64156
+ console.log(`Cost: ~$${formatFixed6Usd(summaryLlmTotalMicroUsd)}`);
64157
+ console.log(`Tool uses: ${summaryToolUseCount}`);
64074
64158
  } else {
64075
64159
  if (response.logs.length === 0) {
64076
64160
  console.log(`No logs found for attempt #${attemptNum}.`);
@@ -64861,6 +64945,14 @@ function processWatchSSEEvent(eventType, eventData) {
64861
64945
  }
64862
64946
  var followLlmCallCount = 0;
64863
64947
  var followLlmTotalMicroUsd = 0n;
64948
+ var summaryLlmCallCount = 0;
64949
+ var summaryLlmTotalMicroUsd = 0n;
64950
+ var summaryLlmTotalInputTokens = 0;
64951
+ var summaryLlmTotalOutputTokens = 0;
64952
+ var summaryToolUseCount = 0;
64953
+ var summaryLastLlmEmitCount = 0;
64954
+ var summaryLastLlmEmitTime = 0;
64955
+ var summaryStartTime = 0;
64864
64956
  function parseFixed6Usd(amount) {
64865
64957
  const [wholeRaw, fracRaw = ""] = amount.split(".");
64866
64958
  const whole = wholeRaw.trim() ? BigInt(wholeRaw) : 0n;
@@ -64875,13 +64967,22 @@ function formatFixed6Usd(micro) {
64875
64967
  async function handleFollow(positionals, flags, context2) {
64876
64968
  const jobId = positionals[0];
64877
64969
  if (!jobId) {
64878
- throw new Error("Usage: eve job follow <job-id> [--raw] [--no-result]");
64970
+ throw new Error("Usage: eve job follow <job-id> [--raw] [--no-result] [--summary]");
64879
64971
  }
64880
64972
  const raw = Boolean(flags.raw);
64973
+ const summary = Boolean(flags.summary);
64881
64974
  const showResult = !flags["no-result"];
64882
- console.log(`Following ${jobId}...`);
64975
+ console.log(`Following ${jobId}${summary ? " (summary mode)" : ""}...`);
64883
64976
  followLlmCallCount = 0;
64884
64977
  followLlmTotalMicroUsd = 0n;
64978
+ summaryLlmCallCount = 0;
64979
+ summaryLlmTotalMicroUsd = 0n;
64980
+ summaryLlmTotalInputTokens = 0;
64981
+ summaryLlmTotalOutputTokens = 0;
64982
+ summaryToolUseCount = 0;
64983
+ summaryLastLlmEmitCount = 0;
64984
+ summaryLastLlmEmitTime = Date.now();
64985
+ summaryStartTime = Date.now();
64885
64986
  const url = `${context2.apiUrl}/jobs/${jobId}/stream`;
64886
64987
  const headers = {
64887
64988
  Accept: "text/event-stream"
@@ -64918,8 +65019,9 @@ async function handleFollow(positionals, flags, context2) {
64918
65019
  } else if (line.startsWith("data:")) {
64919
65020
  eventData = line.slice(5).trim();
64920
65021
  } else if (line === "" && eventData) {
64921
- exitCode = processSSEEvent(eventType, eventData, raw, showResult);
65022
+ exitCode = processSSEEvent(eventType, eventData, raw, showResult, summary);
64922
65023
  if (exitCode !== -1) {
65024
+ if (summary) printSummaryFooter();
64923
65025
  process.exit(exitCode);
64924
65026
  }
64925
65027
  eventType = "";
@@ -64939,22 +65041,25 @@ async function handleFollow(positionals, flags, context2) {
64939
65041
  }
64940
65042
  }
64941
65043
  if (eventData) {
64942
- exitCode = processSSEEvent(eventType, eventData, raw, showResult);
65044
+ exitCode = processSSEEvent(eventType, eventData, raw, showResult, summary);
64943
65045
  if (exitCode !== -1) {
65046
+ if (summary) printSummaryFooter();
64944
65047
  process.exit(exitCode);
64945
65048
  }
64946
65049
  }
64947
65050
  }
65051
+ if (summary) printSummaryFooter();
64948
65052
  console.log("");
64949
65053
  console.log("Stream ended.");
64950
65054
  process.exit(0);
64951
65055
  } catch (error) {
65056
+ if (summary) printSummaryFooter();
64952
65057
  const err = error;
64953
65058
  console.error(`Error following job: ${err.message}`);
64954
65059
  process.exit(1);
64955
65060
  }
64956
65061
  }
64957
- function processSSEEvent(eventType, eventData, raw, showResult) {
65062
+ function processSSEEvent(eventType, eventData, raw, showResult, summary = false) {
64958
65063
  let parsed;
64959
65064
  try {
64960
65065
  parsed = JSON.parse(eventData);
@@ -64969,6 +65074,9 @@ function processSSEEvent(eventType, eventData, raw, showResult) {
64969
65074
  const logEvent = parsed;
64970
65075
  if (raw) {
64971
65076
  console.log(JSON.stringify(logEvent));
65077
+ } else if (summary) {
65078
+ const line = formatFollowSummaryLine(logEvent);
65079
+ if (line) console.log(line);
64972
65080
  } else {
64973
65081
  formatFollowLogLine(logEvent);
64974
65082
  }
@@ -64978,6 +65086,17 @@ function processSSEEvent(eventType, eventData, raw, showResult) {
64978
65086
  const completeEvent = parsed;
64979
65087
  if (raw) {
64980
65088
  console.log(JSON.stringify(completeEvent));
65089
+ } else if (summary) {
65090
+ const pendingLlm = flushSummaryLlmAggregate(true);
65091
+ if (pendingLlm) console.log(pendingLlm);
65092
+ const ts = (/* @__PURE__ */ new Date()).toLocaleTimeString();
65093
+ const exitCode = completeEvent.exit_code ?? 0;
65094
+ const icon = exitCode === 0 ? "+" : "!";
65095
+ console.log(`[${ts}] [${icon}] Completed (exit ${exitCode})`);
65096
+ if (showResult && completeEvent.result) {
65097
+ console.log("");
65098
+ console.log(completeEvent.result);
65099
+ }
64981
65100
  } else {
64982
65101
  console.log("[+] Completed");
64983
65102
  if (showResult && completeEvent.result) {
@@ -64991,6 +65110,12 @@ function processSSEEvent(eventType, eventData, raw, showResult) {
64991
65110
  const errorEvent = parsed;
64992
65111
  if (raw) {
64993
65112
  console.log(JSON.stringify(errorEvent));
65113
+ } else if (summary) {
65114
+ const pendingLlm = flushSummaryLlmAggregate(true);
65115
+ if (pendingLlm) console.log(pendingLlm);
65116
+ const ts = (/* @__PURE__ */ new Date()).toLocaleTimeString();
65117
+ const errMsg = errorEvent.error ? `: ${errorEvent.error}` : "";
65118
+ console.log(`[${ts}] [!] Error${errMsg}`);
64994
65119
  } else {
64995
65120
  console.log("[!] Error");
64996
65121
  if (errorEvent.error) {
@@ -65110,6 +65235,134 @@ function formatFollowLogLine(event) {
65110
65235
  }
65111
65236
  }
65112
65237
  }
65238
+ function formatFollowSummaryLine(event) {
65239
+ const line = event.line;
65240
+ const type = event.type || line.type || "log";
65241
+ const ts = new Date(event.timestamp).toLocaleTimeString();
65242
+ if (type.startsWith("lifecycle_")) {
65243
+ const content = line;
65244
+ const phase = content.phase || "unknown";
65245
+ const action = content.action || "unknown";
65246
+ const duration = content.duration_ms;
65247
+ const success = content.success;
65248
+ const error = content.error;
65249
+ const meta = content.meta || {};
65250
+ if (action === "start") {
65251
+ const detail = formatLifecycleMeta(phase, meta);
65252
+ return `[${ts}] >> ${phase}${detail}`;
65253
+ }
65254
+ if (action === "end") {
65255
+ const dur = duration ? ` (${duration}ms)` : "";
65256
+ if (success === false && error) {
65257
+ return `[${ts}] !! ${phase} failed${dur}: ${error}`;
65258
+ }
65259
+ return `[${ts}] ok ${phase}${dur}`;
65260
+ }
65261
+ return null;
65262
+ }
65263
+ if (type === "llm.call") {
65264
+ const call = line;
65265
+ const source = call.source === "managed" ? "managed" : "byok";
65266
+ const provider = call.provider || "unknown";
65267
+ const model = call.model || "unknown";
65268
+ const status = call.status || "ok";
65269
+ const usage = call.usage ?? {};
65270
+ const inputTokens = Number(usage.input_tokens) || 0;
65271
+ const outputTokens = Number(usage.output_tokens) || 0;
65272
+ const costs = calculateBilledCost({
65273
+ rate_card: DEFAULT_RATE_CARD_V1,
65274
+ llm_usage: [{
65275
+ provider,
65276
+ model,
65277
+ source,
65278
+ usage: {
65279
+ input_tokens: inputTokens,
65280
+ output_tokens: outputTokens,
65281
+ cache_read_tokens: Number(usage.cache_read_tokens) || 0,
65282
+ cache_write_tokens: Number(usage.cache_write_tokens) || 0,
65283
+ reasoning_tokens: Number(usage.reasoning_tokens) || 0
65284
+ }
65285
+ }],
65286
+ compute_usage: null,
65287
+ markup_pct: 0,
65288
+ billing_currency: "usd",
65289
+ fx_usd_to_billing: null
65290
+ });
65291
+ summaryLlmCallCount += 1;
65292
+ summaryLlmTotalInputTokens += inputTokens;
65293
+ summaryLlmTotalOutputTokens += outputTokens;
65294
+ summaryLlmTotalMicroUsd += parseFixed6Usd(costs.base_cost_usd.llm_usd.amount);
65295
+ if (status === "error") {
65296
+ return `[${ts}] !! LLM error (${provider}/${model})`;
65297
+ }
65298
+ return flushSummaryLlmAggregate(false);
65299
+ }
65300
+ const normalized = normalizeLogLine(line);
65301
+ const nType = normalized.type;
65302
+ if (nType === "tool_result") {
65303
+ const resultText = normalized.message || line.tool_result || "";
65304
+ if (resultText.includes("requires approval") || resultText.includes("permission denied")) {
65305
+ return `[${ts}] !! Permission rejected: ${resultText.substring(0, 120)}`;
65306
+ }
65307
+ }
65308
+ if (type === "event") {
65309
+ const rawLine = line.raw;
65310
+ const msg = rawLine?.message;
65311
+ const contentArr = msg?.content;
65312
+ if (Array.isArray(contentArr)) {
65313
+ for (const block of contentArr) {
65314
+ const b2 = block;
65315
+ if (b2.is_error && typeof b2.content === "string" && b2.content.includes("requires approval")) {
65316
+ return `[${ts}] !! Permission rejected: ${b2.content.substring(0, 120)}`;
65317
+ }
65318
+ }
65319
+ }
65320
+ }
65321
+ if (nType === "assistant" || nType === "text") {
65322
+ const text = normalized.message || line.message || line.text || "";
65323
+ const match = text.match(/```eve-message\n([\s\S]*?)```/);
65324
+ if (match) {
65325
+ return `[${ts}] -- ${match[1].trim()}`;
65326
+ }
65327
+ }
65328
+ if (nType === "tool_use") {
65329
+ const tool = normalized.tool || line.tool;
65330
+ if (tool) {
65331
+ summaryToolUseCount += 1;
65332
+ return `[${ts}] ${tool}`;
65333
+ }
65334
+ }
65335
+ if (nType === "error") {
65336
+ const errMsg = normalized.message || line.message || JSON.stringify(line);
65337
+ return `[${ts}] !! Error: ${errMsg}`;
65338
+ }
65339
+ return null;
65340
+ }
65341
+ function flushSummaryLlmAggregate(force) {
65342
+ const callsSinceLastEmit = summaryLlmCallCount - summaryLastLlmEmitCount;
65343
+ const msSinceLastEmit = Date.now() - summaryLastLlmEmitTime;
65344
+ if (callsSinceLastEmit === 0) return null;
65345
+ if (!force && callsSinceLastEmit < 10 && msSinceLastEmit < 3e4) return null;
65346
+ summaryLastLlmEmitCount = summaryLlmCallCount;
65347
+ summaryLastLlmEmitTime = Date.now();
65348
+ const ts = (/* @__PURE__ */ new Date()).toLocaleTimeString();
65349
+ return `[${ts}] LLM: ${summaryLlmCallCount} calls, ${formatNumber(summaryLlmTotalInputTokens)} in / ${formatNumber(summaryLlmTotalOutputTokens)} out (~$${formatFixed6Usd(summaryLlmTotalMicroUsd)})`;
65350
+ }
65351
+ function printSummaryFooter() {
65352
+ const pending = flushSummaryLlmAggregate(true);
65353
+ if (pending) console.log(pending);
65354
+ const elapsed = Math.round((Date.now() - summaryStartTime) / 1e3);
65355
+ const mins = Math.floor(elapsed / 60);
65356
+ const secs = elapsed % 60;
65357
+ const durStr = mins > 0 ? `${mins}m ${secs}s` : `${secs}s`;
65358
+ console.log("");
65359
+ console.log("--- Summary ---");
65360
+ console.log(`Duration: ${durStr}`);
65361
+ console.log(`LLM calls: ${summaryLlmCallCount}`);
65362
+ console.log(`Tokens: ${formatNumber(summaryLlmTotalInputTokens)} in / ${formatNumber(summaryLlmTotalOutputTokens)} out`);
65363
+ console.log(`Cost: ~$${formatFixed6Usd(summaryLlmTotalMicroUsd)}`);
65364
+ console.log(`Tool uses: ${summaryToolUseCount}`);
65365
+ }
65113
65366
  function getStatusIcon(status) {
65114
65367
  switch (status) {
65115
65368
  case "pending":
@@ -67599,9 +67852,9 @@ function getOrchestratorUrl(context2) {
67599
67852
  apiUrl.port = orchPort;
67600
67853
  return apiUrl.toString().replace(/\/$/, "");
67601
67854
  }
67602
- async function requestOrchestratorJson(context2, path8, options) {
67855
+ async function requestOrchestratorJson(context2, path9, options) {
67603
67856
  const orchUrl = getOrchestratorUrl(context2);
67604
- const url = `${orchUrl}${path8}`;
67857
+ const url = `${orchUrl}${path9}`;
67605
67858
  const headers = {};
67606
67859
  if (options?.body) {
67607
67860
  headers["Content-Type"] = "application/json";
@@ -67857,6 +68110,8 @@ async function handleEnv(subcommand, positionals, flags, context2) {
67857
68110
  return handleServices(positionals, flags, context2, json);
67858
68111
  case "delete":
67859
68112
  return handleDelete(positionals, flags, context2, json);
68113
+ case "undeploy":
68114
+ return handleUndeploy(positionals, flags, context2, json);
67860
68115
  case "rollback":
67861
68116
  return handleRollback(positionals, flags, context2, json);
67862
68117
  case "reset":
@@ -67869,7 +68124,7 @@ async function handleEnv(subcommand, positionals, flags, context2) {
67869
68124
  return handleResume(positionals, flags, context2, json);
67870
68125
  default:
67871
68126
  throw new Error(
67872
- 'Usage: eve env <list|show|create|deploy|logs|diagnose|services|delete|rollback|reset|recover|suspend|resume>\n list [project] - list environments for a project\n show <project> <name> - show details of an environment\n create <name> --type=<type> [options] - create an environment\n deploy <env> (--ref <sha>|--release-tag <tag>) [--direct] [--inputs <json>] [--repo-dir <path>] [--skip-preflight] - deploy to an environment\n logs <project> <env> <service> [--since <seconds>] [--tail <n>] [--grep <text>] - get service logs\n diagnose <project> <env> - diagnose deployment health and events\n services <project> <env> - show per-service pod status summary\n delete <name> [--project=<id>] [--force] [--danger-delete-production] - delete an environment\n rollback <env> --release <id|tag|previous> [--project=<id>] [--skip-preflight] - rollback to a release\n reset <env> [--release <id|tag|previous>] [--project=<id>] [--force] [--danger-reset-production] [--skip-preflight] - teardown and redeploy\n recover <project> <env> - analyze environment and suggest recovery action\n suspend <project> <env> --reason "..." - suspend an environment\n resume <project> <env> - resume a suspended environment'
68127
+ 'Usage: eve env <list|show|create|deploy|undeploy|logs|diagnose|services|delete|rollback|reset|recover|suspend|resume>\n list [project] - list environments for a project\n show <project> <name> - show details of an environment\n create <name> --type=<type> [options] - create an environment\n deploy <env> (--ref <sha>|--release-tag <tag>) [--direct] [--inputs <json>] [--repo-dir <path>] [--skip-preflight] - deploy to an environment\n undeploy <env> [--project=<id>] [--force] - tear down K8s resources, keep environment config\n logs <project> <env> <service> [--since <seconds>] [--tail <n>] [--grep <text>] - get service logs\n diagnose <project> <env> - diagnose deployment health and events\n services <project> <env> - show per-service pod status summary\n delete <name> [--project=<id>] [--force] [--danger-delete-production] - delete an environment\n rollback <env> --release <id|tag|previous> [--project=<id>] [--skip-preflight] - rollback to a release\n reset <env> [--release <id|tag|previous>] [--project=<id>] [--force] [--danger-reset-production] [--skip-preflight] - teardown and redeploy\n recover <project> <env> - analyze environment and suggest recovery action\n suspend <project> <env> --reason "..." - suspend an environment\n resume <project> <env> - resume a suspended environment'
67873
68128
  );
67874
68129
  }
67875
68130
  }
@@ -68283,6 +68538,31 @@ async function handleDelete(positionals, flags, context2, json) {
68283
68538
  }
68284
68539
  }
68285
68540
  }
68541
+ async function handleUndeploy(positionals, flags, context2, json) {
68542
+ const projectId = getStringFlag(flags, ["project"]) ?? context2.projectId;
68543
+ const envName = positionals[0] ?? getStringFlag(flags, ["name", "env"]);
68544
+ const force = Boolean(flags.force);
68545
+ if (!projectId || !envName) {
68546
+ throw new Error("Usage: eve env undeploy <env> [--project=<id>] [--force]");
68547
+ }
68548
+ const body = {};
68549
+ if (force) {
68550
+ body.force = true;
68551
+ }
68552
+ const response = await requestJson(
68553
+ context2,
68554
+ `/projects/${projectId}/envs/${envName}/undeploy`,
68555
+ {
68556
+ method: "POST",
68557
+ body
68558
+ }
68559
+ );
68560
+ if (json) {
68561
+ outputJson(response, json);
68562
+ } else {
68563
+ console.log(`\u2713 Environment "${envName}" undeployed. Redeploy with: eve env deploy ${envName} --project ${projectId} ...`);
68564
+ }
68565
+ }
68286
68566
  async function handleRollback(positionals, flags, context2, json) {
68287
68567
  const projectId = getStringFlag(flags, ["project"]) ?? context2.projectId;
68288
68568
  const envName = positionals[0] ?? getStringFlag(flags, ["name", "env"]);
@@ -68781,9 +69061,23 @@ async function handlePipeline(subcommand, positionals, flags, context2) {
68781
69061
  return handleCancel2(positionals, flags, context2, json);
68782
69062
  case "logs":
68783
69063
  return handleLogs4(positionals, flags, context2, json);
69064
+ case "delete": {
69065
+ const name = positionals[0] ?? getStringFlag(flags, ["name"]);
69066
+ const projectId = getStringFlag(flags, ["project"]) ?? context2.projectId;
69067
+ if (!name || !projectId) {
69068
+ throw new Error("Usage: eve pipeline delete <name> [--project <id>]");
69069
+ }
69070
+ await requestRaw(
69071
+ context2,
69072
+ `/projects/${projectId}/pipelines/${encodeURIComponent(name)}`,
69073
+ { method: "DELETE" }
69074
+ );
69075
+ outputJson({ name, deleted: true }, json, `Pipeline ${name} runs deleted`);
69076
+ return;
69077
+ }
68784
69078
  default:
68785
69079
  throw new Error(
68786
- "Usage: eve pipeline <list|show|run|runs|show-run|approve|cancel|logs>\n list [project] - list pipelines for a project\n show <project> <name> - show pipeline definition\n run <name> --ref <sha> - create and run a new pipeline\n Options: --env, --inputs <json>, --only <step>\n runs [project] - list recent pipeline runs\n Options: --limit, --status, --name <pipeline>\n show-run <pipeline> <run-id> - show pipeline run status and steps\n approve <run-id> - approve a blocked pipeline run\n cancel <run-id> [--reason <text>] - cancel pipeline run\n logs <pipeline> <run-id> [--step <name>] - show logs for pipeline run\n Options: --follow (-f) stream live"
69080
+ "Usage: eve pipeline <list|show|run|runs|show-run|approve|cancel|logs|delete>\n list [project] - list pipelines for a project\n show <project> <name> - show pipeline definition\n run <name> --ref <sha> - create and run a new pipeline\n Options: --env, --inputs <json>, --only <step>\n runs [project] - list recent pipeline runs\n Options: --limit, --status, --name <pipeline>\n show-run <pipeline> <run-id> - show pipeline run status and steps\n approve <run-id> - approve a blocked pipeline run\n cancel <run-id> [--reason <text>] - cancel pipeline run\n logs <pipeline> <run-id> [--step <name>] - show logs for pipeline run\n Options: --follow (-f) stream live\n delete <name> [--project <id>] - delete all pipeline runs"
68787
69081
  );
68788
69082
  }
68789
69083
  }
@@ -69840,13 +70134,13 @@ async function handleCall(positionals, flags, context2) {
69840
70134
  const body = graphqlBody ?? jsonBody;
69841
70135
  const method = methodInput.toUpperCase();
69842
70136
  const resolvedBaseUrl = resolveApiBaseUrlForRuntime(api.base_url, context2.apiUrl);
69843
- const path8 = resolveApiPath(resolvedBaseUrl, pathInput);
70137
+ const path9 = resolveApiPath(resolvedBaseUrl, pathInput);
69844
70138
  const tokenOverride = getStringFlag(flags, ["token"]);
69845
70139
  const authToken = tokenOverride ?? process.env.EVE_JOB_TOKEN ?? context2.token;
69846
70140
  if (printCurl) {
69847
70141
  const curl = buildCurlCommand({
69848
70142
  method,
69849
- url: path8,
70143
+ url: path9,
69850
70144
  authToken,
69851
70145
  jsonBody: body,
69852
70146
  authHint: tokenOverride ? "override" : process.env.EVE_JOB_TOKEN ? "job" : "user"
@@ -69854,7 +70148,7 @@ async function handleCall(positionals, flags, context2) {
69854
70148
  console.log(curl);
69855
70149
  return;
69856
70150
  }
69857
- const response = await fetch(path8, {
70151
+ const response = await fetch(path9, {
69858
70152
  method,
69859
70153
  headers: buildApiHeaders(authToken, body),
69860
70154
  body: body ? JSON.stringify(body) : void 0
@@ -69950,7 +70244,7 @@ async function fetchApiSpec(context2, projectId, name, env) {
69950
70244
  function buildCurlExamples(api, spec) {
69951
70245
  const paths = spec.paths ?? {};
69952
70246
  const examples = [];
69953
- Object.entries(paths).forEach(([path8, methods]) => {
70247
+ Object.entries(paths).forEach(([path9, methods]) => {
69954
70248
  Object.entries(methods).forEach(([method, operation]) => {
69955
70249
  const lower = method.toLowerCase();
69956
70250
  if (!["get", "post", "put", "patch", "delete"].includes(lower)) {
@@ -69961,7 +70255,7 @@ function buildCurlExamples(api, spec) {
69961
70255
  const needsBody = ["post", "put", "patch"].includes(lower);
69962
70256
  const curl = buildCurlCommand({
69963
70257
  method: lower.toUpperCase(),
69964
- url: resolveApiPath(api.base_url, path8),
70258
+ url: resolveApiPath(api.base_url, path9),
69965
70259
  authToken: api.auth_mode === "eve" ? "$EVE_JOB_TOKEN" : void 0,
69966
70260
  jsonBody: needsBody ? examplePayload ?? {} : void 0,
69967
70261
  authHint: "job"
@@ -69983,15 +70277,15 @@ function extractExamplePayload(requestBody) {
69983
70277
  if (examples.length === 0) return void 0;
69984
70278
  return examples[0]?.value;
69985
70279
  }
69986
- function resolveApiPath(baseUrl, path8) {
69987
- if (path8.startsWith("http://") || path8.startsWith("https://")) {
69988
- return path8;
70280
+ function resolveApiPath(baseUrl, path9) {
70281
+ if (path9.startsWith("http://") || path9.startsWith("https://")) {
70282
+ return path9;
69989
70283
  }
69990
70284
  if (!baseUrl) {
69991
- return path8;
70285
+ return path9;
69992
70286
  }
69993
70287
  const trimmedBase = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
69994
- const trimmedPath = path8.startsWith("/") ? path8 : `/${path8}`;
70288
+ const trimmedPath = path9.startsWith("/") ? path9 : `/${path9}`;
69995
70289
  return `${trimmedBase}${trimmedPath}`;
69996
70290
  }
69997
70291
  function resolveApiBaseUrlForRuntime(baseUrl, eveApiUrl) {
@@ -71720,13 +72014,13 @@ function Subscribe(postgres2, options) {
71720
72014
  }
71721
72015
  }
71722
72016
  function handle(a, b2) {
71723
- const path8 = b2.relation.schema + "." + b2.relation.table;
72017
+ const path9 = b2.relation.schema + "." + b2.relation.table;
71724
72018
  call("*", a, b2);
71725
- call("*:" + path8, a, b2);
71726
- b2.relation.keys.length && call("*:" + path8 + "=" + b2.relation.keys.map((x2) => a[x2.name]), a, b2);
72019
+ call("*:" + path9, a, b2);
72020
+ b2.relation.keys.length && call("*:" + path9 + "=" + b2.relation.keys.map((x2) => a[x2.name]), a, b2);
71727
72021
  call(b2.command, a, b2);
71728
- call(b2.command + ":" + path8, a, b2);
71729
- b2.relation.keys.length && call(b2.command + ":" + path8 + "=" + b2.relation.keys.map((x2) => a[x2.name]), a, b2);
72022
+ call(b2.command + ":" + path9, a, b2);
72023
+ b2.relation.keys.length && call(b2.command + ":" + path9 + "=" + b2.relation.keys.map((x2) => a[x2.name]), a, b2);
71730
72024
  }
71731
72025
  function pong() {
71732
72026
  const x2 = Buffer.alloc(34);
@@ -71839,8 +72133,8 @@ function parseEvent(x) {
71839
72133
  const xs = x.match(/^(\*|insert|update|delete)?:?([^.]+?\.?[^=]+)?=?(.+)?/i) || [];
71840
72134
  if (!xs)
71841
72135
  throw new Error("Malformed subscribe pattern: " + x);
71842
- const [, command, path8, key] = xs;
71843
- return (command || "*") + (path8 ? ":" + (path8.indexOf(".") === -1 ? "public." + path8 : path8) : "") + (key ? "=" + key : "");
72136
+ const [, command, path9, key] = xs;
72137
+ return (command || "*") + (path9 ? ":" + (path9.indexOf(".") === -1 ? "public." + path9 : path9) : "") + (key ? "=" + key : "");
71844
72138
  }
71845
72139
 
71846
72140
  // ../../node_modules/.pnpm/postgres@3.4.8/node_modules/postgres/src/large.js
@@ -71985,10 +72279,10 @@ function Postgres(a, b2) {
71985
72279
  });
71986
72280
  return query;
71987
72281
  }
71988
- function file(path8, args = [], options2 = {}) {
72282
+ function file(path9, args = [], options2 = {}) {
71989
72283
  arguments.length === 2 && !Array.isArray(args) && (options2 = args, args = []);
71990
72284
  const query = new Query([], args, (query2) => {
71991
- import_fs2.default.readFile(path8, "utf8", (err, string) => {
72285
+ import_fs2.default.readFile(path9, "utf8", (err, string) => {
71992
72286
  if (err)
71993
72287
  return query2.reject(err);
71994
72288
  query2.strings = [string];
@@ -73480,11 +73774,13 @@ function formatEventsTable(events) {
73480
73774
  const typeWidth = Math.max(4, ...events.map((e) => e.type.length));
73481
73775
  const sourceWidth = Math.max(6, ...events.map((e) => e.source.length));
73482
73776
  const statusWidth = Math.max(6, ...events.map((e) => e.status.length));
73777
+ const jobIdWidth = Math.max(6, ...events.map((e) => (e.job_id || "-").length));
73483
73778
  const header = [
73484
73779
  padRight6("ID", idWidth),
73485
73780
  padRight6("Type", typeWidth),
73486
73781
  padRight6("Source", sourceWidth),
73487
73782
  padRight6("Status", statusWidth),
73783
+ padRight6("Job ID", jobIdWidth),
73488
73784
  padRight6("Env", 12),
73489
73785
  padRight6("Branch", 20),
73490
73786
  "Created"
@@ -73497,6 +73793,7 @@ function formatEventsTable(events) {
73497
73793
  padRight6(event.type, typeWidth),
73498
73794
  padRight6(event.source, sourceWidth),
73499
73795
  padRight6(event.status, statusWidth),
73796
+ padRight6(event.job_id || "-", jobIdWidth),
73500
73797
  padRight6(event.env_name || "-", 12),
73501
73798
  padRight6(event.ref_branch || "-", 20),
73502
73799
  formatDate3(event.created_at)
@@ -73531,6 +73828,9 @@ function formatEventDetails(event) {
73531
73828
  if (event.dedupe_key) {
73532
73829
  console.log(` Dedupe Key: ${event.dedupe_key}`);
73533
73830
  }
73831
+ if (event.job_id) {
73832
+ console.log(` Job ID: ${event.job_id}`);
73833
+ }
73534
73834
  if (event.payload_json && Object.keys(event.payload_json).length > 0) {
73535
73835
  console.log("");
73536
73836
  console.log(" Payload:");
@@ -73558,10 +73858,10 @@ function padRight6(str, width) {
73558
73858
 
73559
73859
  // src/commands/skills.ts
73560
73860
  var fs4 = __toESM(require("node:fs"));
73561
- var path6 = __toESM(require("node:path"));
73861
+ var path7 = __toESM(require("node:path"));
73562
73862
  var import_node_child_process7 = require("node:child_process");
73563
73863
  var yaml = __toESM(require("yaml"));
73564
- var UNIVERSAL_SKILLS_DIR = path6.join(".agents", "skills");
73864
+ var UNIVERSAL_SKILLS_DIR = path7.join(".agents", "skills");
73565
73865
  var PRIVATE_SKILLS_DIRNAME = "private-skills";
73566
73866
  async function handleSkills(subcommand, positionals, flags) {
73567
73867
  switch (subcommand) {
@@ -73577,8 +73877,8 @@ async function handleInstall(positionals, flags) {
73577
73877
  const skipInstalled = Boolean(flags["skip-installed"]);
73578
73878
  const projectRoot = process.cwd();
73579
73879
  const skillsBin = resolveSkillsBinary();
73580
- const manifestPath = path6.join(projectRoot, "skills.txt");
73581
- const skillsDir = path6.join(projectRoot, UNIVERSAL_SKILLS_DIR);
73880
+ const manifestPath = path7.join(projectRoot, "skills.txt");
73881
+ const skillsDir = path7.join(projectRoot, UNIVERSAL_SKILLS_DIR);
73582
73882
  const source = positionals[0];
73583
73883
  if (source) {
73584
73884
  const parsed = parseSkillSource(source);
@@ -73625,7 +73925,7 @@ function installSkill(skillsBin, skill, projectRoot) {
73625
73925
  const label = excludePrivate ? ` (excluding ${PRIVATE_SKILLS_DIRNAME}/)` : "";
73626
73926
  console.log(` Installing ${skillDirs.length} skill(s)${label}...`);
73627
73927
  for (const dir of skillDirs) {
73628
- const rel = path6.relative(projectRoot, dir);
73928
+ const rel = path7.relative(projectRoot, dir);
73629
73929
  const installSource = rel.startsWith(".") ? rel : `./${rel}`;
73630
73930
  for (const agent of agents) {
73631
73931
  (0, import_node_child_process7.execSync)(`${skillsBin} add ${JSON.stringify(installSource)} -a ${agent} -s '*' -y --full-depth`, {
@@ -73651,7 +73951,7 @@ function installSkill(skillsBin, skill, projectRoot) {
73651
73951
  }
73652
73952
  var DEFAULT_AGENTS = ["claude-code", "codex", "gemini-cli", "pi"];
73653
73953
  function installPackSkills(skillsBin, projectRoot) {
73654
- const manifestPath = path6.join(projectRoot, ".eve", "manifest.yaml");
73954
+ const manifestPath = path7.join(projectRoot, ".eve", "manifest.yaml");
73655
73955
  if (!fs4.existsSync(manifestPath)) return false;
73656
73956
  let manifest;
73657
73957
  try {
@@ -73663,7 +73963,7 @@ function installPackSkills(skillsBin, projectRoot) {
73663
73963
  const packs = xEve?.packs ?? [];
73664
73964
  if (packs.length === 0) return false;
73665
73965
  const installAgents = xEve?.install_agents ?? DEFAULT_AGENTS;
73666
- const lockfilePath = path6.join(projectRoot, ".eve", "packs.lock.yaml");
73966
+ const lockfilePath = path7.join(projectRoot, ".eve", "packs.lock.yaml");
73667
73967
  if (!fs4.existsSync(lockfilePath)) {
73668
73968
  console.error('Warning: packs defined in manifest but no .eve/packs.lock.yaml found. Run "eve agents sync" first.');
73669
73969
  return false;
@@ -73691,14 +73991,14 @@ function installPackSkills(skillsBin, projectRoot) {
73691
73991
  for (const pack of packs) {
73692
73992
  const agents = pack.install_agents ?? installAgents;
73693
73993
  console.log(` Pack: ${pack.source}`);
73694
- const localDir = resolveLocalDirIfExists({ source: pack.source, type: "local", raw: pack.source, name: path6.basename(pack.source) }, projectRoot);
73994
+ const localDir = resolveLocalDirIfExists({ source: pack.source, type: "local", raw: pack.source, name: path7.basename(pack.source) }, projectRoot);
73695
73995
  const wantsExcludePrivate = localDir !== null && !sourcePathExplicitlyTargetsPrivate(pack.source);
73696
73996
  for (const agent of agents) {
73697
73997
  try {
73698
73998
  if (wantsExcludePrivate && localDir) {
73699
73999
  const skillDirs = findSkillDirs(localDir, { fullDepth: true, excludePrivate: true });
73700
74000
  for (const dir of skillDirs) {
73701
- const rel = path6.relative(projectRoot, dir);
74001
+ const rel = path7.relative(projectRoot, dir);
73702
74002
  const installSource = rel.startsWith(".") ? rel : `./${rel}`;
73703
74003
  (0, import_node_child_process7.execSync)(`${skillsBin} add ${JSON.stringify(installSource)} -a ${agent} -s '*' -y --full-depth`, {
73704
74004
  cwd: projectRoot,
@@ -73738,8 +74038,8 @@ ${source}
73738
74038
  }
73739
74039
  function resolveSkillsBinary() {
73740
74040
  const candidates = [
73741
- path6.resolve(__dirname, "..", "node_modules", ".bin", "skills"),
73742
- path6.resolve(__dirname, "..", "..", ".bin", "skills")
74041
+ path7.resolve(__dirname, "..", "node_modules", ".bin", "skills"),
74042
+ path7.resolve(__dirname, "..", "..", ".bin", "skills")
73743
74043
  ];
73744
74044
  for (const candidate of candidates) {
73745
74045
  if (fs4.existsSync(candidate)) return candidate;
@@ -73766,13 +74066,13 @@ function expandGlobPattern(pattern, basePath, explicitPrivateTarget) {
73766
74066
  const basePattern = pattern.replace(/\/\*+$/, "");
73767
74067
  let searchRoot;
73768
74068
  if (basePattern.startsWith("./") || basePattern.startsWith("../")) {
73769
- searchRoot = path6.resolve(path6.dirname(basePath), basePattern);
74069
+ searchRoot = path7.resolve(path7.dirname(basePath), basePattern);
73770
74070
  } else if (basePattern.startsWith("/")) {
73771
74071
  searchRoot = basePattern;
73772
74072
  } else if (basePattern.startsWith("~")) {
73773
74073
  searchRoot = basePattern.replace(/^~/, process.env.HOME || "~");
73774
74074
  } else {
73775
- searchRoot = path6.resolve(path6.dirname(basePath), basePattern);
74075
+ searchRoot = path7.resolve(path7.dirname(basePath), basePattern);
73776
74076
  }
73777
74077
  if (!fs4.existsSync(searchRoot)) {
73778
74078
  console.warn(`Warning: Glob pattern base directory not found: ${searchRoot}`);
@@ -73788,11 +74088,11 @@ function expandGlobPattern(pattern, basePath, explicitPrivateTarget) {
73788
74088
  if (!explicitPrivateTarget && entry.name === PRIVATE_SKILLS_DIRNAME) {
73789
74089
  continue;
73790
74090
  }
73791
- const fullPath = path6.join(dir, entry.name);
73792
- const skillMdPath = path6.join(fullPath, "SKILL.md");
74091
+ const fullPath = path7.join(dir, entry.name);
74092
+ const skillMdPath = path7.join(fullPath, "SKILL.md");
73793
74093
  if (fs4.existsSync(skillMdPath)) {
73794
74094
  const name = entry.name;
73795
- const relativePath = path6.relative(path6.dirname(basePath), fullPath);
74095
+ const relativePath = path7.relative(path7.dirname(basePath), fullPath);
73796
74096
  const source = relativePath.startsWith(".") ? relativePath : `./${relativePath}`;
73797
74097
  if (!explicitPrivateTarget && pathContainsPrivateSkills(source)) {
73798
74098
  continue;
@@ -73821,7 +74121,7 @@ function parseSkillsManifest(manifestPath) {
73821
74121
  }
73822
74122
  const content = fs4.readFileSync(manifestPath, "utf-8");
73823
74123
  const sources = [];
73824
- const manifestDir = path6.dirname(manifestPath);
74124
+ const manifestDir = path7.dirname(manifestPath);
73825
74125
  for (const rawLine of content.split("\n")) {
73826
74126
  const line = rawLine.split("#")[0].trim();
73827
74127
  if (!line) continue;
@@ -73848,19 +74148,19 @@ function tryExpandLocalDirectory(skill, manifestDir) {
73848
74148
  if (source.startsWith("~")) {
73849
74149
  source = source.replace(/^~/, process.env.HOME || "~");
73850
74150
  }
73851
- const abs = path6.isAbsolute(source) ? source : path6.resolve(manifestDir, source);
74151
+ const abs = path7.isAbsolute(source) ? source : path7.resolve(manifestDir, source);
73852
74152
  try {
73853
74153
  if (!fs4.existsSync(abs) || !fs4.statSync(abs).isDirectory()) return null;
73854
74154
  } catch {
73855
74155
  return null;
73856
74156
  }
73857
- if (fs4.existsSync(path6.join(abs, "SKILL.md"))) return null;
74157
+ if (fs4.existsSync(path7.join(abs, "SKILL.md"))) return null;
73858
74158
  const explicitPrivate = sourcePathExplicitlyTargetsPrivate(skill.source);
73859
74159
  const skillDirs = findSkillDirs(abs, { fullDepth: true, excludePrivate: !explicitPrivate });
73860
74160
  if (skillDirs.length === 0) return null;
73861
74161
  return skillDirs.map((dir) => {
73862
- const name = path6.basename(dir);
73863
- const relativePath = path6.relative(manifestDir, dir);
74162
+ const name = path7.basename(dir);
74163
+ const relativePath = path7.relative(manifestDir, dir);
73864
74164
  const resolvedSource = relativePath.startsWith(".") ? relativePath : `./${relativePath}`;
73865
74165
  return {
73866
74166
  raw: skill.raw,
@@ -73881,22 +74181,22 @@ function parseSkillSource(line) {
73881
74181
  return { raw: line, source: line, type: "github", name: name2 };
73882
74182
  }
73883
74183
  if (line.startsWith("/") || line.startsWith("~")) {
73884
- const name2 = path6.basename(line);
74184
+ const name2 = path7.basename(line);
73885
74185
  return { raw: line, source: line, type: "local", name: name2 };
73886
74186
  }
73887
74187
  if (line.startsWith("./") || line.startsWith("../")) {
73888
- const name2 = path6.basename(line);
74188
+ const name2 = path7.basename(line);
73889
74189
  return { raw: line, source: line, type: "local", name: name2 };
73890
74190
  }
73891
74191
  if (fs4.existsSync(line)) {
73892
- const name2 = path6.basename(line);
74192
+ const name2 = path7.basename(line);
73893
74193
  return { raw: line, source: `./${line}`, type: "local", name: name2 };
73894
74194
  }
73895
74195
  if (line.includes("/") && !line.includes(" ")) {
73896
74196
  const name2 = extractNameFromRepo(line);
73897
74197
  return { raw: line, source: line, type: "github", name: name2 };
73898
74198
  }
73899
- const name = path6.basename(line);
74199
+ const name = path7.basename(line);
73900
74200
  return { raw: line, source: `./${line}`, type: "local", name };
73901
74201
  }
73902
74202
  function extractNameFromUrl(url) {
@@ -73904,7 +74204,7 @@ function extractNameFromUrl(url) {
73904
74204
  if (match) {
73905
74205
  return match[1].replace(/\.git$/, "");
73906
74206
  }
73907
- return path6.basename(new URL(url).pathname).replace(/\.git$/, "");
74207
+ return path7.basename(new URL(url).pathname).replace(/\.git$/, "");
73908
74208
  }
73909
74209
  function extractNameFromRepo(repo) {
73910
74210
  const parts = repo.split("/");
@@ -73924,9 +74224,9 @@ function getInstalledSkills(skillsDir) {
73924
74224
  return installed;
73925
74225
  }
73926
74226
  function ensureSkillsSymlink(projectRoot) {
73927
- const agentSkills = path6.join(projectRoot, UNIVERSAL_SKILLS_DIR);
73928
- const claudeDir = path6.join(projectRoot, ".claude");
73929
- const claudeSkills = path6.join(claudeDir, "skills");
74227
+ const agentSkills = path7.join(projectRoot, UNIVERSAL_SKILLS_DIR);
74228
+ const claudeDir = path7.join(projectRoot, ".claude");
74229
+ const claudeSkills = path7.join(claudeDir, "skills");
73930
74230
  if (!fs4.existsSync(agentSkills)) {
73931
74231
  fs4.mkdirSync(agentSkills, { recursive: true });
73932
74232
  }
@@ -73940,9 +74240,9 @@ function ensureSkillsSymlink(projectRoot) {
73940
74240
  const entries = fs4.readdirSync(agentSkills, { withFileTypes: true });
73941
74241
  for (const entry of entries) {
73942
74242
  if (!entry.isDirectory() || entry.name.startsWith(".")) continue;
73943
- const dst = path6.join(claudeSkills, entry.name);
74243
+ const dst = path7.join(claudeSkills, entry.name);
73944
74244
  if (fs4.existsSync(dst)) continue;
73945
- fs4.symlinkSync(path6.join("..", "..", UNIVERSAL_SKILLS_DIR, entry.name), dst);
74245
+ fs4.symlinkSync(path7.join("..", "..", UNIVERSAL_SKILLS_DIR, entry.name), dst);
73946
74246
  }
73947
74247
  }
73948
74248
  } catch {
@@ -73975,7 +74275,7 @@ function resolveLocalDirIfExists(skill, projectRoot) {
73975
74275
  if (source.startsWith("~")) {
73976
74276
  source = source.replace(/^~/, process.env.HOME || "~");
73977
74277
  }
73978
- const abs = path6.isAbsolute(source) ? source : path6.resolve(projectRoot, source);
74278
+ const abs = path7.isAbsolute(source) ? source : path7.resolve(projectRoot, source);
73979
74279
  try {
73980
74280
  if (!fs4.existsSync(abs)) return null;
73981
74281
  if (!fs4.statSync(abs).isDirectory()) return null;
@@ -73988,7 +74288,7 @@ function sourcePathExplicitlyTargetsPrivate(source) {
73988
74288
  return pathContainsPrivateSkills(source);
73989
74289
  }
73990
74290
  function pathContainsPrivateSkills(source) {
73991
- const normalized = path6.normalize(source).replace(/\\/g, "/");
74291
+ const normalized = path7.normalize(source).replace(/\\/g, "/");
73992
74292
  const segments = normalized.split("/").filter(Boolean);
73993
74293
  return segments.includes(PRIVATE_SKILLS_DIRNAME);
73994
74294
  }
@@ -74016,7 +74316,7 @@ function findSkillDirs(rootDir, opts) {
74016
74316
  for (const entry of entries) {
74017
74317
  if (!entry.isDirectory()) continue;
74018
74318
  if (shouldSkipDir(dir, entry.name)) continue;
74019
- walk(path6.join(dir, entry.name));
74319
+ walk(path7.join(dir, entry.name));
74020
74320
  }
74021
74321
  };
74022
74322
  walk(rootDir);
@@ -74312,8 +74612,8 @@ async function handleAdmin(subcommand, positionals, flags, context2) {
74312
74612
  if (untilRaw) params.set("until", untilRaw);
74313
74613
  if (limit) params.set("limit", limit);
74314
74614
  const qs = params.toString();
74315
- const path8 = `/admin/orgs/${orgId}/balance/transactions${qs ? `?${qs}` : ""}`;
74316
- const response = await requestJson(context2, path8);
74615
+ const path9 = `/admin/orgs/${orgId}/balance/transactions${qs ? `?${qs}` : ""}`;
74616
+ const response = await requestJson(context2, path9);
74317
74617
  if (json) {
74318
74618
  outputJson(response, true);
74319
74619
  } else {
@@ -74351,8 +74651,8 @@ ${response.length} transaction(s)`);
74351
74651
  if (untilRaw) params.set("until", untilRaw);
74352
74652
  if (limit) params.set("limit", limit);
74353
74653
  const qs = params.toString();
74354
- const path8 = `/admin/orgs/${orgId}/usage${qs ? `?${qs}` : ""}`;
74355
- const response = await requestJson(context2, path8);
74654
+ const path9 = `/admin/orgs/${orgId}/usage${qs ? `?${qs}` : ""}`;
74655
+ const response = await requestJson(context2, path9);
74356
74656
  if (json) {
74357
74657
  outputJson(response, true);
74358
74658
  } else {
@@ -74376,8 +74676,8 @@ ${response.length} record(s)`);
74376
74676
  if (sinceRaw) params.set("since", parseSinceValue4(sinceRaw));
74377
74677
  if (untilRaw) params.set("until", untilRaw);
74378
74678
  const qs = params.toString();
74379
- const path8 = `/admin/orgs/${orgId}/usage/summary${qs ? `?${qs}` : ""}`;
74380
- const response = await requestJson(context2, path8);
74679
+ const path9 = `/admin/orgs/${orgId}/usage/summary${qs ? `?${qs}` : ""}`;
74680
+ const response = await requestJson(context2, path9);
74381
74681
  if (json) {
74382
74682
  outputJson(response, true);
74383
74683
  } else {
@@ -74413,8 +74713,8 @@ ${response.length} record(s)`);
74413
74713
  if (limit) params.set("limit", limit);
74414
74714
  if (offset) params.set("offset", offset);
74415
74715
  const query = params.toString();
74416
- const path8 = `/admin/ingress-aliases${query ? `?${query}` : ""}`;
74417
- const response = await requestJson(context2, path8);
74716
+ const path9 = `/admin/ingress-aliases${query ? `?${query}` : ""}`;
74717
+ const response = await requestJson(context2, path9);
74418
74718
  if (json) {
74419
74719
  outputJson(response, true);
74420
74720
  return;
@@ -74665,11 +74965,11 @@ function resolveAgentsConfigPaths(repoRoot, manifest) {
74665
74965
  function pickString(value) {
74666
74966
  return typeof value === "string" && value.trim().length > 0 ? value : void 0;
74667
74967
  }
74668
- function ensureFileExists(path8, label) {
74669
- if (!(0, import_node_fs11.existsSync)(path8)) {
74670
- throw new Error(`Missing ${label} at ${path8}. Update manifest config_path or add the file.`);
74968
+ function ensureFileExists(path9, label) {
74969
+ if (!(0, import_node_fs11.existsSync)(path9)) {
74970
+ throw new Error(`Missing ${label} at ${path9}. Update manifest config_path or add the file.`);
74671
74971
  }
74672
- return path8;
74972
+ return path9;
74673
74973
  }
74674
74974
  function isLocalApiUrl(apiUrl) {
74675
74975
  try {
@@ -75041,8 +75341,38 @@ async function handleAgents(subcommand, positionals, flags, context2) {
75041
75341
  formatAgentRuntimeStatus(response, orgId);
75042
75342
  return;
75043
75343
  }
75344
+ case "delete": {
75345
+ const slug = positionals[0];
75346
+ if (!slug) {
75347
+ throw new Error("Usage: eve agents delete <slug> [--project <id>]");
75348
+ }
75349
+ const projectId = getStringFlag(flags, ["project"]) ?? context2.projectId;
75350
+ if (!projectId) {
75351
+ throw new Error("Missing project id. Provide --project or set a profile default.");
75352
+ }
75353
+ await requestRaw(context2, `/projects/${projectId}/agents/${encodeURIComponent(slug)}`, {
75354
+ method: "DELETE"
75355
+ });
75356
+ outputJson({ slug, deleted: true }, json, `Agent ${slug} deleted`);
75357
+ return;
75358
+ }
75359
+ case "delete-team": {
75360
+ const teamId = positionals[0];
75361
+ if (!teamId) {
75362
+ throw new Error("Usage: eve agents delete-team <team_id> [--project <id>]");
75363
+ }
75364
+ const projectId = getStringFlag(flags, ["project"]) ?? context2.projectId;
75365
+ if (!projectId) {
75366
+ throw new Error("Missing project id. Provide --project or set a profile default.");
75367
+ }
75368
+ await requestRaw(context2, `/projects/${projectId}/teams/${encodeURIComponent(teamId)}`, {
75369
+ method: "DELETE"
75370
+ });
75371
+ outputJson({ id: teamId, deleted: true }, json, `Team ${teamId} deleted`);
75372
+ return;
75373
+ }
75044
75374
  default:
75045
- throw new Error("Usage: eve agents <config|sync|runtime-status>");
75375
+ throw new Error("Usage: eve agents <config|sync|runtime-status|delete|delete-team>");
75046
75376
  }
75047
75377
  }
75048
75378
  function formatAgentRuntimeStatus(response, orgId) {
@@ -75099,8 +75429,8 @@ function formatAgeSeconds(isoDate) {
75099
75429
 
75100
75430
  // src/commands/init.ts
75101
75431
  var fs5 = __toESM(require("node:fs"));
75102
- var path7 = __toESM(require("node:path"));
75103
- var os3 = __toESM(require("node:os"));
75432
+ var path8 = __toESM(require("node:path"));
75433
+ var os4 = __toESM(require("node:os"));
75104
75434
  var import_node_child_process9 = require("node:child_process");
75105
75435
  var DEFAULT_TEMPLATE = "https://github.com/incept5/eve-horizon-starter";
75106
75436
  var DEFAULT_BRANCH = "main";
@@ -75109,8 +75439,8 @@ async function handleInit(positionals, flags) {
75109
75439
  const template = getStringFlag(flags, ["template", "t"]) || DEFAULT_TEMPLATE;
75110
75440
  const branch = getStringFlag(flags, ["branch", "b"]) || DEFAULT_BRANCH;
75111
75441
  const skipSkills = Boolean(flags["skip-skills"]);
75112
- const resolvedTarget = path7.resolve(targetDir);
75113
- const targetName = path7.basename(resolvedTarget);
75442
+ const resolvedTarget = path8.resolve(targetDir);
75443
+ const targetName = path8.basename(resolvedTarget);
75114
75444
  const isCurrentDir = targetDir === ".";
75115
75445
  if (isCurrentDir) {
75116
75446
  if (fs5.existsSync(resolvedTarget)) {
@@ -75137,7 +75467,7 @@ async function handleInit(positionals, flags) {
75137
75467
  console.log(`Template: ${template}`);
75138
75468
  console.log(`Branch: ${branch}`);
75139
75469
  console.log("");
75140
- const tempDir = fs5.mkdtempSync(path7.join(os3.tmpdir(), "eve-init-"));
75470
+ const tempDir = fs5.mkdtempSync(path8.join(os4.tmpdir(), "eve-init-"));
75141
75471
  try {
75142
75472
  console.log("Downloading template...");
75143
75473
  const cloneResult = (0, import_node_child_process9.spawnSync)("git", ["clone", "--depth=1", `--branch=${branch}`, template, tempDir], {
@@ -75150,7 +75480,7 @@ async function handleInit(positionals, flags) {
75150
75480
  ${cloneResult.stderr || cloneResult.stdout}`
75151
75481
  );
75152
75482
  }
75153
- const gitDir = path7.join(tempDir, ".git");
75483
+ const gitDir = path8.join(tempDir, ".git");
75154
75484
  if (fs5.existsSync(gitDir)) {
75155
75485
  fs5.rmSync(gitDir, { recursive: true, force: true });
75156
75486
  }
@@ -75198,8 +75528,8 @@ ${cloneResult.stderr || cloneResult.stdout}`
75198
75528
  function copyDirRecursive(src, dest) {
75199
75529
  const entries = fs5.readdirSync(src, { withFileTypes: true });
75200
75530
  for (const entry of entries) {
75201
- const srcPath = path7.join(src, entry.name);
75202
- const destPath = path7.join(dest, entry.name);
75531
+ const srcPath = path8.join(src, entry.name);
75532
+ const destPath = path8.join(dest, entry.name);
75203
75533
  if (entry.isDirectory()) {
75204
75534
  if (!fs5.existsSync(destPath)) {
75205
75535
  fs5.mkdirSync(destPath, { recursive: true });
@@ -75217,8 +75547,8 @@ function copyDirRecursive(src, dest) {
75217
75547
  }
75218
75548
  function resolveSkillsBinary2() {
75219
75549
  const candidates = [
75220
- path7.resolve(__dirname, "..", "node_modules", ".bin", "skills"),
75221
- path7.resolve(__dirname, "..", "..", ".bin", "skills")
75550
+ path8.resolve(__dirname, "..", "node_modules", ".bin", "skills"),
75551
+ path8.resolve(__dirname, "..", "..", ".bin", "skills")
75222
75552
  ];
75223
75553
  for (const candidate of candidates) {
75224
75554
  if (fs5.existsSync(candidate)) return candidate;
@@ -75230,7 +75560,7 @@ function resolveSkillsBinary2() {
75230
75560
  );
75231
75561
  }
75232
75562
  async function installSkills(projectRoot) {
75233
- const skillsTxt = path7.join(projectRoot, "skills.txt");
75563
+ const skillsTxt = path8.join(projectRoot, "skills.txt");
75234
75564
  if (!fs5.existsSync(skillsTxt)) {
75235
75565
  console.log("No skills.txt found, skipping skill installation");
75236
75566
  return;
@@ -75274,9 +75604,9 @@ async function installSkills(projectRoot) {
75274
75604
  }
75275
75605
  }
75276
75606
  function ensureSkillsSymlink2(projectRoot) {
75277
- const agentSkills = path7.join(projectRoot, ".agents", "skills");
75278
- const claudeDir = path7.join(projectRoot, ".claude");
75279
- const claudeSkills = path7.join(claudeDir, "skills");
75607
+ const agentSkills = path8.join(projectRoot, ".agents", "skills");
75608
+ const claudeDir = path8.join(projectRoot, ".claude");
75609
+ const claudeSkills = path8.join(claudeDir, "skills");
75280
75610
  if (!fs5.existsSync(agentSkills)) {
75281
75611
  fs5.mkdirSync(agentSkills, { recursive: true });
75282
75612
  }
@@ -75290,9 +75620,9 @@ function ensureSkillsSymlink2(projectRoot) {
75290
75620
  const entries = fs5.readdirSync(agentSkills, { withFileTypes: true });
75291
75621
  for (const entry of entries) {
75292
75622
  if (!entry.isDirectory() || entry.name.startsWith(".")) continue;
75293
- const dst = path7.join(claudeSkills, entry.name);
75623
+ const dst = path8.join(claudeSkills, entry.name);
75294
75624
  if (fs5.existsSync(dst)) continue;
75295
- fs5.symlinkSync(path7.join("..", "..", ".agents", "skills", entry.name), dst);
75625
+ fs5.symlinkSync(path8.join("..", "..", ".agents", "skills", entry.name), dst);
75296
75626
  }
75297
75627
  }
75298
75628
  } catch {
@@ -75376,8 +75706,39 @@ Make sure the release exists and the tag is correct.`
75376
75706
  }
75377
75707
  return;
75378
75708
  }
75709
+ case "delete": {
75710
+ const tag = positionals[0];
75711
+ if (!tag) {
75712
+ throw new Error("Usage: eve release delete <tag> [--project <id>]");
75713
+ }
75714
+ const projectId = typeof flags.project === "string" ? flags.project : context2.projectId;
75715
+ if (!projectId) {
75716
+ throw new Error("Missing project id. Provide --project or set a profile default.");
75717
+ }
75718
+ await requestRaw(
75719
+ context2,
75720
+ `/projects/${projectId}/releases/by-tag/${encodeURIComponent(tag)}`,
75721
+ { method: "DELETE" }
75722
+ );
75723
+ outputJson({ tag, deleted: true }, json, `Release ${tag} deleted`);
75724
+ return;
75725
+ }
75726
+ case "prune": {
75727
+ const projectId = typeof flags.project === "string" ? flags.project : context2.projectId;
75728
+ if (!projectId) {
75729
+ throw new Error("Usage: eve release prune [--project <id>] [--keep <n>]");
75730
+ }
75731
+ const keep = getStringFlag(flags, ["keep"]) ?? "10";
75732
+ const result = await requestJson(
75733
+ context2,
75734
+ `/projects/${projectId}/releases/prune`,
75735
+ { method: "POST", body: { keep: parseInt(keep, 10) } }
75736
+ );
75737
+ outputJson(result, json, `Pruned ${result.deleted} release(s)`);
75738
+ return;
75739
+ }
75379
75740
  default:
75380
- throw new Error("Usage: eve release <resolve>");
75741
+ throw new Error("Usage: eve release <resolve|delete|prune>");
75381
75742
  }
75382
75743
  }
75383
75744
 
@@ -75665,9 +76026,28 @@ async function handleBuild(subcommand, positionals, flags, context2) {
75665
76026
  return handleDiagnose3(positionals, flags, context2, json);
75666
76027
  case "cancel":
75667
76028
  return handleCancel3(positionals, flags, context2, json);
76029
+ case "delete": {
76030
+ const buildId = positionals[0];
76031
+ if (!buildId) throw new Error("Usage: eve build delete <build_id>");
76032
+ await requestRaw(context2, `/builds/${buildId}`, { method: "DELETE" });
76033
+ outputJson({ id: buildId, deleted: true }, json, `Build ${buildId} deleted`);
76034
+ return;
76035
+ }
76036
+ case "prune": {
76037
+ const projectId = getStringFlag(flags, ["project"]) ?? context2.projectId;
76038
+ if (!projectId) throw new Error("Usage: eve build prune [--project <id>] [--keep <n>]");
76039
+ const keep = getStringFlag(flags, ["keep"]) ?? "10";
76040
+ const result = await requestJson(
76041
+ context2,
76042
+ `/projects/${projectId}/builds/prune`,
76043
+ { method: "POST", body: { keep: parseInt(keep, 10) } }
76044
+ );
76045
+ outputJson(result, json, `Pruned ${result.deleted} build(s)`);
76046
+ return;
76047
+ }
75668
76048
  default:
75669
76049
  throw new Error(
75670
- "Usage: eve build <create|list|show|run|runs|logs|artifacts|diagnose|cancel>\n create --project <id> --ref <sha> [--services <list>] - create a build spec\n list [--project <id>] - list build specs\n show <build_id> - show build spec details\n run <build_id> - start a build run\n runs <build_id> - list runs for a build\n logs <build_id> [--run <id>] - show build logs\n artifacts <build_id> - list build artifacts\n diagnose <build_id> - show full build state\n cancel <build_id> - cancel active build run"
76050
+ "Usage: eve build <create|list|show|run|runs|logs|artifacts|diagnose|cancel|delete|prune>\n create --project <id> --ref <sha> [--services <list>] - create a build spec\n list [--project <id>] - list build specs\n show <build_id> - show build spec details\n run <build_id> - start a build run\n runs <build_id> - list runs for a build\n logs <build_id> [--run <id>] - show build logs\n artifacts <build_id> - list build artifacts\n diagnose <build_id> - show full build state\n cancel <build_id> - cancel active build run\n delete <build_id> - delete a build spec\n prune [--project <id>] [--keep <n>] - prune old builds (keep last N)"
75671
76051
  );
75672
76052
  }
75673
76053
  }
@@ -76535,9 +76915,18 @@ async function handleThread(subcommand, positionals, flags, context2) {
76535
76915
  outputJson(result, json, `Thread distilled: ${threadId}`);
76536
76916
  return;
76537
76917
  }
76918
+ case "delete": {
76919
+ const threadId = positionals[0];
76920
+ if (!threadId) {
76921
+ throw new Error("Usage: eve thread delete <thread_id>");
76922
+ }
76923
+ await requestRaw(context2, `/threads/${threadId}`, { method: "DELETE" });
76924
+ outputJson({ id: threadId, deleted: true }, json, `Thread ${threadId} deleted`);
76925
+ return;
76926
+ }
76538
76927
  default:
76539
76928
  throw new Error(
76540
- "Usage: eve thread <create|list|show|messages|post|follow|distill> [options]\n\n create --org <org> --key <key>\n list --org <org> [--scope org] [--key-prefix <prefix>]\n show <thread_id> --org <org>\n messages <thread_id> [--org <org>] [--since <duration>] [--limit <n>]\n post <thread_id> [--org <org>] --body <text> [--actor-type <type>] [--actor-id <id>]\n follow <thread_id> [--org <org>]\n distill <thread_id> --org <org> [--to <path>] [--agent <slug>] [--category <name>] [--key <key>]"
76929
+ "Usage: eve thread <create|list|show|messages|post|follow|distill|delete> [options]\n\n create --org <org> --key <key>\n list --org <org> [--scope org] [--key-prefix <prefix>]\n show <thread_id> --org <org>\n messages <thread_id> [--org <org>] [--since <duration>] [--limit <n>]\n post <thread_id> [--org <org>] --body <text> [--actor-type <type>] [--actor-id <id>]\n follow <thread_id> [--org <org>]\n distill <thread_id> --org <org> [--to <path>] [--agent <slug>] [--category <name>] [--key <key>]\n delete <thread_id>"
76541
76930
  );
76542
76931
  }
76543
76932
  }
@@ -77198,8 +77587,8 @@ async function handleBindings(action, flags, context2, json) {
77198
77587
  params.set("project_id", projectId);
77199
77588
  }
77200
77589
  const queryString = params.toString();
77201
- const path8 = queryString ? `/orgs/${orgId}/access/bindings?${queryString}` : `/orgs/${orgId}/access/bindings`;
77202
- const bindingsResponse = await requestJson(context2, path8);
77590
+ const path9 = queryString ? `/orgs/${orgId}/access/bindings?${queryString}` : `/orgs/${orgId}/access/bindings`;
77591
+ const bindingsResponse = await requestJson(context2, path9);
77203
77592
  const bindings = unwrapListResponse(bindingsResponse);
77204
77593
  if (json) {
77205
77594
  outputJson({ data: bindings }, json);
@@ -78439,8 +78828,8 @@ Sync complete: ${parts.join(", ")}`);
78439
78828
  // src/commands/docs.ts
78440
78829
  var import_node_fs17 = require("node:fs");
78441
78830
  var import_node_path17 = require("node:path");
78442
- function encodeDocPathParam(path8) {
78443
- const trimmed = path8.startsWith("/") ? path8.slice(1) : path8;
78831
+ function encodeDocPathParam(path9) {
78832
+ const trimmed = path9.startsWith("/") ? path9.slice(1) : path9;
78444
78833
  return encodeURIComponent(trimmed);
78445
78834
  }
78446
78835
  function parseWhereClause(raw) {
@@ -79970,10 +80359,10 @@ async function handleFs(subcommand, positionals, flags, context2) {
79970
80359
  }
79971
80360
  case "share": {
79972
80361
  const orgId = getOrgOrThrow(flags, context2);
79973
- const path8 = positionals[0];
79974
- if (!path8) throw new Error("Usage: eve fs share <path> --org <org> [--expires <duration>] [--label <text>]");
80362
+ const path9 = positionals[0];
80363
+ if (!path9) throw new Error("Usage: eve fs share <path> --org <org> [--expires <duration>] [--label <text>]");
79975
80364
  const body = {
79976
- path: path8,
80365
+ path: path9,
79977
80366
  expires_in: getStringFlag(flags, ["expires", "expires-in", "ttl"]) ?? void 0,
79978
80367
  label: getStringFlag(flags, ["label"]) ?? void 0
79979
80368
  };
@@ -81173,11 +81562,11 @@ function ensureTool(name, installHint) {
81173
81562
  }
81174
81563
  }
81175
81564
  function requireToolPath(name, hint) {
81176
- const path8 = findExecutable(name);
81177
- if (!path8) {
81565
+ const path9 = findExecutable(name);
81566
+ if (!path9) {
81178
81567
  throw new Error(`Missing required tool '${name}'. ${hint}`);
81179
81568
  }
81180
- return path8;
81569
+ return path9;
81181
81570
  }
81182
81571
  function assertDockerRunning() {
81183
81572
  const docker = findExecutable("docker");