@llmist/cli 9.5.4 → 9.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +50 -25
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -79,7 +79,7 @@ import { Command, InvalidArgumentError as InvalidArgumentError2 } from "commande
|
|
|
79
79
|
// package.json
|
|
80
80
|
var package_default = {
|
|
81
81
|
name: "@llmist/cli",
|
|
82
|
-
version: "9.
|
|
82
|
+
version: "9.6.0",
|
|
83
83
|
description: "CLI for llmist - run LLM agents from the command line",
|
|
84
84
|
type: "module",
|
|
85
85
|
main: "dist/cli.js",
|
|
@@ -916,20 +916,14 @@ import fs5 from "fs";
|
|
|
916
916
|
import path4 from "path";
|
|
917
917
|
import os from "os";
|
|
918
918
|
import { pathToFileURL } from "url";
|
|
919
|
-
function
|
|
919
|
+
function isCommandAvailable(cmd) {
|
|
920
920
|
try {
|
|
921
|
-
|
|
922
|
-
|
|
921
|
+
const checkCmd = process.platform === "win32" ? "where" : "which";
|
|
922
|
+
execSync(`${checkCmd} ${cmd}`, { stdio: "pipe" });
|
|
923
|
+
return true;
|
|
923
924
|
} catch {
|
|
924
|
-
return
|
|
925
|
-
}
|
|
926
|
-
}
|
|
927
|
-
var cachedPackageManager = null;
|
|
928
|
-
function getPackageManager() {
|
|
929
|
-
if (!cachedPackageManager) {
|
|
930
|
-
cachedPackageManager = detectPackageManager();
|
|
925
|
+
return false;
|
|
931
926
|
}
|
|
932
|
-
return cachedPackageManager;
|
|
933
927
|
}
|
|
934
928
|
var CACHE_DIR = path4.join(os.homedir(), ".llmist", "gadget-cache");
|
|
935
929
|
function isExternalPackageSpecifier(specifier) {
|
|
@@ -1052,16 +1046,36 @@ async function installNpmPackage(spec, cacheDir) {
|
|
|
1052
1046
|
};
|
|
1053
1047
|
fs5.writeFileSync(path4.join(cacheDir, "package.json"), JSON.stringify(packageJson, null, 2));
|
|
1054
1048
|
const packageSpec = spec.version ? `${spec.package}@${spec.version}` : spec.package;
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
stdio: "inherit",
|
|
1059
|
-
|
|
1060
|
-
})
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1049
|
+
if (isCommandAvailable("npm")) {
|
|
1050
|
+
const installCmd = `npm install --foreground-scripts "${packageSpec}"`;
|
|
1051
|
+
try {
|
|
1052
|
+
execSync(installCmd, { stdio: "inherit", cwd: cacheDir });
|
|
1053
|
+
return;
|
|
1054
|
+
} catch (error) {
|
|
1055
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
1056
|
+
throw new Error(`Failed to install npm package '${packageSpec}': ${message}`);
|
|
1057
|
+
}
|
|
1064
1058
|
}
|
|
1059
|
+
if (isCommandAvailable("bun")) {
|
|
1060
|
+
console.warn(
|
|
1061
|
+
"\u26A0\uFE0F npm not found, using bun. Postinstall scripts for subdependencies may not run.\n For best results, install npm: https://nodejs.org/"
|
|
1062
|
+
);
|
|
1063
|
+
const installCmd = `bun add --trust "${packageSpec}"`;
|
|
1064
|
+
try {
|
|
1065
|
+
execSync(installCmd, { stdio: "inherit", cwd: cacheDir });
|
|
1066
|
+
return;
|
|
1067
|
+
} catch (error) {
|
|
1068
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
1069
|
+
throw new Error(`Failed to install package '${packageSpec}' with bun: ${message}`);
|
|
1070
|
+
}
|
|
1071
|
+
}
|
|
1072
|
+
throw new Error(
|
|
1073
|
+
`No package manager available to install '${packageSpec}'.
|
|
1074
|
+
Please install npm (recommended) or bun:
|
|
1075
|
+
- npm: https://nodejs.org/
|
|
1076
|
+
- bun: https://bun.sh/
|
|
1077
|
+
npm is preferred because it runs all postinstall scripts reliably.`
|
|
1078
|
+
);
|
|
1065
1079
|
}
|
|
1066
1080
|
async function installGitPackage(spec, cacheDir) {
|
|
1067
1081
|
fs5.mkdirSync(path4.dirname(cacheDir), { recursive: true });
|
|
@@ -1084,14 +1098,25 @@ async function installGitPackage(spec, cacheDir) {
|
|
|
1084
1098
|
throw new Error(`Failed to clone git repository '${spec.package}': ${message}`);
|
|
1085
1099
|
}
|
|
1086
1100
|
if (fs5.existsSync(path4.join(cacheDir, "package.json"))) {
|
|
1087
|
-
const
|
|
1088
|
-
const
|
|
1089
|
-
|
|
1101
|
+
const hasNpm = isCommandAvailable("npm");
|
|
1102
|
+
const hasBun = isCommandAvailable("bun");
|
|
1103
|
+
if (!hasNpm && !hasBun) {
|
|
1104
|
+
throw new Error(
|
|
1105
|
+
`No package manager available to install dependencies for '${spec.package}'.
|
|
1106
|
+
Please install npm or bun:
|
|
1107
|
+
- npm: https://nodejs.org/
|
|
1108
|
+
- bun: https://bun.sh/`
|
|
1109
|
+
);
|
|
1110
|
+
}
|
|
1111
|
+
const useBun = hasBun;
|
|
1112
|
+
const installCmd = useBun ? "bun install" : "npm install --foreground-scripts";
|
|
1113
|
+
const runCmd = useBun ? "bun run" : "npm run";
|
|
1114
|
+
const pmName = useBun ? "bun" : "npm";
|
|
1090
1115
|
try {
|
|
1091
1116
|
execSync(installCmd, { cwd: cacheDir, stdio: "inherit" });
|
|
1092
1117
|
} catch (error) {
|
|
1093
1118
|
const message = error instanceof Error ? error.message : String(error);
|
|
1094
|
-
throw new Error(`Failed to install dependencies for '${spec.package}' using ${
|
|
1119
|
+
throw new Error(`Failed to install dependencies for '${spec.package}' using ${pmName}: ${message}`);
|
|
1095
1120
|
}
|
|
1096
1121
|
const packageJson = JSON.parse(fs5.readFileSync(path4.join(cacheDir, "package.json"), "utf-8"));
|
|
1097
1122
|
if (packageJson.scripts?.build) {
|