@memnexus-ai/mx-agent-cli 0.1.178 → 0.1.180
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/__tests__/slug-validation.test.d.ts +13 -0
- package/dist/__tests__/slug-validation.test.d.ts.map +1 -0
- package/dist/__tests__/slug-validation.test.js +196 -0
- package/dist/__tests__/slug-validation.test.js.map +1 -0
- package/dist/agent-config/coordination-rosters.generated.json +10 -0
- package/dist/commands/coordination.d.ts.map +1 -1
- package/dist/commands/coordination.js +25 -2
- package/dist/commands/coordination.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/dist/lib/coordination-token.d.ts +8 -0
- package/dist/lib/coordination-token.d.ts.map +1 -1
- package/dist/lib/coordination-token.js +10 -0
- package/dist/lib/coordination-token.js.map +1 -1
- package/dist/lib/slug.d.ts +44 -0
- package/dist/lib/slug.d.ts.map +1 -0
- package/dist/lib/slug.js +48 -0
- package/dist/lib/slug.js.map +1 -0
- 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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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side project-slug validation (KI-COORDMT-CLIENT-SLUG-VALIDATION).
|
|
3
|
+
*
|
|
4
|
+
* Two concerns:
|
|
5
|
+
* 1. isValidProjectSlug mirrors the coordination service's isValidSlug rules
|
|
6
|
+
* (base regex, no '--', not reserved 'all').
|
|
7
|
+
* 2. resolveCoordinationToken enforces it as a FAIL-CLOSED typed result: an
|
|
8
|
+
* invalid explicitly-set PROJECT slug returns status 'misconfigured' and
|
|
9
|
+
* NEVER reaches a KV-name build / az call (fetchSecret is never invoked),
|
|
10
|
+
* and is NOT coerced to memnexus. The default 'memnexus' path is untouched.
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=slug-validation.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug-validation.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/slug-validation.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-side project-slug validation (KI-COORDMT-CLIENT-SLUG-VALIDATION).
|
|
3
|
+
*
|
|
4
|
+
* Two concerns:
|
|
5
|
+
* 1. isValidProjectSlug mirrors the coordination service's isValidSlug rules
|
|
6
|
+
* (base regex, no '--', not reserved 'all').
|
|
7
|
+
* 2. resolveCoordinationToken enforces it as a FAIL-CLOSED typed result: an
|
|
8
|
+
* invalid explicitly-set PROJECT slug returns status 'misconfigured' and
|
|
9
|
+
* NEVER reaches a KV-name build / az call (fetchSecret is never invoked),
|
|
10
|
+
* and is NOT coerced to memnexus. The default 'memnexus' path is untouched.
|
|
11
|
+
*/
|
|
12
|
+
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
|
13
|
+
import { mkdtempSync, rmSync, readFileSync } from 'fs';
|
|
14
|
+
import { dirname, join } from 'path';
|
|
15
|
+
import { fileURLToPath } from 'url';
|
|
16
|
+
import { tmpdir } from 'os';
|
|
17
|
+
vi.mock('../lib/config.js', () => ({ getConfigValue: vi.fn(() => undefined) }));
|
|
18
|
+
import { isValidProjectSlug, PROJECT_SLUG_RE, RESERVED_PROJECT_SLUGS } from '../lib/slug.js';
|
|
19
|
+
import { resolveCoordinationToken } from '../lib/coordination-token.js';
|
|
20
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
21
|
+
/**
|
|
22
|
+
* Read the REAL coordination-service rule from disk (not a hand-copy) so a
|
|
23
|
+
* cross-package change to the service's slug rule breaks this test in CI. The
|
|
24
|
+
* CLI is a separate package (service source is out of tsconfig rootDir, so it
|
|
25
|
+
* cannot be imported), hence we parse the source text.
|
|
26
|
+
*/
|
|
27
|
+
function readServiceSlugRule() {
|
|
28
|
+
const typesPath = join(__dirname, '..', '..', '..', 'coordination-service', 'src', 'types.ts');
|
|
29
|
+
const src = readFileSync(typesPath, 'utf-8');
|
|
30
|
+
// TEAM_NAME_RE = /^.../; — capture the regex literal body (between the slashes).
|
|
31
|
+
const reMatch = src.match(/TEAM_NAME_RE\s*=\s*\/(.+?)\/\s*;/);
|
|
32
|
+
if (!reMatch)
|
|
33
|
+
throw new Error('could not extract TEAM_NAME_RE from coordination-service/src/types.ts');
|
|
34
|
+
// RESERVED_SLUGS ... = new Set([ ... ]) — capture the array contents.
|
|
35
|
+
const setMatch = src.match(/RESERVED_SLUGS[^=]*=\s*new Set\(\[([^\]]*)\]\)/);
|
|
36
|
+
if (!setMatch)
|
|
37
|
+
throw new Error('could not extract RESERVED_SLUGS from coordination-service/src/types.ts');
|
|
38
|
+
const reserved = new Set([...setMatch[1].matchAll(/['"]([^'"]+)['"]/g)].map((m) => m[1]));
|
|
39
|
+
return { regexSource: reMatch[1], reserved };
|
|
40
|
+
}
|
|
41
|
+
let dir;
|
|
42
|
+
beforeEach(() => {
|
|
43
|
+
dir = mkdtempSync(join(tmpdir(), 'slug-val-'));
|
|
44
|
+
});
|
|
45
|
+
afterEach(() => {
|
|
46
|
+
rmSync(dir, { recursive: true, force: true });
|
|
47
|
+
vi.restoreAllMocks();
|
|
48
|
+
});
|
|
49
|
+
function reader(files) {
|
|
50
|
+
return (p) => (p in files ? files[p] : undefined);
|
|
51
|
+
}
|
|
52
|
+
describe('isValidProjectSlug', () => {
|
|
53
|
+
const valid = ['memnexus', 'spearmint-private', 'ai-agents', 'import-export', 'team-builder', 'product'];
|
|
54
|
+
for (const s of valid) {
|
|
55
|
+
it(`accepts valid slug "${s}"`, () => {
|
|
56
|
+
expect(isValidProjectSlug(s)).toBe(true);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
const invalid = [
|
|
60
|
+
['Spearmint', 'uppercase'],
|
|
61
|
+
['-x', 'leading hyphen'],
|
|
62
|
+
['x-', 'trailing hyphen'],
|
|
63
|
+
['a--b', "contains '--'"],
|
|
64
|
+
['all', 'reserved'],
|
|
65
|
+
['a'.repeat(51), 'too long (>50)'],
|
|
66
|
+
['', 'empty'],
|
|
67
|
+
[' ', 'whitespace-only'],
|
|
68
|
+
['a;b', 'shell metachar ;'],
|
|
69
|
+
['a b', 'space'],
|
|
70
|
+
['a`b', 'backtick'],
|
|
71
|
+
['a$b', 'dollar'],
|
|
72
|
+
['a/b', 'slash'],
|
|
73
|
+
['a:b', 'colon'],
|
|
74
|
+
];
|
|
75
|
+
for (const [s, why] of invalid) {
|
|
76
|
+
it(`rejects invalid slug (${why})`, () => {
|
|
77
|
+
expect(isValidProjectSlug(s)).toBe(false);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
it('DRIFT GUARD: slug.ts matches the rule in coordination-service/src/types.ts', () => {
|
|
81
|
+
const { regexSource, reserved } = readServiceSlugRule();
|
|
82
|
+
// The client regex source string must equal the service's regex literal body.
|
|
83
|
+
expect(PROJECT_SLUG_RE.source).toBe(regexSource);
|
|
84
|
+
// The client reserved set must equal the service's RESERVED_SLUGS contents.
|
|
85
|
+
expect([...RESERVED_PROJECT_SLUGS].sort()).toEqual([...reserved].sort());
|
|
86
|
+
// And a behavioral probe: the client verdict must equal a rule reconstructed
|
|
87
|
+
// live from the service source, so a real rule change fails here.
|
|
88
|
+
const serviceRe = new RegExp(regexSource);
|
|
89
|
+
const serviceIsValid = (s) => serviceRe.test(s) && !s.includes('--') && !reserved.has(s);
|
|
90
|
+
const probes = [...valid, ...invalid.map(([s]) => s), 'a', 'ab', 'a-b-c', 'x--', '--x', 'ALL'];
|
|
91
|
+
for (const p of probes) {
|
|
92
|
+
expect(isValidProjectSlug(p)).toBe(serviceIsValid(p));
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
it('accepts a 50-char slug but rejects a 51-char slug (boundary)', () => {
|
|
96
|
+
expect(isValidProjectSlug('a'.repeat(50))).toBe(true);
|
|
97
|
+
expect(isValidProjectSlug('a'.repeat(51))).toBe(false);
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe('resolveCoordinationToken project-slug enforcement', () => {
|
|
101
|
+
it('default (no explicit project) resolves memnexus and does NOT fail closed', () => {
|
|
102
|
+
// deps.project unset → resolveProductSlug() default memnexus (env has no
|
|
103
|
+
// MX_PRODUCT_SLUG). A valid marker reaches the KV fetch normally.
|
|
104
|
+
const marker = join(dir, '.mx-coordination-team');
|
|
105
|
+
const fetchSecret = vi.fn(() => 'kv-tok');
|
|
106
|
+
const res = resolveCoordinationToken({
|
|
107
|
+
env: { CLAUDE_WORKTREE_PATH: dir },
|
|
108
|
+
readFileText: reader({ [marker]: 'eval\n' }),
|
|
109
|
+
fetchSecret,
|
|
110
|
+
});
|
|
111
|
+
expect(res.status).toBe('resolved');
|
|
112
|
+
expect(res.project).toBe('memnexus');
|
|
113
|
+
expect(fetchSecret).toHaveBeenCalledWith(expect.any(String), 'coordination-token--memnexus--eval');
|
|
114
|
+
});
|
|
115
|
+
it('accepts a valid explicitly-set project slug (spearmint-private)', () => {
|
|
116
|
+
const marker = join(dir, '.mx-coordination-team');
|
|
117
|
+
const roster = join(dir, 'roster.json');
|
|
118
|
+
const fetchSecret = vi.fn(() => 'sp-tok');
|
|
119
|
+
const res = resolveCoordinationToken({
|
|
120
|
+
project: 'spearmint-private',
|
|
121
|
+
env: { CLAUDE_WORKTREE_PATH: dir, MX_COORD_ROSTER_FILE: roster },
|
|
122
|
+
readFileText: reader({
|
|
123
|
+
[marker]: 'eval\n',
|
|
124
|
+
[roster]: JSON.stringify({ projects: { 'spearmint-private': ['eval'] } }),
|
|
125
|
+
}),
|
|
126
|
+
fetchSecret,
|
|
127
|
+
});
|
|
128
|
+
expect(res.status).toBe('resolved');
|
|
129
|
+
expect(res.project).toBe('spearmint-private');
|
|
130
|
+
expect(fetchSecret).toHaveBeenCalledWith(expect.any(String), 'coordination-token--spearmint-private--eval');
|
|
131
|
+
});
|
|
132
|
+
const badSlugs = [
|
|
133
|
+
['Spearmint_Private', 'uppercase + underscore'],
|
|
134
|
+
['-x', 'leading hyphen'],
|
|
135
|
+
['x-', 'trailing hyphen'],
|
|
136
|
+
['a--b', "contains '--'"],
|
|
137
|
+
['all', 'reserved'],
|
|
138
|
+
['a'.repeat(51), 'too long'],
|
|
139
|
+
['a;b', 'shell metachar'],
|
|
140
|
+
['a b', 'space'],
|
|
141
|
+
];
|
|
142
|
+
for (const [slug, why] of badSlugs) {
|
|
143
|
+
it(`fails CLOSED (misconfigured) on an invalid explicitly-set slug — ${why} — and never builds a KV name`, () => {
|
|
144
|
+
const marker = join(dir, '.mx-coordination-team');
|
|
145
|
+
const fetchSecret = vi.fn();
|
|
146
|
+
const res = resolveCoordinationToken({
|
|
147
|
+
project: slug,
|
|
148
|
+
env: { CLAUDE_WORKTREE_PATH: dir },
|
|
149
|
+
readFileText: reader({ [marker]: 'eval\n' }),
|
|
150
|
+
fetchSecret,
|
|
151
|
+
});
|
|
152
|
+
expect(res.status).toBe('misconfigured');
|
|
153
|
+
// NOT coerced to memnexus — the offending value is echoed back.
|
|
154
|
+
expect(res.project).toBe(slug);
|
|
155
|
+
expect(res.token).toBeUndefined();
|
|
156
|
+
// The invariant that matters: no KV-name build / az call happened.
|
|
157
|
+
expect(fetchSecret).not.toHaveBeenCalled();
|
|
158
|
+
// Actionable message names the offending value and the rule.
|
|
159
|
+
expect(res.detail).toContain(`project slug "${slug}" is invalid`);
|
|
160
|
+
expect(res.detail).toContain('^[a-z][a-z0-9-]{0,48}[a-z0-9]$');
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
it('CWE-117: a slug with a newline/control char is rejected AND the message carries no raw control byte', () => {
|
|
164
|
+
const marker = join(dir, '.mx-coordination-team');
|
|
165
|
+
const evil = 'good\n\x1b[31mFAKE-LOG-LINE\x07';
|
|
166
|
+
const fetchSecret = vi.fn();
|
|
167
|
+
const res = resolveCoordinationToken({
|
|
168
|
+
project: evil,
|
|
169
|
+
env: { CLAUDE_WORKTREE_PATH: dir },
|
|
170
|
+
readFileText: reader({ [marker]: 'eval\n' }),
|
|
171
|
+
fetchSecret,
|
|
172
|
+
});
|
|
173
|
+
expect(res.status).toBe('misconfigured');
|
|
174
|
+
expect(fetchSecret).not.toHaveBeenCalled();
|
|
175
|
+
// The surfaced message must be a single safe line: no raw newline, ESC, or BEL.
|
|
176
|
+
expect(res.detail).toBeDefined();
|
|
177
|
+
expect(res.detail).not.toMatch(/[\n\r\x00-\x1f]/);
|
|
178
|
+
// The offending value survives in ESCAPED (JSON.stringify) form, so the
|
|
179
|
+
// operator still sees what was rejected without terminal/log spoofing.
|
|
180
|
+
expect(res.detail).toContain(JSON.stringify(evil));
|
|
181
|
+
});
|
|
182
|
+
it('never throws on an invalid explicitly-set slug (typed result only)', () => {
|
|
183
|
+
const marker = join(dir, '.mx-coordination-team');
|
|
184
|
+
let res;
|
|
185
|
+
expect(() => {
|
|
186
|
+
res = resolveCoordinationToken({
|
|
187
|
+
project: 'Bad--Slug',
|
|
188
|
+
env: { CLAUDE_WORKTREE_PATH: dir },
|
|
189
|
+
readFileText: reader({ [marker]: 'eval\n' }),
|
|
190
|
+
fetchSecret: vi.fn(),
|
|
191
|
+
});
|
|
192
|
+
}).not.toThrow();
|
|
193
|
+
expect(res?.status).toBe('misconfigured');
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
//# sourceMappingURL=slug-validation.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug-validation.test.js","sourceRoot":"","sources":["../../src/__tests__/slug-validation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordination.d.ts","sourceRoot":"","sources":["../../src/commands/coordination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAML,KAAK,kBAAkB,EAExB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"coordination.d.ts","sourceRoot":"","sources":["../../src/commands/coordination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAML,KAAK,kBAAkB,EAExB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,+BAA+B,CAAC;AAkDvC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAAE,GAAG,kBAAkB,GAAG,IAAI,CA4C/F;AAkCD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AASD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAkDD;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqC/F;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BzF;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAsB,QAAQ,CAAC,IAAI,GAAE,YAAiB,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C9F;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,kFAAkF;AAClF,qBAAa,cAAe,SAAQ,KAAK;;CAKxC;AAQD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,GAAE,YAAiB,EACvB,IAAI,CAAC,EAAE,gBAAgB,GAAG;IAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAClE,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED,gBAAgB;AAChB,wBAAsB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAStF;AAED,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAKD;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,IAAI,GAAE,cAAmB,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBlG"}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { HttpCoordinationClient, resolveClientConfig, resolveCoordinationMode, ServiceUnreachableError, ServiceHttpError, } from '../lib/coordination-client.js';
|
|
13
13
|
import { resolveCoordinationToken } from '../lib/coordination-token.js';
|
|
14
|
+
import { isValidProjectSlug, invalidProjectSlugMessage } from '../lib/slug.js';
|
|
14
15
|
import { appendFallbackEntry, flushFallback } from '../lib/coordination-fallback.js';
|
|
15
16
|
import { renderMessages } from '../lib/coordination-render.js';
|
|
16
17
|
import { escalateToOutbox, readEscalationsForTeam, renderEscalationBlocks, resolveMemoryTeam, resolveProductSlug, } from '../lib/coordination-memory.js';
|
|
@@ -22,6 +23,22 @@ const WATCH_BACKOFF_CAP_MS = 5 * 60 * 1000;
|
|
|
22
23
|
function resolveTeam(explicit) {
|
|
23
24
|
return explicit || process.env.CLAUDE_WORKTREE_NAME || 'unknown';
|
|
24
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the memory-mode product slug, failing CLOSED on an invalid
|
|
28
|
+
* explicitly-set value (KI-COORDMT-CLIENT-SLUG-VALIDATION). The default
|
|
29
|
+
* 'memnexus' is known-valid so the unset path never trips; an explicitly-set
|
|
30
|
+
* invalid slug prints the offending value + rule and exits non-zero rather than
|
|
31
|
+
* building an outbox/shared-doc name under it (which would write into another
|
|
32
|
+
* tenant's memory channel). Returns the validated slug on success.
|
|
33
|
+
*/
|
|
34
|
+
function resolveMemoryProductSlugOrExit() {
|
|
35
|
+
const slug = resolveProductSlug();
|
|
36
|
+
if (!isValidProjectSlug(slug)) {
|
|
37
|
+
console.error(`Error: ${invalidProjectSlugMessage(slug)}`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
return slug;
|
|
41
|
+
}
|
|
25
42
|
function envInt(name, fallback) {
|
|
26
43
|
const raw = process.env[name];
|
|
27
44
|
if (!raw)
|
|
@@ -88,6 +105,12 @@ export function prepareClient(deps) {
|
|
|
88
105
|
if (res.status === 'not-on-roster') {
|
|
89
106
|
process.stderr.write(`coordination: team "${res.slug}" is not on the coordination roster — falling back to the manual channel\n`);
|
|
90
107
|
}
|
|
108
|
+
else if (res.status === 'misconfigured') {
|
|
109
|
+
// Fail-CLOSED on an invalid explicitly-set project slug: name the offending
|
|
110
|
+
// value + rule (res.detail) so the operator can fix the config. We do NOT
|
|
111
|
+
// silently route into the memnexus tenant.
|
|
112
|
+
process.stderr.write(`coordination: ${res.detail} — falling back to the manual channel\n`);
|
|
113
|
+
}
|
|
91
114
|
else {
|
|
92
115
|
const why = res.detail ?? (err instanceof Error ? err.message : String(err));
|
|
93
116
|
process.stderr.write(`coordination: could not provision a service token (${why}) — falling back to the manual channel\n`);
|
|
@@ -139,7 +162,7 @@ function memoryModeQueueOnlyNote(subcommand) {
|
|
|
139
162
|
*/
|
|
140
163
|
async function runEscalateMemory(opts, deps) {
|
|
141
164
|
const team = resolveMemoryTeam(opts.team);
|
|
142
|
-
const slug =
|
|
165
|
+
const slug = resolveMemoryProductSlugOrExit();
|
|
143
166
|
let res;
|
|
144
167
|
try {
|
|
145
168
|
res = escalateToOutbox({ fromTeam: team, to: opts.to, priority: opts.priority, body: opts.body, productSlug: slug }, deps?.memoryStore);
|
|
@@ -165,7 +188,7 @@ async function runEscalateMemory(opts, deps) {
|
|
|
165
188
|
*/
|
|
166
189
|
async function runBriefMemory(opts, deps) {
|
|
167
190
|
const team = opts.expectedTeam ?? resolveMemoryTeam();
|
|
168
|
-
const slug =
|
|
191
|
+
const slug = resolveMemoryProductSlugOrExit();
|
|
169
192
|
const { present, entries } = readEscalationsForTeam(team, slug, deps?.memoryStore);
|
|
170
193
|
if (!present || entries.length === 0) {
|
|
171
194
|
console.log('no cross-team coordination pending');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordination.js","sourceRoot":"","sources":["../../src/commands/coordination.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"coordination.js","sourceRoot":"","sources":["../../src/commands/coordination.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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"}
|
|
@@ -59,6 +59,14 @@ export type TokenResolveStatus =
|
|
|
59
59
|
| 'resolved'
|
|
60
60
|
/** Fail-CLOSED: the marker slug is not on the roster — no fetch performed. */
|
|
61
61
|
| 'not-on-roster'
|
|
62
|
+
/**
|
|
63
|
+
* Fail-CLOSED: the explicitly-configured PROJECT slug is invalid (fails the
|
|
64
|
+
* client slug rules). No roster lookup and no `az`/KV call is attempted — a
|
|
65
|
+
* misconfigured project must never route its traffic into another tenant's
|
|
66
|
+
* secrets (KI-COORDMT-CLIENT-SLUG-VALIDATION). Typed (not thrown) so the
|
|
67
|
+
* never-throws provisioning contract holds and the caller degrades cleanly.
|
|
68
|
+
*/
|
|
69
|
+
| 'misconfigured'
|
|
62
70
|
/** Fail-OPEN: no marker, az not logged in, KV unreachable, or empty secret. */
|
|
63
71
|
| 'unprovisioned';
|
|
64
72
|
export interface TokenResolveResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordination-token.d.ts","sourceRoot":"","sources":["../../src/lib/coordination-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;
|
|
1
|
+
{"version":3,"file":"coordination-token.d.ts","sourceRoot":"","sources":["../../src/lib/coordination-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAUH;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,0GASf,CAAC;AAMX,eAAO,MAAM,aAAa,0BAA0B,CAAC;AAErD,qFAAqF;AACrF,eAAO,MAAM,mBAAmB,yBAAyB,CAAC;AAM1D;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAElE;AAYD,MAAM,MAAM,kBAAkB;AAC5B,sFAAsF;AACpF,oBAAoB;AACtB,iFAAiF;GAC/E,UAAU;AACZ,8EAA8E;GAC5E,eAAe;AACjB;;;;;;GAMG;GACD,eAAe;AACjB,+EAA+E;GAC7E,eAAe,CAAC;AAEpB,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;IACjD,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACxE,oFAAoF;IACpF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACpD,uEAAuE;IACvE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AA8CD;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GACjD,SAAS,MAAM,EAAE,CAkBnB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,GAAE,gBAAqB,GAAG,kBAAkB,CA+ExF"}
|
|
@@ -41,6 +41,7 @@ import { join } from 'node:path';
|
|
|
41
41
|
import { getConfigValue } from './config.js';
|
|
42
42
|
import { CONFIG_KEY_TOKEN } from './coordination-client.js';
|
|
43
43
|
import { resolveProductSlug, DEFAULT_PRODUCT_SLUG } from './coordination-memory.js';
|
|
44
|
+
import { isValidProjectSlug, invalidProjectSlugMessage } from './slug.js';
|
|
44
45
|
/**
|
|
45
46
|
* BUILTIN memnexus provisioned-team roster — the OFFLINE fallback used only when
|
|
46
47
|
* the generated roster file cannot be read. Mirrors PROVISIONED_ROSTERS in
|
|
@@ -177,6 +178,15 @@ export function resolveCoordinationToken(deps = {}) {
|
|
|
177
178
|
return { status: 'already-configured', token: configToken, source: 'config' };
|
|
178
179
|
// 2. Resolve the PROJECT (config-derived, default memnexus). Never throws.
|
|
179
180
|
const project = deps.project ?? resolveProductSlug();
|
|
181
|
+
// 2a. Validate the resolved project slug BEFORE any roster lookup or az/KV
|
|
182
|
+
// call (KI-COORDMT-CLIENT-SLUG-VALIDATION). The default 'memnexus' is
|
|
183
|
+
// known-valid so this never trips the unset path; an explicitly-set
|
|
184
|
+
// invalid slug fails CLOSED as a typed result — it is NOT coerced to
|
|
185
|
+
// memnexus (that would bleed the misconfigured project's traffic into the
|
|
186
|
+
// memnexus tenant). No KV-name is built for an invalid slug.
|
|
187
|
+
if (!isValidProjectSlug(project)) {
|
|
188
|
+
return { status: 'misconfigured', project, detail: invalidProjectSlugMessage(project) };
|
|
189
|
+
}
|
|
180
190
|
// 3. MF-2: read the authoritative team marker. No worktree/marker → fail-OPEN.
|
|
181
191
|
const worktree = env.CLAUDE_WORKTREE_PATH;
|
|
182
192
|
if (!worktree) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordination-token.js","sourceRoot":"","sources":["../../src/lib/coordination-token.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"coordination-token.js","sourceRoot":"","sources":["../../src/lib/coordination-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* slug -- client-side project/team slug validation.
|
|
3
|
+
*
|
|
4
|
+
* FAITHFUL COPY of the coordination SERVICE rules in
|
|
5
|
+
* coordination-service/src/types.ts (`isValidSlug`). The CLI is a separate
|
|
6
|
+
* package, so the rules are reproduced here rather than imported. If the service
|
|
7
|
+
* rules change, change these to match — the two MUST stay in sync:
|
|
8
|
+
*
|
|
9
|
+
* - base regex ^[a-z][a-z0-9-]{0,48}[a-z0-9]$ (TEAM_NAME_RE / PROJECT_NAME_RE)
|
|
10
|
+
* - no '--' substring (KV name `coordination-token--<project>--<team>`
|
|
11
|
+
* parse-safety, MINOR-5)
|
|
12
|
+
* - not a RESERVED slug ('all') (the broadcast address, MINOR-6)
|
|
13
|
+
*
|
|
14
|
+
* Rationale (KI-COORDMT-CLIENT-SLUG-VALIDATION): the resolved project slug flows
|
|
15
|
+
* into Key Vault secret-name construction, per-project roster lookups, and
|
|
16
|
+
* memory-outbox names. Until multi-tenant onboarding, only the known-valid
|
|
17
|
+
* literal 'memnexus' reached the client; arbitrary configured slugs
|
|
18
|
+
* (first real tenant: 'spearmint-private') now do, so the client must validate
|
|
19
|
+
* before a bad slug reaches a KV-name build, roster lookup, enqueue, or `az` call.
|
|
20
|
+
*/
|
|
21
|
+
/** Base slug regex — byte-identical to TEAM_NAME_RE in the service. */
|
|
22
|
+
export declare const PROJECT_SLUG_RE: RegExp;
|
|
23
|
+
/** Human-readable source of the base rule, for actionable error messages. */
|
|
24
|
+
export declare const PROJECT_SLUG_RE_SOURCE = "^[a-z][a-z0-9-]{0,48}[a-z0-9]$";
|
|
25
|
+
/** Reserved slugs a project/team may NOT use — mirrors RESERVED_SLUGS in the service. */
|
|
26
|
+
export declare const RESERVED_PROJECT_SLUGS: ReadonlySet<string>;
|
|
27
|
+
/**
|
|
28
|
+
* True when `s` is valid as a project (or team) slug: matches the base regex,
|
|
29
|
+
* contains no '--' substring, and is not a reserved word. Mirrors the service's
|
|
30
|
+
* `isValidSlug` exactly.
|
|
31
|
+
*/
|
|
32
|
+
export declare function isValidProjectSlug(s: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* A one-line, operator-actionable message naming the offending value and the
|
|
35
|
+
* rule it violated. Used by every enforcement point so the failure is uniform.
|
|
36
|
+
*
|
|
37
|
+
* The offending value is passed through JSON.stringify (CWE-117 log/terminal
|
|
38
|
+
* injection defense): `resolveProductSlug` only trims, so an invalid slug can
|
|
39
|
+
* carry interior newlines, ANSI escapes, or control bytes that would otherwise
|
|
40
|
+
* flow verbatim to stderr/logs. JSON.stringify quotes the value and escapes
|
|
41
|
+
* those bytes (`\n`, ``, etc.), so the message is a single safe line.
|
|
42
|
+
*/
|
|
43
|
+
export declare function invalidProjectSlugMessage(s: string): string;
|
|
44
|
+
//# sourceMappingURL=slug.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../src/lib/slug.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,uEAAuE;AACvE,eAAO,MAAM,eAAe,QAAmC,CAAC;AAEhE,6EAA6E;AAC7E,eAAO,MAAM,sBAAsB,mCAAmC,CAAC;AAEvE,yFAAyF;AACzF,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAAC,MAAM,CAAoB,CAAC;AAE5E;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D"}
|
package/dist/lib/slug.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* slug -- client-side project/team slug validation.
|
|
3
|
+
*
|
|
4
|
+
* FAITHFUL COPY of the coordination SERVICE rules in
|
|
5
|
+
* coordination-service/src/types.ts (`isValidSlug`). The CLI is a separate
|
|
6
|
+
* package, so the rules are reproduced here rather than imported. If the service
|
|
7
|
+
* rules change, change these to match — the two MUST stay in sync:
|
|
8
|
+
*
|
|
9
|
+
* - base regex ^[a-z][a-z0-9-]{0,48}[a-z0-9]$ (TEAM_NAME_RE / PROJECT_NAME_RE)
|
|
10
|
+
* - no '--' substring (KV name `coordination-token--<project>--<team>`
|
|
11
|
+
* parse-safety, MINOR-5)
|
|
12
|
+
* - not a RESERVED slug ('all') (the broadcast address, MINOR-6)
|
|
13
|
+
*
|
|
14
|
+
* Rationale (KI-COORDMT-CLIENT-SLUG-VALIDATION): the resolved project slug flows
|
|
15
|
+
* into Key Vault secret-name construction, per-project roster lookups, and
|
|
16
|
+
* memory-outbox names. Until multi-tenant onboarding, only the known-valid
|
|
17
|
+
* literal 'memnexus' reached the client; arbitrary configured slugs
|
|
18
|
+
* (first real tenant: 'spearmint-private') now do, so the client must validate
|
|
19
|
+
* before a bad slug reaches a KV-name build, roster lookup, enqueue, or `az` call.
|
|
20
|
+
*/
|
|
21
|
+
/** Base slug regex — byte-identical to TEAM_NAME_RE in the service. */
|
|
22
|
+
export const PROJECT_SLUG_RE = /^[a-z][a-z0-9-]{0,48}[a-z0-9]$/;
|
|
23
|
+
/** Human-readable source of the base rule, for actionable error messages. */
|
|
24
|
+
export const PROJECT_SLUG_RE_SOURCE = '^[a-z][a-z0-9-]{0,48}[a-z0-9]$';
|
|
25
|
+
/** Reserved slugs a project/team may NOT use — mirrors RESERVED_SLUGS in the service. */
|
|
26
|
+
export const RESERVED_PROJECT_SLUGS = new Set(['all']);
|
|
27
|
+
/**
|
|
28
|
+
* True when `s` is valid as a project (or team) slug: matches the base regex,
|
|
29
|
+
* contains no '--' substring, and is not a reserved word. Mirrors the service's
|
|
30
|
+
* `isValidSlug` exactly.
|
|
31
|
+
*/
|
|
32
|
+
export function isValidProjectSlug(s) {
|
|
33
|
+
return PROJECT_SLUG_RE.test(s) && !s.includes('--') && !RESERVED_PROJECT_SLUGS.has(s);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* A one-line, operator-actionable message naming the offending value and the
|
|
37
|
+
* rule it violated. Used by every enforcement point so the failure is uniform.
|
|
38
|
+
*
|
|
39
|
+
* The offending value is passed through JSON.stringify (CWE-117 log/terminal
|
|
40
|
+
* injection defense): `resolveProductSlug` only trims, so an invalid slug can
|
|
41
|
+
* carry interior newlines, ANSI escapes, or control bytes that would otherwise
|
|
42
|
+
* flow verbatim to stderr/logs. JSON.stringify quotes the value and escapes
|
|
43
|
+
* those bytes (`\n`, ``, etc.), so the message is a single safe line.
|
|
44
|
+
*/
|
|
45
|
+
export function invalidProjectSlugMessage(s) {
|
|
46
|
+
return `project slug ${JSON.stringify(s)} is invalid: must match ${PROJECT_SLUG_RE_SOURCE}, no '--', not reserved`;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=slug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slug.js","sourceRoot":"","sources":["../../src/lib/slug.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,uEAAuE;AACvE,MAAM,CAAC,MAAM,eAAe,GAAG,gCAAgC,CAAC;AAEhE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,gCAAgC,CAAC;AAEvE,yFAAyF;AACzF,MAAM,CAAC,MAAM,sBAAsB,GAAwB,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAE5E;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAS;IAC1C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,CAAS;IACjD,OAAO,gBAAgB,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,2BAA2B,sBAAsB,yBAAyB,CAAC;AACrH,CAAC"}
|