@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.
@@ -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":"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"}
@@ -4,6 +4,7 @@ export interface CLIConfig {
4
4
  apiKey?: string;
5
5
  defaultFormat: 'json' | 'table' | 'yaml';
6
6
  defaultPageSize: number;
7
+ updateNotifications?: boolean;
7
8
  }
8
9
  export interface CommandOptions {
9
10
  format?: 'json' | 'table' | 'yaml';
@@ -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;CACzB;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"}
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.7",
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:watch": "jest --watch",
14
- "test:coverage": "jest --coverage",
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.10",
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
- "ora": "^7.0.1"
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",