@memnexus-ai/cli 1.7.46 → 1.7.47
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/commands/mcp.d.ts
CHANGED
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
* ~/.memnexus/config.json (stored by `mx auth login`), so no secrets
|
|
6
6
|
* appear in agent MCP config files.
|
|
7
7
|
*
|
|
8
|
-
* All diagnostic logging goes to stderr
|
|
8
|
+
* All diagnostic logging goes to stderr AND a persistent log file at
|
|
9
|
+
* ~/.memnexus/logs/mcp-bridge.log. Use `mx mcp logs` to view.
|
|
9
10
|
*/
|
|
10
11
|
import { Command } from 'commander';
|
|
11
12
|
export declare function registerMcpCommands(program: Command): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB1D"}
|
package/dist/commands/mcp.js
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* ~/.memnexus/config.json (stored by `mx auth login`), so no secrets
|
|
7
7
|
* appear in agent MCP config files.
|
|
8
8
|
*
|
|
9
|
-
* All diagnostic logging goes to stderr
|
|
9
|
+
* All diagnostic logging goes to stderr AND a persistent log file at
|
|
10
|
+
* ~/.memnexus/logs/mcp-bridge.log. Use `mx mcp logs` to view.
|
|
10
11
|
*/
|
|
11
12
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
13
|
if (k2 === undefined) k2 = k;
|
|
@@ -46,9 +47,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
46
47
|
};
|
|
47
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
49
|
exports.registerMcpCommands = registerMcpCommands;
|
|
50
|
+
const node_fs_1 = require("node:fs");
|
|
51
|
+
const promises_1 = require("node:fs/promises");
|
|
52
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
53
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
49
54
|
const config_1 = require("../lib/config");
|
|
50
55
|
const package_json_1 = __importDefault(require("../../package.json"));
|
|
51
56
|
const DEFAULT_MCP_URL = 'https://mcp.memnexus.ai/mcp';
|
|
57
|
+
/** Directory for MCP bridge logs. */
|
|
58
|
+
function getLogDir() {
|
|
59
|
+
return node_path_1.default.join(node_os_1.default.homedir(), '.memnexus', 'logs');
|
|
60
|
+
}
|
|
61
|
+
/** Path to the MCP bridge log file. */
|
|
62
|
+
function getLogPath() {
|
|
63
|
+
return node_path_1.default.join(getLogDir(), 'mcp-bridge.log');
|
|
64
|
+
}
|
|
65
|
+
/** Max log file size before rotation (1 MB). */
|
|
66
|
+
const MAX_LOG_SIZE = 1024 * 1024;
|
|
52
67
|
function registerMcpCommands(program) {
|
|
53
68
|
const mcp = program.command('mcp').description('MCP bridge commands');
|
|
54
69
|
mcp
|
|
@@ -58,6 +73,15 @@ function registerMcpCommands(program) {
|
|
|
58
73
|
.action(async (opts) => {
|
|
59
74
|
await serve(opts.url);
|
|
60
75
|
});
|
|
76
|
+
mcp
|
|
77
|
+
.command('logs')
|
|
78
|
+
.description('Show MCP bridge log file location and recent output')
|
|
79
|
+
.option('-n, --lines <count>', 'Number of lines to show', '50')
|
|
80
|
+
.option('-f, --follow', 'Follow log output (like tail -f)')
|
|
81
|
+
.option('--path', 'Only print the log file path')
|
|
82
|
+
.action(async (opts) => {
|
|
83
|
+
await showLogs(opts);
|
|
84
|
+
});
|
|
61
85
|
}
|
|
62
86
|
/**
|
|
63
87
|
* Format an error with its cause chain for diagnostic logging.
|
|
@@ -75,6 +99,35 @@ function formatError(err) {
|
|
|
75
99
|
}
|
|
76
100
|
return msg;
|
|
77
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Create a logger that writes to both stderr and a persistent log file.
|
|
104
|
+
* The log file is at ~/.memnexus/logs/mcp-bridge.log with simple rotation.
|
|
105
|
+
*/
|
|
106
|
+
async function createLogger() {
|
|
107
|
+
const logDir = getLogDir();
|
|
108
|
+
const logPath = getLogPath();
|
|
109
|
+
await (0, promises_1.mkdir)(logDir, { recursive: true });
|
|
110
|
+
// Simple rotation: if the log file exceeds MAX_LOG_SIZE, rename to .old
|
|
111
|
+
try {
|
|
112
|
+
if ((0, node_fs_1.existsSync)(logPath)) {
|
|
113
|
+
const stats = (0, node_fs_1.statSync)(logPath);
|
|
114
|
+
if (stats.size > MAX_LOG_SIZE) {
|
|
115
|
+
const { rename } = await Promise.resolve().then(() => __importStar(require('node:fs/promises')));
|
|
116
|
+
await rename(logPath, logPath + '.old');
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// Rotation is best-effort; don't fail the bridge
|
|
122
|
+
}
|
|
123
|
+
const stream = (0, node_fs_1.createWriteStream)(logPath, { flags: 'a' });
|
|
124
|
+
return (msg) => {
|
|
125
|
+
const timestamp = new Date().toISOString();
|
|
126
|
+
const line = `${timestamp} ${msg}`;
|
|
127
|
+
process.stderr.write(`[mx mcp] ${msg}\n`);
|
|
128
|
+
stream.write(line + '\n');
|
|
129
|
+
};
|
|
130
|
+
}
|
|
78
131
|
async function serve(mcpUrl) {
|
|
79
132
|
// Resolve API key
|
|
80
133
|
const apiKey = config_1.config.getApiKey();
|
|
@@ -82,7 +135,9 @@ async function serve(mcpUrl) {
|
|
|
82
135
|
process.stderr.write('Error: No API key configured. Run `mx auth login` first.\n');
|
|
83
136
|
process.exit(1);
|
|
84
137
|
}
|
|
85
|
-
const log =
|
|
138
|
+
const log = await createLogger();
|
|
139
|
+
log(`Bridge starting — mx-cli v${package_json_1.default.version}, node ${process.version}, ${process.platform}`);
|
|
140
|
+
log(`Log file: ${getLogPath()}`);
|
|
86
141
|
log(`Connecting to ${mcpUrl}`);
|
|
87
142
|
// Dynamic imports — keeps the MCP SDK out of the main CLI bundle
|
|
88
143
|
// unless this command is actually invoked.
|
|
@@ -180,4 +235,39 @@ async function serve(mcpUrl) {
|
|
|
180
235
|
process.exit(1);
|
|
181
236
|
}
|
|
182
237
|
}
|
|
238
|
+
async function showLogs(opts) {
|
|
239
|
+
const logPath = getLogPath();
|
|
240
|
+
if (opts.path) {
|
|
241
|
+
console.log(logPath);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
console.log(`Log file: ${logPath}\n`);
|
|
245
|
+
if (!(0, node_fs_1.existsSync)(logPath)) {
|
|
246
|
+
console.log('No log file found. The log is created when `mx mcp serve` runs.');
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
const lineCount = parseInt(opts.lines, 10) || 50;
|
|
250
|
+
if (opts.follow) {
|
|
251
|
+
// tail -f mode — use child_process to stream
|
|
252
|
+
const { spawn } = await Promise.resolve().then(() => __importStar(require('node:child_process')));
|
|
253
|
+
const tailCmd = process.platform === 'win32' ? 'powershell' : 'tail';
|
|
254
|
+
const tailArgs = process.platform === 'win32'
|
|
255
|
+
? ['-Command', `Get-Content -Path '${logPath}' -Tail ${lineCount} -Wait`]
|
|
256
|
+
: ['-n', String(lineCount), '-f', logPath];
|
|
257
|
+
const child = spawn(tailCmd, tailArgs, { stdio: 'inherit' });
|
|
258
|
+
child.on('error', (err) => {
|
|
259
|
+
console.error(`Failed to tail log: ${err.message}`);
|
|
260
|
+
process.exit(1);
|
|
261
|
+
});
|
|
262
|
+
// Forward signals to child
|
|
263
|
+
process.on('SIGINT', () => child.kill());
|
|
264
|
+
process.on('SIGTERM', () => child.kill());
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
// Show last N lines
|
|
268
|
+
const content = await (0, promises_1.readFile)(logPath, 'utf-8');
|
|
269
|
+
const lines = content.trimEnd().split('\n');
|
|
270
|
+
const tail = lines.slice(-lineCount);
|
|
271
|
+
console.log(tail.join('\n'));
|
|
272
|
+
}
|
|
183
273
|
//# sourceMappingURL=mcp.js.map
|
package/dist/commands/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|