@memnexus-ai/mx-agent-cli 0.1.198 → 0.1.200
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__/claude-sync.test.js +42 -93
- package/dist/__tests__/claude-sync.test.js.map +1 -1
- package/dist/__tests__/config-generation-gate.test.d.ts +33 -0
- package/dist/__tests__/config-generation-gate.test.d.ts.map +1 -0
- package/dist/__tests__/config-generation-gate.test.js +250 -0
- package/dist/__tests__/config-generation-gate.test.js.map +1 -0
- package/dist/__tests__/config-mirror-integrity.test.d.ts +16 -0
- package/dist/__tests__/config-mirror-integrity.test.d.ts.map +1 -1
- package/dist/__tests__/config-mirror-integrity.test.js +16 -0
- package/dist/__tests__/config-mirror-integrity.test.js.map +1 -1
- package/dist/__tests__/generate-claude.test.d.ts +18 -0
- package/dist/__tests__/generate-claude.test.d.ts.map +1 -0
- package/dist/__tests__/generate-claude.test.js +484 -0
- package/dist/__tests__/generate-claude.test.js.map +1 -0
- package/dist/agent-config/rules/eval-harness.md +18 -0
- package/dist/agent-config/settings.json +5 -1
- package/dist/lib/claude.d.ts.map +1 -1
- package/dist/lib/claude.js +63 -166
- package/dist/lib/claude.js.map +1 -1
- package/package.json +2 -1
- package/scripts/generate-claude.mjs +676 -0
|
@@ -40,113 +40,62 @@ function fail() {
|
|
|
40
40
|
return { status: 1, stdout: '', stderr: 'error', pid: 1, output: [], signal: null, error: undefined };
|
|
41
41
|
}
|
|
42
42
|
// ── Tests ─────────────────────────────────────────────────────────────────────
|
|
43
|
-
describe('syncClaudeConfig —
|
|
44
|
-
|
|
45
|
-
|
|
43
|
+
describe('syncClaudeConfig — generator delegation (Direction B #4304)', () => {
|
|
44
|
+
// Under Direction B, syncClaudeConfig delegates the whole .claude/ tree to the
|
|
45
|
+
// single generator (scripts/generate-claude.mjs) via its --from-git mode, which
|
|
46
|
+
// sources agent-config from a `git archive` of origin/<base> — preserving the
|
|
47
|
+
// tamper-resistant "config comes from the reviewed remote" property. The call
|
|
48
|
+
// sequence is: (1) git fetch, (2) git show settings.json (existence gate for the
|
|
49
|
+
// external-bootstrap fallback), (3) node generate-claude.mjs. spawnSync is
|
|
50
|
+
// mocked here, so no real files are materialized by the generator; these tests
|
|
51
|
+
// lock down the control flow, the fallback, and the generator invocation args.
|
|
52
|
+
it('settings present — invokes the generator with --from-git origin/<base>', () => {
|
|
46
53
|
mockSpawnSync
|
|
47
54
|
.mockReturnValueOnce(ok()) // git fetch
|
|
48
|
-
.mockReturnValueOnce(ok('{"allow":[],"deny":[]}')) // git show settings.json
|
|
49
|
-
.mockReturnValueOnce(ok(
|
|
50
|
-
.mockReturnValueOnce(ok('#!/bin/bash\n# guard script\n')); // git show hooks/worktree-guard.sh
|
|
55
|
+
.mockReturnValueOnce(ok('{"allow":[],"deny":[]}')) // git show settings.json (present)
|
|
56
|
+
.mockReturnValueOnce(ok()); // node generate-claude.mjs
|
|
51
57
|
syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' });
|
|
52
|
-
const settingsPath = join(tmpRoot, '.claude', 'settings.json');
|
|
53
|
-
const guardPath = join(tmpRoot, '.claude', 'hooks', 'worktree-guard.sh');
|
|
54
|
-
expect(existsSync(settingsPath)).toBe(true);
|
|
55
|
-
expect(existsSync(guardPath)).toBe(true);
|
|
56
|
-
expect(readFileSync(settingsPath, 'utf-8')).toBe('{"allow":[],"deny":[]}');
|
|
57
|
-
expect(readFileSync(guardPath, 'utf-8')).toBe('#!/bin/bash\n# guard script\n');
|
|
58
|
-
});
|
|
59
|
-
it('deploys .conf sidecars alongside .sh hooks (#4017 routes.conf gap)', () => {
|
|
60
|
-
// ls-tree lists a hook script AND its .conf sidecar; both must deploy.
|
|
61
|
-
mockSpawnSync
|
|
62
|
-
.mockReturnValueOnce(ok()) // git fetch
|
|
63
|
-
.mockReturnValueOnce(ok('{"allow":[],"deny":[]}')) // git show settings.json
|
|
64
|
-
.mockReturnValueOnce(ok('ci-validate-hook.sh\nci-validate-routes.conf\n')) // ls-tree hooks/
|
|
65
|
-
.mockReturnValueOnce(ok('#!/bin/bash\n# hook\n')) // git show ci-validate-hook.sh
|
|
66
|
-
.mockReturnValueOnce(ok('cli/*|scripts/validate-cli.sh|cli\n')); // git show ci-validate-routes.conf
|
|
67
|
-
syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' });
|
|
68
|
-
const shPath = join(tmpRoot, '.claude', 'hooks', 'ci-validate-hook.sh');
|
|
69
|
-
const confPath = join(tmpRoot, '.claude', 'hooks', 'ci-validate-routes.conf');
|
|
70
|
-
expect(existsSync(shPath)).toBe(true);
|
|
71
|
-
expect(existsSync(confPath)).toBe(true);
|
|
72
|
-
expect(readFileSync(confPath, 'utf-8')).toBe('cli/*|scripts/validate-cli.sh|cli\n');
|
|
73
|
-
});
|
|
74
|
-
it('settings.json fetch fails — bundled fallback deployed', () => {
|
|
75
|
-
mockSpawnSync
|
|
76
|
-
.mockReturnValueOnce(ok()) // git fetch succeeds
|
|
77
|
-
.mockReturnValueOnce(fail()); // git show settings.json fails
|
|
78
|
-
syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' });
|
|
79
|
-
const settingsPath = join(tmpRoot, '.claude', 'settings.json');
|
|
80
|
-
const guardPath = join(tmpRoot, '.claude', 'hooks', 'worktree-guard.sh');
|
|
81
|
-
// When settings.json fetch fails, a bundled permissions fallback is deployed
|
|
82
|
-
expect(existsSync(settingsPath)).toBe(true);
|
|
83
|
-
// No hooks written since ls-tree was never called
|
|
84
|
-
expect(existsSync(guardPath)).toBe(false);
|
|
85
|
-
});
|
|
86
|
-
it('ls-tree fails — nothing written', () => {
|
|
87
|
-
mockSpawnSync
|
|
88
|
-
.mockReturnValueOnce(ok()) // git fetch succeeds
|
|
89
|
-
.mockReturnValueOnce(ok('{"allow":[],"deny":[]}')) // git show settings.json succeeds
|
|
90
|
-
.mockReturnValueOnce(fail()); // git ls-tree fails
|
|
91
|
-
syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' });
|
|
92
|
-
expect(existsSync(join(tmpRoot, '.claude', 'settings.json'))).toBe(false);
|
|
93
|
-
// fetch + show settings + ls-tree = 3 calls
|
|
94
58
|
expect(mockSpawnSync).toHaveBeenCalledTimes(3);
|
|
59
|
+
const [cmd, args] = mockSpawnSync.mock.calls[2];
|
|
60
|
+
expect(cmd).toBe(process.execPath);
|
|
61
|
+
expect(args).toContain('--from-git');
|
|
62
|
+
expect(args).toContain('origin/main');
|
|
63
|
+
expect(args).toContain('--repo-root');
|
|
64
|
+
expect(args).toContain(tmpRoot);
|
|
65
|
+
expect(args).toContain('--dest');
|
|
66
|
+
expect(args).toContain(join(tmpRoot, '.claude'));
|
|
67
|
+
expect(args).toContain('--config-source');
|
|
68
|
+
expect(args).toContain('mx-agent-system/agent-config');
|
|
69
|
+
// The generator script path is the last positional before the flags.
|
|
70
|
+
expect(String(args[0])).toMatch(/generate-claude\.mjs$/);
|
|
95
71
|
});
|
|
96
|
-
it('
|
|
72
|
+
it('settings.json absent in origin — bundled fallback deployed, generator NOT invoked', () => {
|
|
97
73
|
mockSpawnSync
|
|
98
74
|
.mockReturnValueOnce(ok()) // git fetch succeeds
|
|
99
|
-
.mockReturnValueOnce(
|
|
100
|
-
.mockReturnValueOnce(ok('worktree-guard.sh\n')) // git ls-tree hooks/ succeeds
|
|
101
|
-
.mockReturnValueOnce(fail()); // git show hooks/worktree-guard.sh fails
|
|
75
|
+
.mockReturnValueOnce(fail()); // git show settings.json fails (external bootstrap)
|
|
102
76
|
syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' });
|
|
103
|
-
//
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
expect(
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
77
|
+
// Bundled permissions fallback written directly (no generator run).
|
|
78
|
+
expect(existsSync(join(tmpRoot, '.claude', 'settings.json'))).toBe(true);
|
|
79
|
+
// Only fetch + show settings — the generator subprocess is never spawned.
|
|
80
|
+
expect(mockSpawnSync).toHaveBeenCalledTimes(2);
|
|
81
|
+
for (const call of mockSpawnSync.mock.calls) {
|
|
82
|
+
expect(call[0]).not.toBe(process.execPath);
|
|
83
|
+
}
|
|
110
84
|
});
|
|
111
|
-
it('git fetch fails —
|
|
112
|
-
mockSpawnSync
|
|
113
|
-
.mockReturnValueOnce(fail()); // git fetch fails
|
|
85
|
+
it('git fetch fails — early return, generator not invoked', () => {
|
|
86
|
+
mockSpawnSync.mockReturnValueOnce(fail()); // git fetch fails
|
|
114
87
|
syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' });
|
|
115
|
-
|
|
116
|
-
const guardPath = join(tmpRoot, '.claude', 'hooks', 'worktree-guard.sh');
|
|
117
|
-
expect(existsSync(settingsPath)).toBe(false);
|
|
118
|
-
expect(existsSync(guardPath)).toBe(false);
|
|
119
|
-
// Only the fetch call should have been made — no git show calls
|
|
88
|
+
expect(existsSync(join(tmpRoot, '.claude', 'settings.json'))).toBe(false);
|
|
120
89
|
expect(mockSpawnSync).toHaveBeenCalledTimes(1);
|
|
121
90
|
});
|
|
122
|
-
it('
|
|
123
|
-
// Pre-seed hooksDir with a stale hook that canonical no longer ships
|
|
124
|
-
const hooksDir = join(tmpRoot, '.claude', 'hooks');
|
|
125
|
-
mkdirSync(hooksDir, { recursive: true });
|
|
126
|
-
writeFileSync(join(hooksDir, 'old-hook.sh'), '#!/bin/bash\necho stale\n');
|
|
91
|
+
it('generator fails — agent config left unchanged, no throw', () => {
|
|
127
92
|
mockSpawnSync
|
|
128
93
|
.mockReturnValueOnce(ok()) // git fetch
|
|
129
|
-
.mockReturnValueOnce(ok('{"allow":[],"deny":[]}')) // git show settings.json
|
|
130
|
-
.mockReturnValueOnce(
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
expect(
|
|
134
|
-
expect(existsSync(join(hooksDir, 'old-hook.sh'))).toBe(false); // stale hook removed
|
|
135
|
-
});
|
|
136
|
-
it('SEC-02: path traversal filenames from ls-tree are rejected', () => {
|
|
137
|
-
mockSpawnSync
|
|
138
|
-
.mockReturnValueOnce(ok()) // git fetch
|
|
139
|
-
.mockReturnValueOnce(ok('{"allow":[],"deny":[]}')) // git show settings.json
|
|
140
|
-
.mockReturnValueOnce(ok('../../evil.sh\nworktree-guard.sh\n')) // ls-tree returns traversal attempt
|
|
141
|
-
.mockReturnValueOnce(ok('#!/bin/bash\n# guard\n')); // git show for worktree-guard.sh only
|
|
142
|
-
syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' });
|
|
143
|
-
// evil.sh should not have been written anywhere
|
|
144
|
-
expect(existsSync(join(tmpRoot, 'evil.sh'))).toBe(false);
|
|
145
|
-
expect(existsSync(join(tmpRoot, '../../evil.sh'))).toBe(false);
|
|
146
|
-
// worktree-guard.sh should still be written (basename check passes)
|
|
147
|
-
expect(existsSync(join(tmpRoot, '.claude', 'hooks', 'worktree-guard.sh'))).toBe(true);
|
|
148
|
-
// 6 spawnSync calls: fetch, settings, ls-tree hooks, guard, ls-tree agents, ls-tree skills (evil.sh skipped)
|
|
149
|
-
expect(mockSpawnSync).toHaveBeenCalledTimes(6);
|
|
94
|
+
.mockReturnValueOnce(ok('{"allow":[],"deny":[]}')) // git show settings.json (present)
|
|
95
|
+
.mockReturnValueOnce(fail()); // node generate-claude.mjs fails
|
|
96
|
+
expect(() => syncClaudeConfig(tmpRoot, { baseBranch: 'main', configSource: 'mx-agent-system/agent-config' })).not.toThrow();
|
|
97
|
+
// fetch + show settings + generator attempt = 3 calls; nothing materialized.
|
|
98
|
+
expect(mockSpawnSync).toHaveBeenCalledTimes(3);
|
|
150
99
|
});
|
|
151
100
|
});
|
|
152
101
|
// ── deployBaseHooks ────────────────────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-sync.test.js","sourceRoot":"","sources":["../../src/__tests__/claude-sync.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude-sync.test.js","sourceRoot":"","sources":["../../src/__tests__/claude-sync.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase 3 GENERATION-CORRECTNESS GATE — config-single-source migration (#4304).
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS FILE EXISTS
|
|
5
|
+
* The old drift gate (`config-mirror-integrity.test.ts`) proves "are the two
|
|
6
|
+
* committed copies equal" — it only works while BOTH `agent-config/` and a
|
|
7
|
+
* committed `.claude/` exist. Phase 4 gitignores `.claude/`, removing the second
|
|
8
|
+
* copy, so a two-copy comparison becomes vacuous. This gate replaces that
|
|
9
|
+
* question with the one that survives Phase 4: "does the ONE source generate
|
|
10
|
+
* correct, stable output?"
|
|
11
|
+
*
|
|
12
|
+
* It runs the REAL generator (`scripts/generate-claude.mjs`, imported — not a
|
|
13
|
+
* reimplementation) into throwaway TEMP dirs and never writes into the repo's
|
|
14
|
+
* live `.claude/`. Coverage of the deep fail-closed / symlink-attack surface
|
|
15
|
+
* lives in `generate-claude.test.ts`; this file is the fleet-facing correctness
|
|
16
|
+
* contract Phase 4 is gated on. The five assertions map to the Phase 3 condition
|
|
17
|
+
* recorded on #4304:
|
|
18
|
+
*
|
|
19
|
+
* a. DETERMINISM/IDEMPOTENCE — two runs are byte- AND mode-identical.
|
|
20
|
+
* b. NO-OP vs COMMITTED — generated output == committed `.claude/`.
|
|
21
|
+
* c. SETTINGS SECURITY FIELDS — generated settings.json keeps its permission
|
|
22
|
+
* posture (allow/deny/ask/experimental flag +
|
|
23
|
+
* the specific .claude self-protection denies).
|
|
24
|
+
* d. BUNDLE FIDELITY — dist/agent-config == agent-config minus the
|
|
25
|
+
* documented exclusions.
|
|
26
|
+
* e. NO SYMLINKS — zero symlinks in generated output AND in the
|
|
27
|
+
* source trees (regression-locks the PO ban).
|
|
28
|
+
*
|
|
29
|
+
* PHASE 4 FLIP NOTES are inline on assertion (b): the NO-OP-vs-COMMITTED
|
|
30
|
+
* assertion changes target when `.claude/` stops being committed.
|
|
31
|
+
*/
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=config-generation-gate.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-generation-gate.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/config-generation-gate.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG"}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase 3 GENERATION-CORRECTNESS GATE — config-single-source migration (#4304).
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS FILE EXISTS
|
|
5
|
+
* The old drift gate (`config-mirror-integrity.test.ts`) proves "are the two
|
|
6
|
+
* committed copies equal" — it only works while BOTH `agent-config/` and a
|
|
7
|
+
* committed `.claude/` exist. Phase 4 gitignores `.claude/`, removing the second
|
|
8
|
+
* copy, so a two-copy comparison becomes vacuous. This gate replaces that
|
|
9
|
+
* question with the one that survives Phase 4: "does the ONE source generate
|
|
10
|
+
* correct, stable output?"
|
|
11
|
+
*
|
|
12
|
+
* It runs the REAL generator (`scripts/generate-claude.mjs`, imported — not a
|
|
13
|
+
* reimplementation) into throwaway TEMP dirs and never writes into the repo's
|
|
14
|
+
* live `.claude/`. Coverage of the deep fail-closed / symlink-attack surface
|
|
15
|
+
* lives in `generate-claude.test.ts`; this file is the fleet-facing correctness
|
|
16
|
+
* contract Phase 4 is gated on. The five assertions map to the Phase 3 condition
|
|
17
|
+
* recorded on #4304:
|
|
18
|
+
*
|
|
19
|
+
* a. DETERMINISM/IDEMPOTENCE — two runs are byte- AND mode-identical.
|
|
20
|
+
* b. NO-OP vs COMMITTED — generated output == committed `.claude/`.
|
|
21
|
+
* c. SETTINGS SECURITY FIELDS — generated settings.json keeps its permission
|
|
22
|
+
* posture (allow/deny/ask/experimental flag +
|
|
23
|
+
* the specific .claude self-protection denies).
|
|
24
|
+
* d. BUNDLE FIDELITY — dist/agent-config == agent-config minus the
|
|
25
|
+
* documented exclusions.
|
|
26
|
+
* e. NO SYMLINKS — zero symlinks in generated output AND in the
|
|
27
|
+
* source trees (regression-locks the PO ban).
|
|
28
|
+
*
|
|
29
|
+
* PHASE 4 FLIP NOTES are inline on assertion (b): the NO-OP-vs-COMMITTED
|
|
30
|
+
* assertion changes target when `.claude/` stops being committed.
|
|
31
|
+
*/
|
|
32
|
+
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
|
33
|
+
import { cpSync, existsSync, mkdirSync, mkdtempSync, readdirSync, readFileSync, rmSync, statSync, } from 'fs';
|
|
34
|
+
import { tmpdir } from 'os';
|
|
35
|
+
import { dirname, join } from 'path';
|
|
36
|
+
import { fileURLToPath } from 'url';
|
|
37
|
+
// @ts-expect-error — plain ESM script, no type declarations.
|
|
38
|
+
import { generateClaudeConfig } from '../../scripts/generate-claude.mjs';
|
|
39
|
+
// @ts-expect-error — plain ESM script, no type declarations.
|
|
40
|
+
import { makeConfigFilter } from '../../scripts/bundle-config.mjs';
|
|
41
|
+
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
42
|
+
const CONFIG_SOURCE = 'mx-agent-system/agent-config';
|
|
43
|
+
/** Ascend to the repo root that holds mx-agent-system/agent-config/settings.json. */
|
|
44
|
+
function findRepoRoot() {
|
|
45
|
+
let dir = HERE;
|
|
46
|
+
for (let i = 0; i < 20; i++) {
|
|
47
|
+
if (existsSync(join(dir, CONFIG_SOURCE, 'settings.json')))
|
|
48
|
+
return dir;
|
|
49
|
+
const parent = dirname(dir);
|
|
50
|
+
if (parent === dir)
|
|
51
|
+
break;
|
|
52
|
+
dir = parent;
|
|
53
|
+
}
|
|
54
|
+
throw new Error('config-generation-gate: could not locate repo root from ' + HERE);
|
|
55
|
+
}
|
|
56
|
+
const REPO_ROOT = findRepoRoot();
|
|
57
|
+
const SRC = join(REPO_ROOT, CONFIG_SOURCE);
|
|
58
|
+
const COMMITTED_CLAUDE = join(REPO_ROOT, '.claude');
|
|
59
|
+
const DIST_BUNDLE = join(REPO_ROOT, 'mx-agent-system', 'cli', 'dist', 'agent-config');
|
|
60
|
+
/** Recursively list files (relative POSIX paths) and symlinks under a dir. */
|
|
61
|
+
function walk(root, base = '') {
|
|
62
|
+
const files = [];
|
|
63
|
+
const links = [];
|
|
64
|
+
for (const ent of readdirSync(join(root, base), { withFileTypes: true })) {
|
|
65
|
+
const rel = base ? `${base}/${ent.name}` : ent.name;
|
|
66
|
+
if (ent.isSymbolicLink())
|
|
67
|
+
links.push(rel);
|
|
68
|
+
else if (ent.isDirectory()) {
|
|
69
|
+
const sub = walk(root, rel);
|
|
70
|
+
files.push(...sub.files);
|
|
71
|
+
links.push(...sub.links);
|
|
72
|
+
}
|
|
73
|
+
else if (ent.isFile())
|
|
74
|
+
files.push(rel);
|
|
75
|
+
}
|
|
76
|
+
return { files: files.sort(), links: links.sort() };
|
|
77
|
+
}
|
|
78
|
+
/** Content + mode snapshot of every regular file, keyed by relative path. */
|
|
79
|
+
function snapshotWithModes(dest) {
|
|
80
|
+
const out = {};
|
|
81
|
+
for (const rel of walk(dest).files) {
|
|
82
|
+
const abs = join(dest, rel);
|
|
83
|
+
const mode = statSync(abs).mode & 0o777;
|
|
84
|
+
out[rel] = `${mode.toString(8)}:${readFileSync(abs).toString('base64')}`;
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
/** baseDir/overlayDir for a copied agent-config tree rooted at <root>/<CONFIG_SOURCE>. */
|
|
89
|
+
function layers(srcRoot) {
|
|
90
|
+
return { baseDir: srcRoot, overlayDir: join(srcRoot, 'local') };
|
|
91
|
+
}
|
|
92
|
+
/** Copy the real committed agent-config source into an isolated temp root. */
|
|
93
|
+
function buildFixture(prefix) {
|
|
94
|
+
const root = mkdtempSync(join(tmpdir(), prefix));
|
|
95
|
+
const src = join(root, CONFIG_SOURCE);
|
|
96
|
+
mkdirSync(dirname(src), { recursive: true });
|
|
97
|
+
cpSync(SRC, src, { recursive: true });
|
|
98
|
+
return { root, src };
|
|
99
|
+
}
|
|
100
|
+
// Generate ONCE from an isolated copy of the real source into a temp dest, and
|
|
101
|
+
// reuse across the read-only assertions below. Nothing here touches the repo's
|
|
102
|
+
// live .claude/ — the generator only writes under `dest`.
|
|
103
|
+
let root;
|
|
104
|
+
let src;
|
|
105
|
+
let dest;
|
|
106
|
+
beforeAll(() => {
|
|
107
|
+
({ root, src } = buildFixture('mx-gengate-'));
|
|
108
|
+
dest = join(root, '.claude');
|
|
109
|
+
generateClaudeConfig({ ...layers(src), destRoot: dest });
|
|
110
|
+
});
|
|
111
|
+
afterAll(() => {
|
|
112
|
+
rmSync(root, { recursive: true, force: true });
|
|
113
|
+
});
|
|
114
|
+
// ── (a) DETERMINISM / IDEMPOTENCE ────────────────────────────────────────────
|
|
115
|
+
describe('generation gate (a): determinism / idempotence', () => {
|
|
116
|
+
it('two independent runs are byte- AND mode-identical', () => {
|
|
117
|
+
const a = buildFixture('mx-gengate-detA-');
|
|
118
|
+
const b = buildFixture('mx-gengate-detB-');
|
|
119
|
+
try {
|
|
120
|
+
const destA = join(a.root, '.claude');
|
|
121
|
+
const destB = join(b.root, '.claude');
|
|
122
|
+
generateClaudeConfig({ ...layers(a.src), destRoot: destA });
|
|
123
|
+
generateClaudeConfig({ ...layers(b.src), destRoot: destB });
|
|
124
|
+
// Includes 0o755/0o644 mode bits — a mode regression (e.g. a hook shipped
|
|
125
|
+
// non-executable) fails here, not just a content regression.
|
|
126
|
+
expect(snapshotWithModes(destA)).toEqual(snapshotWithModes(destB));
|
|
127
|
+
}
|
|
128
|
+
finally {
|
|
129
|
+
rmSync(a.root, { recursive: true, force: true });
|
|
130
|
+
rmSync(b.root, { recursive: true, force: true });
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
it('re-running into the SAME dest is a stable no-op (idempotent)', () => {
|
|
134
|
+
const before = snapshotWithModes(dest);
|
|
135
|
+
generateClaudeConfig({ ...layers(src), destRoot: dest });
|
|
136
|
+
expect(snapshotWithModes(dest)).toEqual(before);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
// ── (b) NO-OP vs COMMITTED ───────────────────────────────────────────────────
|
|
140
|
+
describe('generation gate (b): generated output matches committed .claude', () => {
|
|
141
|
+
// Runtime-only artifacts that live in .claude/ but are NOT generated config.
|
|
142
|
+
const isManaged = (f) => f !== 'settings.local.json' && !f.endsWith('.lock') && !f.startsWith('scheduled_tasks');
|
|
143
|
+
it('reproduces every committed managed file byte-for-byte and mode-for-mode', () => {
|
|
144
|
+
// PHASE 4 FLIP: once `.claude/` is gitignored there is no committed tree to
|
|
145
|
+
// compare against. In the Phase 4 PR, retarget this assertion to compare the
|
|
146
|
+
// NEW generation against the PREVIOUS generation (byte-stability across a
|
|
147
|
+
// config change) instead of against the committed `.claude/`. Until then this
|
|
148
|
+
// is the fleet-facing byte-stability evidence Phase 4 is gated on.
|
|
149
|
+
const managed = walk(COMMITTED_CLAUDE).files.filter(isManaged);
|
|
150
|
+
expect(managed.length).toBeGreaterThan(0); // sanity: committed tree present
|
|
151
|
+
for (const rel of managed) {
|
|
152
|
+
const g = join(dest, rel);
|
|
153
|
+
expect(existsSync(g), `generated missing ${rel}`).toBe(true);
|
|
154
|
+
expect(readFileSync(g).equals(readFileSync(join(COMMITTED_CLAUDE, rel))), `content mismatch: ${rel}`).toBe(true);
|
|
155
|
+
expect(statSync(g).mode & 0o777, `mode mismatch: ${rel}`).toBe(statSync(join(COMMITTED_CLAUDE, rel)).mode & 0o777);
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
it('produces no managed file that is absent from committed .claude', () => {
|
|
159
|
+
const committed = new Set(walk(COMMITTED_CLAUDE).files);
|
|
160
|
+
for (const rel of walk(dest).files) {
|
|
161
|
+
expect(committed.has(rel), `generated an extra file not in committed: ${rel}`).toBe(true);
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
});
|
|
165
|
+
// ── (c) SETTINGS SECURITY FIELDS (the recorded Phase 3 condition) ─────────────
|
|
166
|
+
describe('generation gate (c): generated settings.json security posture', () => {
|
|
167
|
+
let parsed;
|
|
168
|
+
beforeAll(() => {
|
|
169
|
+
const raw = readFileSync(join(dest, 'settings.json'), 'utf-8');
|
|
170
|
+
parsed = JSON.parse(raw); // parses as JSON, or throws here
|
|
171
|
+
});
|
|
172
|
+
it('has a non-empty permissions.allow list', () => {
|
|
173
|
+
expect(Array.isArray(parsed.permissions?.allow)).toBe(true);
|
|
174
|
+
expect(parsed.permissions.allow.length).toBeGreaterThan(0);
|
|
175
|
+
});
|
|
176
|
+
it('has a non-empty permissions.deny list', () => {
|
|
177
|
+
expect(Array.isArray(parsed.permissions?.deny)).toBe(true);
|
|
178
|
+
expect(parsed.permissions.deny.length).toBeGreaterThan(0);
|
|
179
|
+
});
|
|
180
|
+
it('has permissions.ask present', () => {
|
|
181
|
+
expect(parsed.permissions?.ask).toBeDefined();
|
|
182
|
+
});
|
|
183
|
+
it('has the CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS flag present', () => {
|
|
184
|
+
expect(parsed.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS).toBeDefined();
|
|
185
|
+
});
|
|
186
|
+
it('denies Write+Edit of .claude/settings.json and .claude/hooks/**', () => {
|
|
187
|
+
// A future generation bug that drops the self-protection deny list must fail
|
|
188
|
+
// CI loudly — these four entries are the agent-config protection surface
|
|
189
|
+
// (repo CLAUDE.md "Agent-config protection") shipped into every worktree.
|
|
190
|
+
const deny = new Set(parsed.permissions?.deny ?? []);
|
|
191
|
+
for (const required of [
|
|
192
|
+
'Write(.claude/settings.json)',
|
|
193
|
+
'Edit(.claude/settings.json)',
|
|
194
|
+
'Write(.claude/hooks/**)',
|
|
195
|
+
'Edit(.claude/hooks/**)',
|
|
196
|
+
]) {
|
|
197
|
+
expect(deny.has(required), `generated settings.json is missing deny entry: ${required}`).toBe(true);
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
// ── (d) BUNDLE FIDELITY ──────────────────────────────────────────────────────
|
|
202
|
+
//
|
|
203
|
+
// The package-shipped bundle (dist/agent-config, produced by `npm run build` →
|
|
204
|
+
// scripts/bundle-config.mjs) must equal agent-config/ minus the documented
|
|
205
|
+
// exclusions (local/, *.test.sh, node_modules, .git). The exclusion LOGIC itself
|
|
206
|
+
// is unit-tested in bundle-config.test.ts (makeConfigFilter / assertBundleNonEmpty);
|
|
207
|
+
// this asserts the actual materialized TREE equals source-minus-exclusions,
|
|
208
|
+
// reusing the real filter so the two never diverge. Skips when dist is absent
|
|
209
|
+
// (tests run without a prior `npm run build`); the Phase 3 VALIDATE step builds
|
|
210
|
+
// first so CI exercises it.
|
|
211
|
+
describe('generation gate (d): dist/agent-config bundle fidelity', () => {
|
|
212
|
+
const filter = makeConfigFilter(SRC);
|
|
213
|
+
const distPresent = existsSync(DIST_BUNDLE);
|
|
214
|
+
/** Files of agent-config that SHOULD ship, per the real bundle filter. */
|
|
215
|
+
function expectedBundleFiles() {
|
|
216
|
+
return walk(SRC).files.filter((rel) => filter(join(SRC, rel)));
|
|
217
|
+
}
|
|
218
|
+
(distPresent ? it : it.skip)('dist file set equals agent-config minus exclusions', () => {
|
|
219
|
+
const expected = expectedBundleFiles().sort();
|
|
220
|
+
const actual = walk(DIST_BUNDLE).files.sort();
|
|
221
|
+
expect(actual).toEqual(expected);
|
|
222
|
+
});
|
|
223
|
+
(distPresent ? it : it.skip)('every shipped dist file is byte-identical to its agent-config source', () => {
|
|
224
|
+
for (const rel of walk(DIST_BUNDLE).files) {
|
|
225
|
+
expect(readFileSync(join(DIST_BUNDLE, rel)).equals(readFileSync(join(SRC, rel))), `dist bundle content mismatch: ${rel}`).toBe(true);
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
(distPresent ? it : it.skip)('ships no excluded file (local/, *.test.sh, node_modules, .git)', () => {
|
|
229
|
+
for (const rel of walk(DIST_BUNDLE).files) {
|
|
230
|
+
expect(/(^|\/)(node_modules|\.git|local)(\/|$)/.test('/' + rel), `excluded segment leaked: ${rel}`).toBe(false);
|
|
231
|
+
expect(rel.endsWith('.test.sh'), `test script leaked: ${rel}`).toBe(false);
|
|
232
|
+
}
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
// ── (e) NO SYMLINKS (regression-locks the PO directive 2026-07-20) ────────────
|
|
236
|
+
describe('generation gate (e): no symlinks anywhere', () => {
|
|
237
|
+
it('the generated output contains zero symlinks', () => {
|
|
238
|
+
expect(walk(dest).links).toEqual([]);
|
|
239
|
+
});
|
|
240
|
+
it('the agent-config source tree contains zero symlinks', () => {
|
|
241
|
+
// Exclude node_modules — third-party deps may legitimately symlink and are
|
|
242
|
+
// never part of the generated/shipped surface (bundle filter drops them).
|
|
243
|
+
const links = walk(SRC).links.filter((l) => !l.startsWith('node_modules/') && !l.includes('/node_modules/'));
|
|
244
|
+
expect(links).toEqual([]);
|
|
245
|
+
});
|
|
246
|
+
it('the committed .claude tree contains zero symlinks', () => {
|
|
247
|
+
expect(walk(COMMITTED_CLAUDE).links).toEqual([]);
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
//# sourceMappingURL=config-generation-gate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-generation-gate.test.js","sourceRoot":"","sources":["../../src/__tests__/config-generation-gate.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,22 @@
|
|
|
11
11
|
* known-issues v68 / KI-HOOK-MIRROR-DRIFT-CHECK). When they drift, a worktree
|
|
12
12
|
* silently runs stale hook or skill logic. This test asserts byte-identity of
|
|
13
13
|
* the known mirror pairs so drift fails locally before it ships.
|
|
14
|
+
*
|
|
15
|
+
* ── PHASE 4 RETIREMENT (config-single-source migration #4304) ────────────────
|
|
16
|
+
* This entire file — both the MIRROR_PAIRS byte-identity suite and the
|
|
17
|
+
* `settings.json permissions parity` suite — is a TWO-COPY drift gate. It exists
|
|
18
|
+
* only because `.claude/` is still COMMITTED alongside `agent-config/`. Phase 4
|
|
19
|
+
* gitignores `.claude/`, deleting the second committed copy; at that point there
|
|
20
|
+
* is nothing to compare and these assertions become vacuous (every pair SKIPs on
|
|
21
|
+
* the `existsSync(claudeAbs)` guard once `.claude/` is untracked, and the parity
|
|
22
|
+
* suite short-circuits on `bothPresent`).
|
|
23
|
+
*
|
|
24
|
+
* DELETE this file in the Phase 4 PR. Its guarantee is replaced by the
|
|
25
|
+
* generation-correctness gate in `config-generation-gate.test.ts` (Phase 3),
|
|
26
|
+
* which proves the single remaining source generates correct, stable output —
|
|
27
|
+
* see that file's header for the kept-vs-added rationale. Until Phase 4 lands,
|
|
28
|
+
* KEEP these assertions: they are the live guard against a PR editing one side of
|
|
29
|
+
* the mirror while `.claude/` is still tracked.
|
|
14
30
|
*/
|
|
15
31
|
export {};
|
|
16
32
|
//# sourceMappingURL=config-mirror-integrity.test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-mirror-integrity.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/config-mirror-integrity.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config-mirror-integrity.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/config-mirror-integrity.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG"}
|
|
@@ -11,6 +11,22 @@
|
|
|
11
11
|
* known-issues v68 / KI-HOOK-MIRROR-DRIFT-CHECK). When they drift, a worktree
|
|
12
12
|
* silently runs stale hook or skill logic. This test asserts byte-identity of
|
|
13
13
|
* the known mirror pairs so drift fails locally before it ships.
|
|
14
|
+
*
|
|
15
|
+
* ── PHASE 4 RETIREMENT (config-single-source migration #4304) ────────────────
|
|
16
|
+
* This entire file — both the MIRROR_PAIRS byte-identity suite and the
|
|
17
|
+
* `settings.json permissions parity` suite — is a TWO-COPY drift gate. It exists
|
|
18
|
+
* only because `.claude/` is still COMMITTED alongside `agent-config/`. Phase 4
|
|
19
|
+
* gitignores `.claude/`, deleting the second committed copy; at that point there
|
|
20
|
+
* is nothing to compare and these assertions become vacuous (every pair SKIPs on
|
|
21
|
+
* the `existsSync(claudeAbs)` guard once `.claude/` is untracked, and the parity
|
|
22
|
+
* suite short-circuits on `bothPresent`).
|
|
23
|
+
*
|
|
24
|
+
* DELETE this file in the Phase 4 PR. Its guarantee is replaced by the
|
|
25
|
+
* generation-correctness gate in `config-generation-gate.test.ts` (Phase 3),
|
|
26
|
+
* which proves the single remaining source generates correct, stable output —
|
|
27
|
+
* see that file's header for the kept-vs-added rationale. Until Phase 4 lands,
|
|
28
|
+
* KEEP these assertions: they are the live guard against a PR editing one side of
|
|
29
|
+
* the mirror while `.claude/` is still tracked.
|
|
14
30
|
*/
|
|
15
31
|
import { describe, it, expect } from 'vitest';
|
|
16
32
|
import { readFileSync, existsSync } from 'fs';
|