@memnexus-ai/cli 0.1.7 → 0.1.8
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/README.md +56 -0
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +22 -3
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/memories.js +3 -3
- package/dist/commands/memories.js.map +1 -1
- package/dist/commands/update.d.ts +7 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +185 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +2 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +5 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/update.d.ts +40 -0
- package/dist/lib/update.d.ts.map +1 -0
- package/dist/lib/update.js +132 -0
- package/dist/lib/update.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +12 -6
- package/USAGE.md +0 -1373
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.detectPackageManager = detectPackageManager;
|
|
7
|
+
exports.getCurrentVersion = getCurrentVersion;
|
|
8
|
+
exports.getLatestVersion = getLatestVersion;
|
|
9
|
+
exports.checkForUpdate = checkForUpdate;
|
|
10
|
+
exports.validateVersion = validateVersion;
|
|
11
|
+
exports.installUpdate = installUpdate;
|
|
12
|
+
exports.getChangelogUrl = getChangelogUrl;
|
|
13
|
+
exports.isGlobalInstall = isGlobalInstall;
|
|
14
|
+
const execa_1 = __importDefault(require("execa"));
|
|
15
|
+
const fs_1 = require("fs");
|
|
16
|
+
const path_1 = require("path");
|
|
17
|
+
const package_json_1 = __importDefault(require("../../package.json"));
|
|
18
|
+
/**
|
|
19
|
+
* Detect which package manager is being used
|
|
20
|
+
* Priority: lock files > PATH availability > default to npm
|
|
21
|
+
*/
|
|
22
|
+
async function detectPackageManager() {
|
|
23
|
+
// Check for lock files in the global installation directory
|
|
24
|
+
// For CLI tools, we check which package manager is available in PATH
|
|
25
|
+
const managers = ['pnpm', 'yarn', 'npm'];
|
|
26
|
+
for (const manager of managers) {
|
|
27
|
+
try {
|
|
28
|
+
await (0, execa_1.default)(manager, ['--version']);
|
|
29
|
+
return manager;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
// Manager not available, try next
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Default to npm (should always be available with Node.js)
|
|
36
|
+
return 'npm';
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get the current installed version of the CLI
|
|
40
|
+
*/
|
|
41
|
+
function getCurrentVersion() {
|
|
42
|
+
return package_json_1.default.version;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the latest version available on npm registry
|
|
46
|
+
*/
|
|
47
|
+
async function getLatestVersion(packageName = '@memnexus-ai/cli') {
|
|
48
|
+
try {
|
|
49
|
+
const { stdout } = await (0, execa_1.default)('npm', ['view', packageName, 'version']);
|
|
50
|
+
return stdout.trim();
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
throw new Error(`Failed to fetch latest version: ${error.message}`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check if an update is available
|
|
58
|
+
*/
|
|
59
|
+
async function checkForUpdate() {
|
|
60
|
+
const current = getCurrentVersion();
|
|
61
|
+
const latest = await getLatestVersion();
|
|
62
|
+
return {
|
|
63
|
+
current,
|
|
64
|
+
latest,
|
|
65
|
+
updateAvailable: current !== latest,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Validate if a specific version exists on npm registry
|
|
70
|
+
*/
|
|
71
|
+
async function validateVersion(version, packageName = '@memnexus-ai/cli') {
|
|
72
|
+
try {
|
|
73
|
+
const { stdout } = await (0, execa_1.default)('npm', ['view', `${packageName}@${version}`, 'version']);
|
|
74
|
+
return stdout.trim() === version;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Install a specific version of the CLI
|
|
82
|
+
*/
|
|
83
|
+
async function installUpdate(version, packageManager, packageName = '@memnexus-ai/cli') {
|
|
84
|
+
const packageSpec = version === 'latest' ? packageName : `${packageName}@${version}`;
|
|
85
|
+
try {
|
|
86
|
+
switch (packageManager) {
|
|
87
|
+
case 'npm':
|
|
88
|
+
await (0, execa_1.default)('npm', ['install', '-g', packageSpec], { stdio: 'inherit' });
|
|
89
|
+
break;
|
|
90
|
+
case 'pnpm':
|
|
91
|
+
await (0, execa_1.default)('pnpm', ['add', '-g', packageSpec], { stdio: 'inherit' });
|
|
92
|
+
break;
|
|
93
|
+
case 'yarn':
|
|
94
|
+
await (0, execa_1.default)('yarn', ['global', 'add', packageSpec], { stdio: 'inherit' });
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
// Check for permission errors
|
|
100
|
+
if (error.code === 'EACCES' || error.stderr?.includes('EACCES')) {
|
|
101
|
+
throw new Error('Permission denied. Try running with elevated privileges:\n' +
|
|
102
|
+
` sudo mx update${version !== 'latest' ? ` --version ${version}` : ''}`);
|
|
103
|
+
}
|
|
104
|
+
// Check for network errors
|
|
105
|
+
if (error.stderr?.includes('ENOTFOUND') || error.stderr?.includes('network')) {
|
|
106
|
+
throw new Error('Network error. Please check your internet connection and try again.');
|
|
107
|
+
}
|
|
108
|
+
throw new Error(`Failed to install update: ${error.message}`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get the changelog URL for a specific version
|
|
113
|
+
*/
|
|
114
|
+
function getChangelogUrl(version) {
|
|
115
|
+
return `https://github.com/memnexus-ai/mx-cli/releases/tag/v${version}`;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Check if the CLI is installed globally
|
|
119
|
+
*/
|
|
120
|
+
async function isGlobalInstall() {
|
|
121
|
+
try {
|
|
122
|
+
// Check if mx is in global node_modules
|
|
123
|
+
const { stdout } = await (0, execa_1.default)('npm', ['root', '-g']);
|
|
124
|
+
const globalRoot = stdout.trim();
|
|
125
|
+
const cliPath = (0, path_1.join)(globalRoot, '@memnexus-ai', 'cli');
|
|
126
|
+
return (0, fs_1.existsSync)(cliPath);
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/lib/update.ts"],"names":[],"mappings":";;;;;AAiBA,oDAgBC;AAKD,8CAEC;AAKD,4CAOC;AAKD,wCASC;AAKD,0CAUC;AAKD,sCAmCC;AAKD,0CAEC;AAKD,0CAUC;AA/ID,kDAA0B;AAC1B,2BAAgC;AAChC,+BAA4B;AAC5B,sEAA6C;AAU7C;;;GAGG;AACI,KAAK,UAAU,oBAAoB;IACxC,4DAA4D;IAC5D,qEAAqE;IACrE,MAAM,QAAQ,GAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAE3D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAA,eAAK,EAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;YACpC,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,sBAAW,CAAC,OAAO,CAAC;AAC7B,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,gBAAgB,CAAC,cAAsB,kBAAkB;IAC7E,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,mCAAoC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IACjF,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc;IAClC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAExC,OAAO;QACL,OAAO;QACP,MAAM;QACN,eAAe,EAAE,OAAO,KAAK,MAAM;KACpC,CAAC;AACJ,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,cAAsB,kBAAkB;IAExC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,WAAW,IAAI,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;QACxF,OAAO,MAAM,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,cAA8B,EAC9B,cAAsB,kBAAkB;IAExC,MAAM,WAAW,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC;IAErF,IAAI,CAAC;QACH,QAAQ,cAAc,EAAE,CAAC;YACvB,KAAK,KAAK;gBACR,MAAM,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBACzE,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAA,eAAK,EAAC,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBACtE,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,IAAA,eAAK,EAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1E,MAAM;QACV,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,8BAA8B;QAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CACb,4DAA4D;gBAC1D,mBAAmB,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3E,CAAC;QACJ,CAAC;QAED,2BAA2B;QAC3B,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7E,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACzF,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,uDAAuD,OAAO,EAAE,CAAC;AAC1E,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,wCAAwC;QACxC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,eAAK,EAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,IAAA,eAAU,EAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,mBAAmB,gCAAgC,CAAC;AAGpD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACzC,eAAe,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,mBAAmB,gCAAgC,CAAC;AAGpD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACzC,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memnexus-ai/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Command-line interface for MemNexus Core API",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -9,9 +9,11 @@
|
|
|
9
9
|
"scripts": {
|
|
10
10
|
"build": "tsc",
|
|
11
11
|
"dev": "ts-node src/index.ts",
|
|
12
|
-
"test": "jest",
|
|
13
|
-
"test:
|
|
14
|
-
"test:
|
|
12
|
+
"test": "jest --testPathIgnorePatterns=integration",
|
|
13
|
+
"test:integration": "jest --config jest.integration.config.js",
|
|
14
|
+
"test:all": "npm test && npm run test:integration",
|
|
15
|
+
"test:watch": "jest --watch --testPathIgnorePatterns=integration",
|
|
16
|
+
"test:coverage": "jest --coverage --testPathIgnorePatterns=integration",
|
|
15
17
|
"lint": "eslint 'src/**/*.ts'",
|
|
16
18
|
"lint:fix": "eslint 'src/**/*.ts' --fix",
|
|
17
19
|
"format": "prettier --write 'src/**/*.ts'",
|
|
@@ -44,22 +46,26 @@
|
|
|
44
46
|
"node": ">=18.0.0"
|
|
45
47
|
},
|
|
46
48
|
"dependencies": {
|
|
47
|
-
"@memnexus-ai/mx-typescript-sdk": "^1.0
|
|
49
|
+
"@memnexus-ai/mx-typescript-sdk": "^1.1.0",
|
|
48
50
|
"axios": "^1.13.2",
|
|
49
51
|
"chalk": "^5.3.0",
|
|
50
52
|
"cli-table3": "^0.6.3",
|
|
51
53
|
"commander": "^11.1.0",
|
|
52
54
|
"configstore": "^7.0.0",
|
|
53
55
|
"dotenv": "^16.3.1",
|
|
56
|
+
"execa": "^5.1.1",
|
|
54
57
|
"inquirer": "^9.2.12",
|
|
55
58
|
"js-yaml": "^4.1.0",
|
|
56
|
-
"
|
|
59
|
+
"listr2": "^9.0.5",
|
|
60
|
+
"ora": "^7.0.1",
|
|
61
|
+
"update-notifier": "^7.3.1"
|
|
57
62
|
},
|
|
58
63
|
"devDependencies": {
|
|
59
64
|
"@types/inquirer": "^9.0.7",
|
|
60
65
|
"@types/jest": "^29.5.8",
|
|
61
66
|
"@types/js-yaml": "^4.0.9",
|
|
62
67
|
"@types/node": "^20.10.0",
|
|
68
|
+
"@types/update-notifier": "^6.0.8",
|
|
63
69
|
"@typescript-eslint/eslint-plugin": "^6.13.2",
|
|
64
70
|
"@typescript-eslint/parser": "^6.13.2",
|
|
65
71
|
"eslint": "^8.55.0",
|