@memnexus-ai/cli 1.7.231 → 1.7.233

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,320 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CONTENT_FILE_STDIN = exports.MAX_CONTENT_FILE_BYTES = exports.MAX_MEMORY_CONTENT_LENGTH = void 0;
37
+ exports.readStreamBounded = readStreamBounded;
38
+ exports.resolveContentInput = resolveContentInput;
39
+ /**
40
+ * Shell-safe content input for `mx memories create` / `mx memories update`.
41
+ *
42
+ * Why this exists: agent-authored prose passed as `--content "..."` in a
43
+ * double-quoted shell argument has backticks and `$(...)` expanded by the shell
44
+ * BEFORE `mx` is invoked, so the stored memory silently contains command output
45
+ * instead of the author's text. The CLI never sees the original bytes, so it
46
+ * cannot detect or repair the damage. `--content-file <path>` gives callers an
47
+ * input path the shell never parses: the file (or stdin) is read verbatim.
48
+ *
49
+ * Guarantees:
50
+ * - Byte-exact: the decoded UTF-8 content is used as-is. No trimming, no
51
+ * newline normalization, no interpolation of any kind.
52
+ * - Fail-loud: a missing, unreadable, empty, oversized, non-regular, or blank
53
+ * path is a non-zero exit with the path named. Never a silent success, and
54
+ * never a silent hang.
55
+ * - Fail-early: the 50,000-character server cap is enforced before the network
56
+ * call, so an oversized body reports a clear local error rather than a 413.
57
+ *
58
+ * Stdin is read through the stream API and completes only on the stream's `end`
59
+ * event, because a pipe delivers its data in as many writes as the producer
60
+ * chooses. An earlier revision read fd 0 in a synchronous loop and stopped on
61
+ * EAGAIN, which returned a prefix of the input as though it were the whole
62
+ * input whenever the producer paused between writes.
63
+ *
64
+ * Reads are bounded at every step. Neither the size check nor the read may be
65
+ * skipped by pointing the flag at something that is not a regular file: an
66
+ * earlier revision checked only `st_size`, which is 0 for FIFOs and character
67
+ * devices, so `--content-file <fifo>` blocked forever and `--content-file
68
+ * /dev/zero` allocated until the heap died. Both are now rejected before a
69
+ * single byte is read, and the read itself is chunk-bounded as a backstop
70
+ * against a file that grows after it is measured.
71
+ */
72
+ const fs = __importStar(require("fs"));
73
+ const path = __importStar(require("path"));
74
+ const errors_1 = require("./errors");
75
+ /**
76
+ * Maximum memory content length, in JavaScript String.length units (UTF-16 code
77
+ * units) — NOT bytes. Mirrors MAX_NAMED_MEMORY_CONTENT_LENGTH in
78
+ * core-api/src/schemas/memory.schema.ts, which is enforced by Zod `.max()` on
79
+ * every server-side content write path. Enforced locally so an oversized file
80
+ * fails before the request instead of returning a 413. The server still
81
+ * enforces its own limit — this is a usability guard, not a trust boundary.
82
+ */
83
+ exports.MAX_MEMORY_CONTENT_LENGTH = 50000;
84
+ /**
85
+ * Byte ceiling on the file/stdin read. 50,000 characters is at most 200,000
86
+ * UTF-8 bytes, so 1 MB leaves generous headroom while bounding memory (CWE-400).
87
+ * Applied three ways: to the stat size of a regular file, to the running total
88
+ * of the chunked read, and to stdin. Mirrors BATCH_CREATE_MAX_LINE_BYTES.
89
+ */
90
+ exports.MAX_CONTENT_FILE_BYTES = 1024 * 1024;
91
+ /** Chunk size for the bounded read. */
92
+ const READ_CHUNK_BYTES = 64 * 1024;
93
+ /** Sentinel path meaning "read stdin". */
94
+ exports.CONTENT_FILE_STDIN = '-';
95
+ /**
96
+ * Read a whole REGULAR-FILE descriptor with a hard byte ceiling, in chunks.
97
+ *
98
+ * Only ever called on a descriptor already asserted to be a regular file, which
99
+ * is why a short read here means end-of-file and nothing else. The ceiling is
100
+ * enforced on the running total, so a file that grows after it was measured
101
+ * still cannot exceed it.
102
+ *
103
+ * No read error is swallowed. An earlier revision treated EAGAIN as
104
+ * end-of-input, which is only true on a blocking descriptor: on a non-blocking
105
+ * one it means "no bytes available right now, the writer has not closed", and
106
+ * returning at that point yields a prefix of the input as though it were all of
107
+ * it. Stdin — the descriptor that is actually non-blocking — no longer goes
108
+ * through this function at all; see readStreamBounded.
109
+ */
110
+ function readFdBounded(fd, maxBytes, label) {
111
+ const chunks = [];
112
+ const buf = Buffer.allocUnsafe(READ_CHUNK_BYTES);
113
+ let total = 0;
114
+ for (;;) {
115
+ let n;
116
+ try {
117
+ n = fs.readSync(fd, buf, 0, buf.length, null);
118
+ }
119
+ catch (err) {
120
+ throw (0, errors_1.validationError)(`${label}: read failed (${err?.code || err?.message}).`);
121
+ }
122
+ if (n === 0)
123
+ break;
124
+ total += n;
125
+ if (total > maxBytes) {
126
+ throw (0, errors_1.validationError)(`${label}: input exceeds the ${maxBytes}-byte limit. Nothing was sent.`);
127
+ }
128
+ chunks.push(Buffer.from(buf.subarray(0, n)));
129
+ }
130
+ return Buffer.concat(chunks).toString('utf8');
131
+ }
132
+ /**
133
+ * Read a readable stream to completion with a hard byte ceiling.
134
+ *
135
+ * This is how stdin is read. A pipe delivers its data in as many writes as the
136
+ * producer chooses — a script writing line by line, `jq`, `git log`, one `mx`
137
+ * piped into another — and the only correct end-of-input signal is the stream's
138
+ * own `end` event. A synchronous read loop over fd 0 cannot see that: fd 0 is
139
+ * non-blocking in the shipped binary (libuv attaches a Pipe handle with
140
+ * O_NONBLOCK as soon as anything touches `process.stdin`, which `chalk` does
141
+ * transitively), so a gap between two writes surfaces as EAGAIN and any
142
+ * treatment of EAGAIN as EOF truncates the input silently.
143
+ *
144
+ * Bytes are accumulated as Buffers and decoded once at the end, so a multi-byte
145
+ * UTF-8 sequence split across two chunks is not corrupted.
146
+ *
147
+ * A TTY returns '' immediately rather than waiting for input that is not
148
+ * coming: the caller reports that as the empty-content error, so
149
+ * `mx ... --content-file -` at an interactive prompt fails fast instead of
150
+ * hanging.
151
+ */
152
+ function readStreamBounded(stream, maxBytes, label) {
153
+ if (stream.isTTY)
154
+ return Promise.resolve('');
155
+ return new Promise((resolve, reject) => {
156
+ const chunks = [];
157
+ let total = 0;
158
+ let settled = false;
159
+ const settle = (fn) => {
160
+ if (settled)
161
+ return;
162
+ settled = true;
163
+ fn();
164
+ };
165
+ stream.on('data', (chunk) => {
166
+ const buf = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
167
+ total += buf.length;
168
+ if (total > maxBytes) {
169
+ settle(() => {
170
+ // Stop draining rather than keep buffering a runaway producer.
171
+ stream.destroy?.();
172
+ reject((0, errors_1.validationError)(`${label}: input exceeds the ${maxBytes}-byte limit. Nothing was sent.`));
173
+ });
174
+ return;
175
+ }
176
+ chunks.push(buf);
177
+ });
178
+ // `end` is the ONLY success signal. Anything earlier is a partial read.
179
+ stream.on('end', () => settle(() => resolve(Buffer.concat(chunks).toString('utf8'))));
180
+ stream.on('error', (err) => settle(() => reject((0, errors_1.validationError)(`${label}: read failed (${err?.code || err?.message}).`))));
181
+ });
182
+ }
183
+ function readStdin() {
184
+ return readStreamBounded(process.stdin, exports.MAX_CONTENT_FILE_BYTES, '--content-file -');
185
+ }
186
+ /**
187
+ * Read the content a create/update should send.
188
+ *
189
+ * Returns `undefined` only when NEITHER flag was supplied (the caller decides
190
+ * whether that is an error, an interactive prompt, or a no-op update). A flag
191
+ * that is present but carries an empty value is an error, never a silent
192
+ * `undefined` — `--content-file "$BODY_FILE"` with the variable unset is
193
+ * exactly the shell accident this flag exists to defend against, and on
194
+ * `update` a silent `undefined` reports success while the body stays stale.
195
+ *
196
+ * Throws a CLIError — which `handleError` turns into exit 2 — for every failure
197
+ * mode below.
198
+ *
199
+ * The path is used only as a filesystem path: it is resolved with
200
+ * `path.resolve` and passed to `fs.openSync`. It is never interpolated into a
201
+ * shell command and no process is spawned, so a path containing shell
202
+ * metacharacters is inert. Reads run with the invoking user's privileges and no
203
+ * path is privileged by the CLI, so this grants no read the caller did not
204
+ * already have; symlinks are followed deliberately (pointing at a symlink to
205
+ * your own note is a legitimate use, and refusing them closes nothing, since
206
+ * the caller could read the target directly).
207
+ */
208
+ async function resolveContentInput(options, deps = {}) {
209
+ const hasContent = typeof options.content === 'string';
210
+ // Presence, not usability: an empty --content-file value is a present flag
211
+ // with a bad value and must be reported, not treated as absent.
212
+ const hasFile = typeof options.contentFile === 'string';
213
+ if (hasContent && hasFile) {
214
+ throw (0, errors_1.validationError)('Cannot use --content and --content-file together. Pass exactly one.\n' +
215
+ ' --content <text> inline text (the shell interprets backticks and $(...) in double quotes)\n' +
216
+ ' --content-file <path> read the content verbatim from a file, or "-" for stdin');
217
+ }
218
+ if (hasFile && options.interactive) {
219
+ throw (0, errors_1.validationError)('Cannot use --content-file with --interactive. Interactive mode would print the ' +
220
+ "file's contents to the terminal as the prompt default, which defeats the point of " +
221
+ 'passing content by file. Drop --interactive, or use --content for text you are ' +
222
+ 'willing to see echoed.');
223
+ }
224
+ if (!hasFile) {
225
+ if (hasContent)
226
+ assertWithinContentLimit(options.content, '--content');
227
+ return options.content;
228
+ }
229
+ const rawPath = options.contentFile;
230
+ if (rawPath.trim().length === 0) {
231
+ throw (0, errors_1.validationError)('--content-file was given an empty path. If this came from a shell variable ' +
232
+ '(--content-file "$BODY_FILE"), the variable is unset or misspelled. ' +
233
+ 'Nothing was read and nothing was sent.');
234
+ }
235
+ const label = rawPath === exports.CONTENT_FILE_STDIN ? '--content-file -' : `--content-file ${rawPath}`;
236
+ const content = rawPath === exports.CONTENT_FILE_STDIN
237
+ ? await (deps.readStdin ?? readStdin)()
238
+ : readContentFile(rawPath);
239
+ if (content.trim().length === 0) {
240
+ throw (0, errors_1.validationError)(`${label}: file is empty (no non-whitespace content). Refusing to create an empty memory.`);
241
+ }
242
+ assertWithinContentLimit(content, label);
243
+ return content;
244
+ }
245
+ function readContentFile(rawPath) {
246
+ const resolved = path.resolve(rawPath);
247
+ const label = `--content-file ${rawPath}`;
248
+ // Pre-open classification. Opening a FIFO read-only blocks until a writer
249
+ // appears, so the kind of the path must be known BEFORE the open. O_NONBLOCK
250
+ // below makes the open safe even if the path is swapped after this check.
251
+ let preStat;
252
+ try {
253
+ preStat = fs.statSync(resolved);
254
+ }
255
+ catch (err) {
256
+ if (err?.code === 'ENOENT') {
257
+ throw (0, errors_1.validationError)(`${label}: file not found (resolved to ${resolved}).`);
258
+ }
259
+ throw (0, errors_1.validationError)(`${label}: cannot stat file (${err?.code || err?.message}).`);
260
+ }
261
+ assertRegularFile(preStat, label, resolved);
262
+ // O_NONBLOCK: on a FIFO or a device this returns immediately instead of
263
+ // blocking, closing the window where the path is replaced between the stat
264
+ // above and this open. It has no effect on a regular file.
265
+ const nonBlock = fs.constants.O_NONBLOCK ?? 0;
266
+ let fd;
267
+ try {
268
+ fd = fs.openSync(resolved, fs.constants.O_RDONLY | nonBlock);
269
+ }
270
+ catch (err) {
271
+ if (err?.code === 'ENOENT') {
272
+ throw (0, errors_1.validationError)(`${label}: file not found (resolved to ${resolved}).`);
273
+ }
274
+ throw (0, errors_1.validationError)(`${label}: cannot open file (${err?.code || err?.message}).`);
275
+ }
276
+ try {
277
+ // Re-assert on the descriptor actually opened, not on the path. This is
278
+ // what closes the time-of-check/time-of-use gap: every check from here on
279
+ // describes the same inode the bytes come from.
280
+ const stat = fs.fstatSync(fd);
281
+ assertRegularFile(stat, label, resolved);
282
+ if (stat.size > exports.MAX_CONTENT_FILE_BYTES) {
283
+ throw (0, errors_1.validationError)(`${label}: file is ${stat.size} bytes, over the ${exports.MAX_CONTENT_FILE_BYTES}-byte limit.`);
284
+ }
285
+ return readFdBounded(fd, exports.MAX_CONTENT_FILE_BYTES, label);
286
+ }
287
+ finally {
288
+ try {
289
+ fs.closeSync(fd);
290
+ }
291
+ catch {
292
+ // Nothing useful to do if the descriptor is already gone.
293
+ }
294
+ }
295
+ }
296
+ /**
297
+ * Positive assertion that the target is a regular file.
298
+ *
299
+ * `st_size` is 0 for FIFOs, sockets, and character devices, so a size-only
300
+ * check is not a weak bound on those — it is no bound. Note that procfs entries
301
+ * ARE regular files reporting size 0, so this does not make them unreadable;
302
+ * they are still bounded by the chunked read.
303
+ */
304
+ function assertRegularFile(stat, label, resolved) {
305
+ if (stat.isDirectory()) {
306
+ throw (0, errors_1.validationError)(`${label}: path is a directory, not a file.`);
307
+ }
308
+ if (!stat.isFile()) {
309
+ throw (0, errors_1.validationError)(`${label}: not a regular file (resolved to ${resolved}). ` +
310
+ 'Named pipes, sockets and devices are refused because they have no bounded size — ' +
311
+ 'reading one would hang or exhaust memory. Write the content to a real file first.');
312
+ }
313
+ }
314
+ function assertWithinContentLimit(content, label) {
315
+ if (content.length > exports.MAX_MEMORY_CONTENT_LENGTH) {
316
+ throw (0, errors_1.validationError)(`${label}: content is ${content.length} characters, over the ${exports.MAX_MEMORY_CONTENT_LENGTH}-character server limit. ` +
317
+ 'Split it into multiple memories, or shorten it. Nothing was sent.');
318
+ }
319
+ }
320
+ //# sourceMappingURL=content-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-input.js","sourceRoot":"","sources":["../../src/lib/content-input.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,20 @@
5
5
  * Supports JSON (most agents) and TOML (Codex CLI).
6
6
  */
7
7
  import type { AgentDefinition, Scope } from './types.js';
8
+ /**
9
+ * Build the canonical, paste-ready MCP server-config object that
10
+ * `mx setup <agent>` writes for a JSON-config agent, wrapped under the agent's
11
+ * servers key — e.g. for Claude Desktop:
12
+ * { "mcpServers": { "memnexus": { "type": "stdio", "command": "mx",
13
+ * "args": ["mcp", "serve", "--inject-rules"] } } }
14
+ *
15
+ * This is the single source of truth that external surfaces (customer-portal,
16
+ * marketing-site, docs) should consume instead of hand-transcribing the JSON.
17
+ * It always emits the `mx` command form (forceMxCommand) so the output is
18
+ * deterministic. Throws for non-JSON config formats (TOML/manual), which do not
19
+ * have a JSON server-config to print.
20
+ */
21
+ export declare function buildCanonicalServerConfig(agent: AgentDefinition): Record<string, unknown>;
8
22
  /** Resolve the config file path for a given agent, scope, and platform. */
9
23
  export declare function resolveConfigPath(agent: AgentDefinition, scope: Scope, projectDir?: string): string;
10
24
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config-writer.d.ts","sourceRoot":"","sources":["../../../src/lib/setup/config-writer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAoFzD,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,KAAK,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAmBR;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBxE;AA4ED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwDnB"}
1
+ {"version":3,"file":"config-writer.d.ts","sourceRoot":"","sources":["../../../src/lib/setup/config-writer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAmEzD;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAS1F;AA4CD,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,KAAK,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CAmBR;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBxE;AAyED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,OAAO,CAAC,CAwDnB"}
@@ -9,6 +9,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
9
9
  return (mod && mod.__esModule) ? mod : { "default": mod };
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.buildCanonicalServerConfig = buildCanonicalServerConfig;
12
13
  exports.resolveConfigPath = resolveConfigPath;
13
14
  exports.writeAgentConfig = writeAgentConfig;
14
15
  exports.removeAgentConfig = removeAgentConfig;
@@ -28,9 +29,14 @@ const detector_js_1 = require("./detector.js");
28
29
  *
29
30
  * `serverType` controls the transport type field: most agents use `"stdio"`,
30
31
  * but OpenCode uses `"local"` for stdio-based servers.
32
+ *
33
+ * `forceMxCommand` skips PATH detection and always emits the `mx` command form.
34
+ * Used by `buildCanonicalServerConfig` so `mx setup --print-config` produces a
35
+ * deterministic, canonical entry (the form a user gets after `npm install -g`),
36
+ * independent of whether `mx` happens to be on the PATH of the machine printing.
31
37
  */
32
38
  function buildJsonServerEntry(options) {
33
- const mxInPath = isMxInPath();
39
+ const mxInPath = options?.forceMxCommand ? true : isMxInPath();
34
40
  const typeField = options?.serverType ?? 'stdio';
35
41
  const baseArgs = options?.injectRules ? ['mcp', 'serve', '--inject-rules'] : ['mcp', 'serve'];
36
42
  // OpenCode uses "local" type and expects command as an array (command + args combined),
@@ -50,6 +56,42 @@ function buildJsonServerEntry(options) {
50
56
  args: ['-y', '@memnexus-ai/cli', ...baseArgs],
51
57
  };
52
58
  }
59
+ /**
60
+ * Build the memnexus server entry for an agent, deriving `serverType` and
61
+ * `injectRules` from the agent's registry definition. Single place that maps a
62
+ * registry entry to a JSON server entry, so `mx setup` (write) and
63
+ * `mx setup --print-config` (print) can never disagree on the shape.
64
+ */
65
+ function buildMemnexusServerEntry(agent, options) {
66
+ return buildJsonServerEntry({
67
+ injectRules: agent.mcp.injectRules,
68
+ // OpenCode keys its servers under `mcp` and uses the `local` transport type;
69
+ // every other JSON agent uses `stdio`.
70
+ serverType: agent.mcp.serversKey === 'mcp' ? 'local' : 'stdio',
71
+ forceMxCommand: options?.forceMxCommand,
72
+ });
73
+ }
74
+ /**
75
+ * Build the canonical, paste-ready MCP server-config object that
76
+ * `mx setup <agent>` writes for a JSON-config agent, wrapped under the agent's
77
+ * servers key — e.g. for Claude Desktop:
78
+ * { "mcpServers": { "memnexus": { "type": "stdio", "command": "mx",
79
+ * "args": ["mcp", "serve", "--inject-rules"] } } }
80
+ *
81
+ * This is the single source of truth that external surfaces (customer-portal,
82
+ * marketing-site, docs) should consume instead of hand-transcribing the JSON.
83
+ * It always emits the `mx` command form (forceMxCommand) so the output is
84
+ * deterministic. Throws for non-JSON config formats (TOML/manual), which do not
85
+ * have a JSON server-config to print.
86
+ */
87
+ function buildCanonicalServerConfig(agent) {
88
+ if (agent.mcp.configFormat !== 'json') {
89
+ throw new Error(`${agent.name} does not use a JSON MCP config (format: ${agent.mcp.configFormat}); ` +
90
+ `--print-config supports JSON-config agents only.`);
91
+ }
92
+ const serverEntry = buildMemnexusServerEntry(agent, { forceMxCommand: true });
93
+ return { [agent.mcp.serversKey]: { memnexus: serverEntry } };
94
+ }
53
95
  /** Check if `mx` is available in PATH. */
54
96
  function isMxInPath() {
55
97
  try {
@@ -132,10 +174,7 @@ async function writeAgentConfig(options) {
132
174
  }
133
175
  /** Write/merge JSON MCP config. */
134
176
  async function writeJsonConfig(agent, configPath, dryRun) {
135
- const serverEntry = buildJsonServerEntry({
136
- injectRules: agent.mcp.injectRules,
137
- serverType: agent.mcp.serversKey === 'mcp' ? 'local' : 'stdio',
138
- });
177
+ const serverEntry = buildMemnexusServerEntry(agent);
139
178
  let backupPath;
140
179
  // Read existing config or start fresh
141
180
  let config = {};
@@ -1 +1 @@
1
- {"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../../../src/lib/setup/config-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../../../src/lib/setup/config-writer.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export { detectAgents, resolvePath } from './detector.js';
2
- export { writeAgentConfig, removeAgentConfig, resolveConfigPath } from './config-writer.js';
2
+ export { writeAgentConfig, removeAgentConfig, resolveConfigPath, buildCanonicalServerConfig, } from './config-writer.js';
3
3
  export { verifyAgent, verifyAll, displayPath } from './verifier.js';
4
4
  export { writeSteeringFile, removeSteeringSection, getSteeringVersion, resolveSteeringPath, } from './rules-writer.js';
5
5
  export { composeRules, parseSteeringVersion } from './rules-templates.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/setup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,OAAO,GACR,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,mBAAmB,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/setup/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EACL,cAAc,EACd,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EACL,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,OAAO,GACR,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,mBAAmB,YAAY,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.exeBase = exports.oursMcpHosts = exports.parseMemnexusTomlBlock = exports.isOursTomlBlock = exports.isOursJsonEntry = exports.removeHooks = exports.installHooks = exports.parseSkillVersion = exports.SKILLS = exports.resolveSkillPath = exports.resolveSkillsDir = exports.listSkills = exports.removeAllSkills = exports.writeAllSkills = exports.wasDowngradedToGlobal = exports.resolveEffectiveScope = exports.AGENTS = exports.getSortedAgents = exports.getAgentIds = exports.getAgent = exports.parseSteeringVersion = exports.composeRules = exports.resolveSteeringPath = exports.getSteeringVersion = exports.removeSteeringSection = exports.writeSteeringFile = exports.displayPath = exports.verifyAll = exports.verifyAgent = exports.resolveConfigPath = exports.removeAgentConfig = exports.writeAgentConfig = exports.resolvePath = exports.detectAgents = void 0;
3
+ exports.exeBase = exports.oursMcpHosts = exports.parseMemnexusTomlBlock = exports.isOursTomlBlock = exports.isOursJsonEntry = exports.removeHooks = exports.installHooks = exports.parseSkillVersion = exports.SKILLS = exports.resolveSkillPath = exports.resolveSkillsDir = exports.listSkills = exports.removeAllSkills = exports.writeAllSkills = exports.wasDowngradedToGlobal = exports.resolveEffectiveScope = exports.AGENTS = exports.getSortedAgents = exports.getAgentIds = exports.getAgent = exports.parseSteeringVersion = exports.composeRules = exports.resolveSteeringPath = exports.getSteeringVersion = exports.removeSteeringSection = exports.writeSteeringFile = exports.displayPath = exports.verifyAll = exports.verifyAgent = exports.buildCanonicalServerConfig = exports.resolveConfigPath = exports.removeAgentConfig = exports.writeAgentConfig = exports.resolvePath = exports.detectAgents = void 0;
4
4
  var detector_js_1 = require("./detector.js");
5
5
  Object.defineProperty(exports, "detectAgents", { enumerable: true, get: function () { return detector_js_1.detectAgents; } });
6
6
  Object.defineProperty(exports, "resolvePath", { enumerable: true, get: function () { return detector_js_1.resolvePath; } });
@@ -8,6 +8,7 @@ var config_writer_js_1 = require("./config-writer.js");
8
8
  Object.defineProperty(exports, "writeAgentConfig", { enumerable: true, get: function () { return config_writer_js_1.writeAgentConfig; } });
9
9
  Object.defineProperty(exports, "removeAgentConfig", { enumerable: true, get: function () { return config_writer_js_1.removeAgentConfig; } });
10
10
  Object.defineProperty(exports, "resolveConfigPath", { enumerable: true, get: function () { return config_writer_js_1.resolveConfigPath; } });
11
+ Object.defineProperty(exports, "buildCanonicalServerConfig", { enumerable: true, get: function () { return config_writer_js_1.buildCanonicalServerConfig; } });
11
12
  var verifier_js_1 = require("./verifier.js");
12
13
  Object.defineProperty(exports, "verifyAgent", { enumerable: true, get: function () { return verifier_js_1.verifyAgent; } });
13
14
  Object.defineProperty(exports, "verifyAll", { enumerable: true, get: function () { return verifier_js_1.verifyAll; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/setup/index.ts"],"names":[],"mappings":";;;AAAA,6CAA0D;AAAjD,2GAAA,YAAY,OAAA;AAAE,0GAAA,WAAW,OAAA;AAClC,uDAA4F;AAAnF,oHAAA,gBAAgB,OAAA;AAAE,qHAAA,iBAAiB,OAAA;AAAE,qHAAA,iBAAiB,OAAA;AAC/D,6CAAoE;AAA3D,0GAAA,WAAW,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,0GAAA,WAAW,OAAA;AAC5C,qDAK2B;AAJzB,oHAAA,iBAAiB,OAAA;AACjB,wHAAA,qBAAqB,OAAA;AACrB,qHAAA,kBAAkB,OAAA;AAClB,sHAAA,mBAAmB,OAAA;AAErB,2DAA0E;AAAjE,kHAAA,YAAY,OAAA;AAAE,0HAAA,oBAAoB,OAAA;AAC3C,6CAA+E;AAAtE,uGAAA,QAAQ,OAAA;AAAE,0GAAA,WAAW,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,qGAAA,MAAM,OAAA;AACvD,uCAA0E;AAAjE,iHAAA,qBAAqB,OAAA;AAAE,iHAAA,qBAAqB,OAAA;AACrD,uDAM4B;AAL1B,kHAAA,cAAc,OAAA;AACd,mHAAA,eAAe,OAAA;AACf,8GAAA,UAAU,OAAA;AACV,oHAAA,gBAAgB,OAAA;AAChB,oHAAA,gBAAgB,OAAA;AAElB,6DAAkE;AAAzD,6GAAA,MAAM,OAAA;AAAE,wHAAA,iBAAiB,OAAA;AAClC,qDAA8D;AAArD,+GAAA,YAAY,OAAA;AAAE,8GAAA,WAAW,OAAA;AAElC,mDAM0B;AALxB,iHAAA,eAAe,OAAA;AACf,iHAAA,eAAe,OAAA;AACf,wHAAA,sBAAsB,OAAA;AACtB,8GAAA,YAAY,OAAA;AACZ,yGAAA,OAAO,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/setup/index.ts"],"names":[],"mappings":";;;AAAA,6CAA0D;AAAjD,2GAAA,YAAY,OAAA;AAAE,0GAAA,WAAW,OAAA;AAClC,uDAK4B;AAJ1B,oHAAA,gBAAgB,OAAA;AAChB,qHAAA,iBAAiB,OAAA;AACjB,qHAAA,iBAAiB,OAAA;AACjB,8HAAA,0BAA0B,OAAA;AAE5B,6CAAoE;AAA3D,0GAAA,WAAW,OAAA;AAAE,wGAAA,SAAS,OAAA;AAAE,0GAAA,WAAW,OAAA;AAC5C,qDAK2B;AAJzB,oHAAA,iBAAiB,OAAA;AACjB,wHAAA,qBAAqB,OAAA;AACrB,qHAAA,kBAAkB,OAAA;AAClB,sHAAA,mBAAmB,OAAA;AAErB,2DAA0E;AAAjE,kHAAA,YAAY,OAAA;AAAE,0HAAA,oBAAoB,OAAA;AAC3C,6CAA+E;AAAtE,uGAAA,QAAQ,OAAA;AAAE,0GAAA,WAAW,OAAA;AAAE,8GAAA,eAAe,OAAA;AAAE,qGAAA,MAAM,OAAA;AACvD,uCAA0E;AAAjE,iHAAA,qBAAqB,OAAA;AAAE,iHAAA,qBAAqB,OAAA;AACrD,uDAM4B;AAL1B,kHAAA,cAAc,OAAA;AACd,mHAAA,eAAe,OAAA;AACf,8GAAA,UAAU,OAAA;AACV,oHAAA,gBAAgB,OAAA;AAChB,oHAAA,gBAAgB,OAAA;AAElB,6DAAkE;AAAzD,6GAAA,MAAM,OAAA;AAAE,wHAAA,iBAAiB,OAAA;AAClC,qDAA8D;AAArD,+GAAA,YAAY,OAAA;AAAE,8GAAA,WAAW,OAAA;AAElC,mDAM0B;AALxB,iHAAA,eAAe,OAAA;AACf,iHAAA,eAAe,OAAA;AACf,wHAAA,sBAAsB,OAAA;AACtB,8GAAA,YAAY,OAAA;AACZ,yGAAA,OAAO,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memnexus-ai/cli",
3
- "version": "1.7.231",
3
+ "version": "1.7.233",
4
4
  "description": "Command-line interface for MemNexus Core API",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -34,7 +34,7 @@
34
34
  "node": ">=18.0.0"
35
35
  },
36
36
  "dependencies": {
37
- "@memnexus-ai/typescript-sdk": "^1.73.3",
37
+ "@memnexus-ai/typescript-sdk": "^1.75.2",
38
38
  "@modelcontextprotocol/sdk": "^1.27.1",
39
39
  "axios": "^1.13.6",
40
40
  "chalk": "^5.3.0",