@memnexus-ai/mx-agent-cli 0.1.178 → 0.1.179
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/__tests__/coordination-mode.test.js +55 -1
- package/dist/__tests__/coordination-mode.test.js.map +1 -1
- package/dist/lib/coordination-client.d.ts +13 -0
- package/dist/lib/coordination-client.d.ts.map +1 -1
- package/dist/lib/coordination-client.js +31 -2
- package/dist/lib/coordination-client.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,7 +16,7 @@ vi.mock('../lib/project-config.js', async (importActual) => {
|
|
|
16
16
|
const actual = await importActual();
|
|
17
17
|
return { ...actual, loadProjectConfig: vi.fn(() => null) };
|
|
18
18
|
});
|
|
19
|
-
import { resolveCoordinationMode, ENV_KEY_MODE } from '../lib/coordination-client.js';
|
|
19
|
+
import { resolveCoordinationMode, ENV_KEY_MODE, MODE_READ_FAILURE_WARNING } from '../lib/coordination-client.js';
|
|
20
20
|
import { getConfigValue } from '../lib/config.js';
|
|
21
21
|
import { loadProjectConfig } from '../lib/project-config.js';
|
|
22
22
|
import { findProjectRoot } from '../lib/worktree.js';
|
|
@@ -123,4 +123,58 @@ describe('resolveCoordinationMode — level 4 + cross-level precedence', () => {
|
|
|
123
123
|
expect(resolveCoordinationMode()).toBe('queue');
|
|
124
124
|
});
|
|
125
125
|
});
|
|
126
|
+
// ── CWE-778: read-failure downgrade must be observable ────────────────────────
|
|
127
|
+
// A silent fallback to `memory` on a config READ EXCEPTION is the exact
|
|
128
|
+
// invisibility that hid the original regression. Assert the warning fires only on
|
|
129
|
+
// a genuine read failure that lands on `memory` — never on the clean-unset path,
|
|
130
|
+
// never when a lower level recovers `queue`.
|
|
131
|
+
describe('resolveCoordinationMode — read-failure warning (CWE-778)', () => {
|
|
132
|
+
let stderrSpy;
|
|
133
|
+
beforeEach(() => {
|
|
134
|
+
stderrSpy = vi.spyOn(process.stderr, 'write').mockReturnValue(true);
|
|
135
|
+
});
|
|
136
|
+
afterEach(() => {
|
|
137
|
+
stderrSpy.mockRestore();
|
|
138
|
+
});
|
|
139
|
+
it('global read throws + project unset → memory AND warns exactly once', () => {
|
|
140
|
+
mockGlobal.mockImplementation(() => { throw new Error('unwritable HOME /home/x/.mx-agent'); });
|
|
141
|
+
mockLoadProject.mockReturnValue(null);
|
|
142
|
+
expect(resolveCoordinationMode()).toBe('memory');
|
|
143
|
+
expect(stderrSpy).toHaveBeenCalledTimes(1);
|
|
144
|
+
});
|
|
145
|
+
it('project/findProjectRoot throws → memory AND warns', () => {
|
|
146
|
+
mockFindRoot.mockImplementation(() => { throw new Error('no .git found at /secret/path'); });
|
|
147
|
+
expect(resolveCoordinationMode()).toBe('memory');
|
|
148
|
+
expect(stderrSpy).toHaveBeenCalledTimes(1);
|
|
149
|
+
});
|
|
150
|
+
it('loadProjectConfig throws → memory AND warns', () => {
|
|
151
|
+
mockLoadProject.mockImplementation(() => { throw new Error('validation error: /etc/passwd'); });
|
|
152
|
+
expect(resolveCoordinationMode()).toBe('memory');
|
|
153
|
+
expect(stderrSpy).toHaveBeenCalledTimes(1);
|
|
154
|
+
});
|
|
155
|
+
it('global read throws but project resolves "queue" → queue AND NO warning (recovered)', () => {
|
|
156
|
+
mockGlobal.mockImplementation(() => { throw new Error('transient'); });
|
|
157
|
+
mockLoadProject.mockReturnValue({ coordinationMode: 'queue' });
|
|
158
|
+
expect(resolveCoordinationMode()).toBe('queue');
|
|
159
|
+
expect(stderrSpy).not.toHaveBeenCalled();
|
|
160
|
+
});
|
|
161
|
+
it('all unset, no throw → memory AND NO warning (anti-noise: intended default)', () => {
|
|
162
|
+
expect(resolveCoordinationMode()).toBe('memory');
|
|
163
|
+
expect(stderrSpy).not.toHaveBeenCalled();
|
|
164
|
+
});
|
|
165
|
+
it('explicit global "memory" (no throw) → memory AND NO warning', () => {
|
|
166
|
+
mockGlobal.mockReturnValue('memory');
|
|
167
|
+
expect(resolveCoordinationMode()).toBe('memory');
|
|
168
|
+
expect(stderrSpy).not.toHaveBeenCalled();
|
|
169
|
+
});
|
|
170
|
+
it('warning text is the fixed string — no interpolated path/value/error', () => {
|
|
171
|
+
mockGlobal.mockImplementation(() => { throw new Error('SECRET_TOKEN_abc123 at /home/x/.mx-agent/config.json'); });
|
|
172
|
+
resolveCoordinationMode();
|
|
173
|
+
const written = String(stderrSpy.mock.calls[0][0]);
|
|
174
|
+
expect(written).toBe(`${MODE_READ_FAILURE_WARNING}\n`);
|
|
175
|
+
expect(written).not.toContain('SECRET_TOKEN');
|
|
176
|
+
expect(written).not.toContain('/home/x');
|
|
177
|
+
expect(written).not.toContain('config.json');
|
|
178
|
+
});
|
|
179
|
+
});
|
|
126
180
|
//# sourceMappingURL=coordination-mode.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordination-mode.test.js","sourceRoot":"","sources":["../../src/__tests__/coordination-mode.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEzE,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AAChF,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;AACtF,EAAE,CAAC,IAAI,CAAC,0BAA0B,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE;IACzD,MAAM,MAAM,GAAG,MAAM,YAAY,EAA6C,CAAC;IAC/E,OAAO,EAAE,GAAG,MAAM,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEH,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"coordination-mode.test.js","sourceRoot":"","sources":["../../src/__tests__/coordination-mode.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,20 @@ export declare const ENV_KEY_MODE = "MX_COORDINATION_MODE";
|
|
|
42
42
|
* command, so any thrown error (unwritable HOME on config read, project-root
|
|
43
43
|
* walk failure, unreadable config file) degrades to the safe default rather than
|
|
44
44
|
* propagating.
|
|
45
|
+
*
|
|
46
|
+
* Observability (CWE-778, fixing the invisibility that hid the original
|
|
47
|
+
* regression): when a config READ THREW and the result therefore fell back to
|
|
48
|
+
* `memory`, emit ONE fixed stderr warning so the silent downgrade is visible. The
|
|
49
|
+
* warning fires only on that genuine read-failure path — NOT on the normal
|
|
50
|
+
* "everything unset → default memory" case, and NOT when a throw at one level is
|
|
51
|
+
* recovered by a lower level that resolves `queue`.
|
|
52
|
+
*/
|
|
53
|
+
/**
|
|
54
|
+
* Fixed, non-interpolated warning text for a read-failure downgrade. Generic by
|
|
55
|
+
* design: a caught error could carry a filesystem path or sensitive content, so
|
|
56
|
+
* neither config values, paths, nor the error message/stack are ever included.
|
|
45
57
|
*/
|
|
58
|
+
export declare const MODE_READ_FAILURE_WARNING = "mx-agent: warning: coordination-mode could not be read (using 'memory' fallback); run 'mx-agent config get coordination-mode' to check.";
|
|
46
59
|
export declare function resolveCoordinationMode(): CoordinationMode;
|
|
47
60
|
export interface EnqueueRequest {
|
|
48
61
|
to: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordination-client.d.ts","sourceRoot":"","sources":["../../src/lib/coordination-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,eAAO,MAAM,cAAc,6BAA6B,CAAC;AACzD,eAAO,MAAM,gBAAgB,+BAA+B,CAAC;AAC7D,eAAO,MAAM,eAAe,sBAAsB,CAAC;AAEnD;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAElD,8EAA8E;AAC9E,eAAO,MAAM,YAAY,yBAAyB,CAAC;AAiBnD
|
|
1
|
+
{"version":3,"file":"coordination-client.d.ts","sourceRoot":"","sources":["../../src/lib/coordination-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -52,9 +52,25 @@ function coerceMode(raw) {
|
|
|
52
52
|
* command, so any thrown error (unwritable HOME on config read, project-root
|
|
53
53
|
* walk failure, unreadable config file) degrades to the safe default rather than
|
|
54
54
|
* propagating.
|
|
55
|
+
*
|
|
56
|
+
* Observability (CWE-778, fixing the invisibility that hid the original
|
|
57
|
+
* regression): when a config READ THREW and the result therefore fell back to
|
|
58
|
+
* `memory`, emit ONE fixed stderr warning so the silent downgrade is visible. The
|
|
59
|
+
* warning fires only on that genuine read-failure path — NOT on the normal
|
|
60
|
+
* "everything unset → default memory" case, and NOT when a throw at one level is
|
|
61
|
+
* recovered by a lower level that resolves `queue`.
|
|
62
|
+
*/
|
|
63
|
+
/**
|
|
64
|
+
* Fixed, non-interpolated warning text for a read-failure downgrade. Generic by
|
|
65
|
+
* design: a caught error could carry a filesystem path or sensitive content, so
|
|
66
|
+
* neither config values, paths, nor the error message/stack are ever included.
|
|
55
67
|
*/
|
|
68
|
+
export const MODE_READ_FAILURE_WARNING = "mx-agent: warning: coordination-mode could not be read (using 'memory' fallback); run 'mx-agent config get coordination-mode' to check.";
|
|
56
69
|
export function resolveCoordinationMode() {
|
|
57
|
-
//
|
|
70
|
+
// Track whether any config READ threw during resolution. A throw only matters
|
|
71
|
+
// for the warning when the FINAL value is `memory` (an unrecovered failure).
|
|
72
|
+
let readThrew = false;
|
|
73
|
+
// 1. Env override (highest). Reading an env var cannot throw.
|
|
58
74
|
const fromEnv = coerceMode(process.env[ENV_KEY_MODE]);
|
|
59
75
|
if (fromEnv)
|
|
60
76
|
return fromEnv;
|
|
@@ -67,6 +83,7 @@ export function resolveCoordinationMode() {
|
|
|
67
83
|
catch {
|
|
68
84
|
// getConfigValue can touch the filesystem (mkdirSync on an unwritable HOME).
|
|
69
85
|
// A read failure is NOT an explicit setting — fall through to project config.
|
|
86
|
+
readThrew = true;
|
|
70
87
|
}
|
|
71
88
|
// 3. Committed project config (durable per-project default). Reuses the same
|
|
72
89
|
// findProjectRoot()/resolveProjectConfig(loadProjectConfig(root)) chain as
|
|
@@ -80,8 +97,20 @@ export function resolveCoordinationMode() {
|
|
|
80
97
|
}
|
|
81
98
|
catch {
|
|
82
99
|
// Project-root walk or config read failed → fall through to the default.
|
|
100
|
+
readThrew = true;
|
|
101
|
+
}
|
|
102
|
+
// 4. Fail-safe default. If we only reached here because a read threw (not
|
|
103
|
+
// because everything was cleanly unset), surface one diagnostic line so the
|
|
104
|
+
// silent downgrade is observable. The warning must never throw or change the
|
|
105
|
+
// returned value.
|
|
106
|
+
if (readThrew) {
|
|
107
|
+
try {
|
|
108
|
+
process.stderr.write(`${MODE_READ_FAILURE_WARNING}\n`);
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
/* diagnostics must never break resolution */
|
|
112
|
+
}
|
|
83
113
|
}
|
|
84
|
-
// 4. Fail-safe default.
|
|
85
114
|
return 'memory';
|
|
86
115
|
}
|
|
87
116
|
/** Thrown for a transport failure (service unreachable) — triggers the FR-8 fallback. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordination-client.js","sourceRoot":"","sources":["../../src/lib/coordination-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIhD,MAAM,CAAC,MAAM,cAAc,GAAG,0BAA0B,CAAC;AACzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;AAC7D,MAAM,CAAC,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAWnD,8EAA8E;AAC9E,MAAM,CAAC,MAAM,YAAY,GAAG,sBAAsB,CAAC;AAEnD;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,GAA8B;IAChD,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC,CAAC,uBAAuB;IACjD,IAAI,CAAC,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IAClC,OAAO,QAAQ,CAAC,CAAC,gEAAgE;AACnF,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"coordination-client.js","sourceRoot":"","sources":["../../src/lib/coordination-client.ts"],"names":[],"mappings":"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"}
|