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