@dommaker/harness 0.16.8 → 0.16.9

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.
Files changed (38) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/bin/harness.js +1 -0
  3. package/dist/cli/commands/sync-docs/capabilities-syncer.d.ts +14 -1
  4. package/dist/cli/commands/sync-docs/capabilities-syncer.d.ts.map +1 -1
  5. package/dist/cli/commands/sync-docs/capabilities-syncer.js +77 -9
  6. package/dist/cli/commands/sync-docs/capabilities-syncer.js.map +1 -1
  7. package/dist/cli/commands/sync-docs/index.d.ts +2 -0
  8. package/dist/cli/commands/sync-docs/index.d.ts.map +1 -1
  9. package/dist/cli/commands/sync-docs/index.js +83 -20
  10. package/dist/cli/commands/sync-docs/index.js.map +1 -1
  11. package/dist/core/constraints/capabilities-parser.d.ts +7 -0
  12. package/dist/core/constraints/capabilities-parser.d.ts.map +1 -1
  13. package/dist/core/constraints/capabilities-parser.js +17 -0
  14. package/dist/core/constraints/capabilities-parser.js.map +1 -1
  15. package/dist/core/constraints/checkers/capability-sync.d.ts +3 -0
  16. package/dist/core/constraints/checkers/capability-sync.d.ts.map +1 -1
  17. package/dist/core/constraints/checkers/capability-sync.js +30 -1
  18. package/dist/core/constraints/checkers/capability-sync.js.map +1 -1
  19. package/dist/core/constraints/definitions/guidelines.d.ts.map +1 -1
  20. package/dist/core/constraints/definitions/guidelines.js +4 -2
  21. package/dist/core/constraints/definitions/guidelines.js.map +1 -1
  22. package/dist/core/project-config-loader.d.ts +11 -1
  23. package/dist/core/project-config-loader.d.ts.map +1 -1
  24. package/dist/core/project-config-loader.js +20 -0
  25. package/dist/core/project-config-loader.js.map +1 -1
  26. package/dist/types/project-config.d.ts +14 -0
  27. package/dist/types/project-config.d.ts.map +1 -1
  28. package/package.json +1 -1
  29. package/src/__tests__/checker-extra.test.ts +130 -0
  30. package/src/__tests__/project-config-loader.test.ts +40 -1
  31. package/src/cli/commands/__tests__/sync-docs.test.ts +163 -0
  32. package/src/cli/commands/sync-docs/capabilities-syncer.ts +85 -8
  33. package/src/cli/commands/sync-docs/index.ts +87 -24
  34. package/src/core/constraints/capabilities-parser.ts +15 -0
  35. package/src/core/constraints/checkers/capability-sync.ts +30 -2
  36. package/src/core/constraints/definitions/guidelines.ts +4 -2
  37. package/src/core/project-config-loader.ts +24 -0
  38. package/src/types/project-config.ts +16 -0
@@ -190,7 +190,7 @@ exports.GUIDELINES = {
190
190
  capability_sync: {
191
191
  id: 'capability_sync',
192
192
  rule: 'CODE CHANGES MUST UPDATE CAPABILITIES.MD',
193
- message: '核心模块变更必须同步功能清单',
193
+ message: '核心模块变更必须同步功能清单(支持模块级目录条目登记)',
194
194
  level: 'guideline',
195
195
  trigger: ['module_creation', 'module_modification', 'module_deletion', 'module_extension'],
196
196
  enforcement: 'update-capabilities',
@@ -205,7 +205,9 @@ exports.GUIDELINES = {
205
205
  [不强制更新]
206
206
  - 内部重构不影响对外接口
207
207
  - bug fix 不改变功能
208
- - 性能优化不改变接口`,
208
+ - 性能优化不改变接口
209
+
210
+ 支持模块级目录条目登记:governance.capabilities.mode=module 时按目录覆盖判定(如 src/core/ 一条目录条目覆盖该目录下所有源文件)。`,
209
211
  exceptions: ['internal_refactor', 'bug_fix_only', 'performance_optimization'],
210
212
  },
211
213
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"guidelines.js","sourceRoot":"","sources":["../../../../src/core/constraints/definitions/guidelines.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guidelines.js","sourceRoot":"","sources":["../../../../src/core/constraints/definitions/guidelines.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,23 @@
4
4
  * 加载 .harness/config.yml 和 .harness/custom-constraints.yml
5
5
  * 合并内置约束和项目自定义约束
6
6
  */
7
- import type { ProjectConfig, CustomConstraintDefinition, MergedConstraintsConfig } from '../types/project-config';
7
+ import type { ProjectConfig, CustomConstraintDefinition, MergedConstraintsConfig, CapabilitiesConfig } from '../types/project-config';
8
8
  /**
9
9
  * 读取并解析 .harness/config.yml(进程级 memoize)
10
10
  *
11
11
  * 文件不存在时返回 undefined;解析失败向上抛出(由各调用方自行兜底)。
12
12
  */
13
13
  export declare function loadRawProjectConfig(projectPath: string): Record<string, unknown> | undefined;
14
+ /**
15
+ * CAPABILITIES.md 登记模式(governance.capabilities.mode)
16
+ */
17
+ export type CapabilitiesMode = NonNullable<CapabilitiesConfig['mode']>;
18
+ /**
19
+ * 读取 governance.capabilities.mode(缺省 'file',向后兼容)
20
+ *
21
+ * 配置缺失/解析失败/取值非法时一律回落 'file'。
22
+ */
23
+ export declare function getCapabilitiesMode(projectPath: string): CapabilitiesMode;
14
24
  /**
15
25
  * 项目配置加载器
16
26
  */
@@ -1 +1 @@
1
- {"version":3,"file":"project-config-loader.d.ts","sourceRoot":"","sources":["../../src/core/project-config-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,aAAa,EACb,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AAmBjC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CA8B7F;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,iBAAiB,CAA6C;gBAE1D,WAAW,CAAC,EAAE,MAAM;IAMhC;;OAEG;IACH,IAAI,IAAI,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,gBAAgB,IAAI,uBAAuB;IA2E3C;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,SAAS,IAAI,aAAa;IAI1B;;OAEG;IACH,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAIlE;;OAEG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAclD;;OAEG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU;IAU7E;;OAEG;IACH,eAAe,IAAI,OAAO;CAM3B"}
1
+ {"version":3,"file":"project-config-loader.d.ts","sourceRoot":"","sources":["../../src/core/project-config-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,aAAa,EACb,0BAA0B,EAC1B,uBAAuB,EACvB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAmBjC;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CA8B7F;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAWzE;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,iBAAiB,CAA6C;gBAE1D,WAAW,CAAC,EAAE,MAAM;IAMhC;;OAEG;IACH,IAAI,IAAI,aAAa;IAarB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAyB7B;;OAEG;IACH,gBAAgB,IAAI,uBAAuB;IA2E3C;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAO7B;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,SAAS,IAAI,aAAa;IAI1B;;OAEG;IACH,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAIlE;;OAEG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO;IAclD;;OAEG;IACH,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU;IAU7E;;OAEG;IACH,eAAe,IAAI,OAAO;CAM3B"}
@@ -41,6 +41,7 @@ var __importStar = (this && this.__importStar) || (function () {
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.ProjectConfigLoader = void 0;
43
43
  exports.loadRawProjectConfig = loadRawProjectConfig;
44
+ exports.getCapabilitiesMode = getCapabilitiesMode;
44
45
  const fs = __importStar(require("fs"));
45
46
  const path = __importStar(require("path"));
46
47
  const yaml = __importStar(require("js-yaml"));
@@ -93,6 +94,25 @@ function loadRawProjectConfig(projectPath) {
93
94
  }
94
95
  return raw;
95
96
  }
97
+ /**
98
+ * 读取 governance.capabilities.mode(缺省 'file',向后兼容)
99
+ *
100
+ * 配置缺失/解析失败/取值非法时一律回落 'file'。
101
+ */
102
+ function getCapabilitiesMode(projectPath) {
103
+ try {
104
+ const raw = loadRawProjectConfig(projectPath);
105
+ const governance = raw?.governance;
106
+ const capabilities = governance?.capabilities;
107
+ const mode = capabilities?.mode;
108
+ if (mode === 'file' || mode === 'module' || mode === 'listing')
109
+ return mode;
110
+ }
111
+ catch {
112
+ // 配置缺失或解析失败,按默认 file 处理
113
+ }
114
+ return 'file';
115
+ }
96
116
  /**
97
117
  * 项目配置加载器
98
118
  */
@@ -1 +1 @@
1
- {"version":3,"file":"project-config-loader.js","sourceRoot":"","sources":["../../src/core/project-config-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-config-loader.js","sourceRoot":"","sources":["../../src/core/project-config-loader.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,18 @@ export interface ContextFilesConfig {
47
47
  /** 必须包含 CONTEXT.md 的目录列表 */
48
48
  required_dirs?: string[];
49
49
  }
50
+ /**
51
+ * CAPABILITIES.md 登记模式配置
52
+ */
53
+ export interface CapabilitiesConfig {
54
+ /**
55
+ * 登记模式:
56
+ * - file:逐文件登记(默认,历史行为)
57
+ * - module:模块级目录条目登记,按目录前缀覆盖判定
58
+ * - listing:能力清单格式(计数行)的显式声明
59
+ */
60
+ mode?: 'file' | 'module' | 'listing';
61
+ }
50
62
  /**
51
63
  * CHANGELOG 配置
52
64
  */
@@ -152,6 +164,8 @@ export interface GovernanceConfig {
152
164
  docs?: DocsSyncConfig;
153
165
  /** CONTEXT.md 配置 */
154
166
  context_files?: ContextFilesConfig;
167
+ /** CAPABILITIES.md 登记模式配置 */
168
+ capabilities?: CapabilitiesConfig;
155
169
  /** CHANGELOG 配置 */
156
170
  changelog?: ChangelogConfig;
157
171
  /** 文档新鲜度检查配置 */
@@ -1 +1 @@
1
- {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/types/project-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/types/project-config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dommaker/harness",
3
- "version": "0.16.8",
3
+ "version": "0.16.9",
4
4
  "description": "通用工程约束框架 - 铁律系统、检查点验证、测试门控、拦截器",
5
5
  "keywords": [
6
6
  "harness",
@@ -364,6 +364,136 @@ describe('ConstraintChecker - 补充覆盖', () => {
364
364
  });
365
365
  });
366
366
 
367
+ describe('checkCapabilitySync module 模式(governance.capabilities.mode)', () => {
368
+ /** 建一个带 .harness/config.yml + CAPABILITIES.md + 源文件的临时项目 */
369
+ const setupCapProject = (
370
+ name: string,
371
+ mode: 'file' | 'module' | undefined,
372
+ capContent: string,
373
+ files: string[]
374
+ ): string => {
375
+ const dir = path.join(tempDir, name);
376
+ fs.mkdirSync(path.join(dir, '.harness'), { recursive: true });
377
+ const yaml = require('js-yaml');
378
+ const config = mode ? { governance: { capabilities: { mode } } } : {};
379
+ fs.writeFileSync(path.join(dir, '.harness', 'config.yml'), yaml.dump(config));
380
+ fs.writeFileSync(path.join(dir, 'CAPABILITIES.md'), capContent);
381
+ for (const f of files) {
382
+ const fp = path.join(dir, f);
383
+ fs.mkdirSync(path.dirname(fp), { recursive: true });
384
+ fs.writeFileSync(fp, 'export const x = 1;');
385
+ }
386
+ return dir;
387
+ };
388
+
389
+ const runCapCheck = (projectPath: string) =>
390
+ checker.check(
391
+ {
392
+ id: 'capability_sync',
393
+ level: 'guideline',
394
+ rule: 'CAPABILITY SYNC',
395
+ message: 'test',
396
+ trigger: 'commit',
397
+ enforcement: 'test',
398
+ },
399
+ { operation: 'commit', projectPath }
400
+ );
401
+
402
+ beforeAll(() => {
403
+ // 清理 staged 状态,隔离 step 1(git diff 增量)对本组用例的干扰
404
+ try {
405
+ execSync('git reset HEAD', { cwd: tempDir, stdio: 'pipe' });
406
+ } catch {
407
+ // ignore
408
+ }
409
+ });
410
+
411
+ it('module 模式:目录条目覆盖源文件应该通过', async () => {
412
+ const dir = setupCapProject(
413
+ 'capmod-covered',
414
+ 'module',
415
+ '# Capabilities\n\n| 模块 | 文件 | 说明 |\n|------|------|------|\n| 核心 | src/core/ | 核心模块 |',
416
+ ['src/core/foo.ts', 'src/core/bar.ts']
417
+ );
418
+
419
+ const result = await runCapCheck(dir);
420
+ expect(result.satisfied).toBe(true);
421
+
422
+ fs.rmSync(dir, { recursive: true, force: true });
423
+ });
424
+
425
+ it('module 模式:文件条目精确匹配也算覆盖', async () => {
426
+ const dir = setupCapProject(
427
+ 'capmod-file-entry',
428
+ 'module',
429
+ '# Capabilities\n\n| 模块 | 文件 | 说明 |\n|------|------|------|\n| foo | src/core/foo.ts | foo |',
430
+ ['src/core/foo.ts']
431
+ );
432
+
433
+ const result = await runCapCheck(dir);
434
+ expect(result.satisfied).toBe(true);
435
+
436
+ fs.rmSync(dir, { recursive: true, force: true });
437
+ });
438
+
439
+ it('module 模式:新目录未登记应该失败', async () => {
440
+ const dir = setupCapProject(
441
+ 'capmod-uncovered',
442
+ 'module',
443
+ '# Capabilities\n\n| 模块 | 文件 | 说明 |\n|------|------|------|\n| 核心 | src/core/ | 核心模块 |',
444
+ ['src/core/foo.ts', 'src/newdir/bar.ts']
445
+ );
446
+
447
+ const result = await runCapCheck(dir);
448
+ expect(result.satisfied).toBe(false);
449
+
450
+ fs.rmSync(dir, { recursive: true, force: true });
451
+ });
452
+
453
+ it('file 模式原行为不变:目录条目不参与覆盖判定', async () => {
454
+ // file 模式下 step2 要求逐文件精确匹配,src/core/ 目录条目不能 rescue bar.ts
455
+ const dir = setupCapProject(
456
+ 'capfile-dir-no-rescue',
457
+ 'file',
458
+ '# Capabilities\n\n| 模块 | 文件 | 说明 |\n|------|------|------|\n| foo | src/core/foo.ts | foo |\n| 目录 | src/core/ | 目录条目 |',
459
+ ['src/core/foo.ts', 'src/core/bar.ts']
460
+ );
461
+
462
+ const result = await runCapCheck(dir);
463
+ expect(result.satisfied).toBe(false);
464
+
465
+ fs.rmSync(dir, { recursive: true, force: true });
466
+ });
467
+
468
+ it('step2 全量扫描(file 模式):全部源文件已登记应该通过', async () => {
469
+ const dir = setupCapProject(
470
+ 'capfile-step2-ok',
471
+ undefined,
472
+ '# Capabilities\n\n| 模块 | 文件 | 说明 |\n|------|------|------|\n| foo | src/foo.ts | foo |',
473
+ ['src/foo.ts']
474
+ );
475
+
476
+ const result = await runCapCheck(dir);
477
+ expect(result.satisfied).toBe(true);
478
+
479
+ fs.rmSync(dir, { recursive: true, force: true });
480
+ });
481
+
482
+ it('step2 全量扫描(file 模式):有未登记源文件应该失败', async () => {
483
+ const dir = setupCapProject(
484
+ 'capfile-step2-missing',
485
+ undefined,
486
+ '# Capabilities\n\n| 模块 | 文件 | 说明 |\n|------|------|------|\n| foo | src/foo.ts | foo |',
487
+ ['src/foo.ts', 'src/unlisted.ts']
488
+ );
489
+
490
+ const result = await runCapCheck(dir);
491
+ expect(result.satisfied).toBe(false);
492
+
493
+ fs.rmSync(dir, { recursive: true, force: true });
494
+ });
495
+ });
496
+
367
497
  describe('findApplicableConstraints', () => {
368
498
  it('应该过滤出匹配 trigger 的约束', () => {
369
499
  const context: ConstraintContext = {
@@ -3,7 +3,7 @@
3
3
  */
4
4
 
5
5
  import { describe, it, expect, beforeAll, afterAll } from '@jest/globals';
6
- import { ProjectConfigLoader } from '../core/project-config-loader';
6
+ import { ProjectConfigLoader, getCapabilitiesMode } from '../core/project-config-loader';
7
7
  import * as fs from 'fs';
8
8
  import * as path from 'path';
9
9
 
@@ -124,4 +124,43 @@ custom_rules:
124
124
  expect(merged).toBeDefined();
125
125
  });
126
126
  });
127
+
128
+ describe('getCapabilitiesMode', () => {
129
+ /** 建一个带独立 .harness/config.yml 的临时项目目录(避免进程级缓存串扰) */
130
+ const setupConfigDir = (name: string, configYaml: string): string => {
131
+ const dir = path.join(tempDir, name);
132
+ fs.mkdirSync(path.join(dir, '.harness'), { recursive: true });
133
+ fs.writeFileSync(path.join(dir, '.harness', 'config.yml'), configYaml);
134
+ return dir;
135
+ };
136
+
137
+ it('未配置时缺省返回 file', () => {
138
+ const dir = setupConfigDir('caps-default', `preset: standard`);
139
+ expect(getCapabilitiesMode(dir)).toBe('file');
140
+ });
141
+
142
+ it('mode: module 应该返回 module', () => {
143
+ const dir = setupConfigDir(
144
+ 'caps-module',
145
+ `governance:\n capabilities:\n mode: module`
146
+ );
147
+ expect(getCapabilitiesMode(dir)).toBe('module');
148
+ });
149
+
150
+ it('mode: listing 应该返回 listing', () => {
151
+ const dir = setupConfigDir(
152
+ 'caps-listing',
153
+ `governance:\n capabilities:\n mode: listing`
154
+ );
155
+ expect(getCapabilitiesMode(dir)).toBe('listing');
156
+ });
157
+
158
+ it('非法取值应该回落 file', () => {
159
+ const dir = setupConfigDir(
160
+ 'caps-invalid',
161
+ `governance:\n capabilities:\n mode: bogus`
162
+ );
163
+ expect(getCapabilitiesMode(dir)).toBe('file');
164
+ });
165
+ });
127
166
  });
@@ -436,4 +436,167 @@ describe('sync-docs command', () => {
436
436
  fs.rmSync(testDir, { recursive: true, force: true });
437
437
  });
438
438
  });
439
+
440
+ describe('module 模式(governance.capabilities.mode=module)', () => {
441
+ /** 写入 module 模式配置 */
442
+ const writeModuleConfig = (testDir: string) => {
443
+ const yaml = require('js-yaml');
444
+ fs.mkdirSync(path.join(testDir, '.harness'), { recursive: true });
445
+ fs.writeFileSync(
446
+ path.join(testDir, '.harness', 'config.yml'),
447
+ yaml.dump({ governance: { capabilities: { mode: 'module' } } })
448
+ );
449
+ };
450
+
451
+ it('写入模式不自动加文件行', async () => {
452
+ const testDir = path.join(tempDir, 'module-no-autorow');
453
+ writeModuleConfig(testDir);
454
+ fs.mkdirSync(path.join(testDir, 'src', 'core'), { recursive: true });
455
+ fs.mkdirSync(path.join(testDir, 'src', 'newdir'), { recursive: true });
456
+ fs.writeFileSync(path.join(testDir, 'src', 'core', 'a.ts'), 'export const a = 1;');
457
+ fs.writeFileSync(path.join(testDir, 'src', 'newdir', 'b.ts'), 'export const b = 1;');
458
+
459
+ fs.writeFileSync(
460
+ path.join(testDir, 'CAPABILITIES.md'),
461
+ '# Capabilities\n\n| 模块 | 文件 | 说明 |\n|------|------|------|\n| 核心 | src/core/ | 核心模块 |'
462
+ );
463
+
464
+ const result = await syncDocs({ projectPath: testDir });
465
+ // 有未覆盖目录,仍报不同步
466
+ expect(result).toBe(false);
467
+ // 但不自动给 b.ts 加表格行
468
+ const content = fs.readFileSync(path.join(testDir, 'CAPABILITIES.md'), 'utf-8');
469
+ expect(content).not.toContain('b.ts');
470
+ expect(content).toContain('src/core/');
471
+
472
+ fs.rmSync(testDir, { recursive: true, force: true });
473
+ });
474
+
475
+ it('--check 模式 added 聚合为未覆盖目录', async () => {
476
+ const testDir = path.join(tempDir, 'module-check-dirs');
477
+ writeModuleConfig(testDir);
478
+ fs.mkdirSync(path.join(testDir, 'src', 'core'), { recursive: true });
479
+ fs.mkdirSync(path.join(testDir, 'src', 'newdir'), { recursive: true });
480
+ fs.writeFileSync(path.join(testDir, 'src', 'core', 'a.ts'), 'export const a = 1;');
481
+ fs.writeFileSync(path.join(testDir, 'src', 'newdir', 'b.ts'), 'export const b = 1;');
482
+
483
+ fs.writeFileSync(
484
+ path.join(testDir, 'CAPABILITIES.md'),
485
+ '# Capabilities\n\n| 模块 | 文件 | 说明 |\n|------|------|------|\n| 核心 | src/core/ | 核心模块 |'
486
+ );
487
+
488
+ const result = await syncDocs({ projectPath: testDir, check: true });
489
+ expect(result).toBe(false);
490
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('未登记以下模块(目录)'));
491
+ expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('src/newdir/'));
492
+
493
+ fs.rmSync(testDir, { recursive: true, force: true });
494
+ });
495
+
496
+ it('--json 模式 added 输出聚合目录', async () => {
497
+ const testDir = path.join(tempDir, 'module-json-dirs');
498
+ writeModuleConfig(testDir);
499
+ fs.mkdirSync(path.join(testDir, 'src', 'core'), { recursive: true });
500
+ fs.mkdirSync(path.join(testDir, 'src', 'newdir'), { recursive: true });
501
+ fs.writeFileSync(path.join(testDir, 'src', 'core', 'a.ts'), 'export const a = 1;');
502
+ fs.writeFileSync(path.join(testDir, 'src', 'newdir', 'b.ts'), 'export const b = 1;');
503
+
504
+ fs.writeFileSync(
505
+ path.join(testDir, 'CAPABILITIES.md'),
506
+ '# Capabilities\n\n| 模块 | 文件 | 说明 |\n|------|------|------|\n| 核心 | src/core/ | 核心模块 |'
507
+ );
508
+
509
+ const result = await syncDocs({ projectPath: testDir, check: true, json: true });
510
+ expect(result).toBe(false);
511
+
512
+ const jsonCall = consoleSpy.mock.calls.find(
513
+ (call: unknown[]) => typeof call[0] === 'string' && call[0].startsWith('{')
514
+ );
515
+ expect(jsonCall).toBeDefined();
516
+ const parsed = JSON.parse(jsonCall![0]);
517
+ expect(parsed.added).toEqual([{ dir: 'src/newdir/' }]);
518
+ expect(parsed.resolution.some((r: any) => r.action === 'register-capability-dirs')).toBe(true);
519
+
520
+ fs.rmSync(testDir, { recursive: true, force: true });
521
+ });
522
+
523
+ it('幽灵行仍剔除', async () => {
524
+ const testDir = path.join(tempDir, 'module-ghost');
525
+ writeModuleConfig(testDir);
526
+ fs.mkdirSync(path.join(testDir, 'src', 'a'), { recursive: true });
527
+ fs.writeFileSync(path.join(testDir, 'src', 'a', 'kept.ts'), 'export const kept = 1;');
528
+
529
+ fs.writeFileSync(
530
+ path.join(testDir, 'CAPABILITIES.md'),
531
+ [
532
+ '# CAPABILITIES.md', '',
533
+ '> 最后更新: 2026-01-01', '',
534
+ '| 模块 | 文件 | 说明 |', '|------|------|------|',
535
+ '| kept | src/a/kept.ts | 真实文件 |',
536
+ '| ghost | src/a/ghost.ts | 幽灵条目 |',
537
+ '',
538
+ ].join('\n')
539
+ );
540
+
541
+ await syncDocs({ projectPath: testDir });
542
+ const content = fs.readFileSync(path.join(testDir, 'CAPABILITIES.md'), 'utf-8');
543
+ expect(content).toContain('src/a/kept.ts');
544
+ expect(content).not.toContain('ghost.ts');
545
+
546
+ fs.rmSync(testDir, { recursive: true, force: true });
547
+ });
548
+ });
549
+
550
+ describe('--compact 迁移', () => {
551
+ it('同目录 ≥2 个文件条目折叠为目录条目,且幂等', async () => {
552
+ const testDir = path.join(tempDir, 'compact-basic');
553
+ fs.mkdirSync(testDir, { recursive: true });
554
+
555
+ fs.writeFileSync(
556
+ path.join(testDir, 'CAPABILITIES.md'),
557
+ [
558
+ '# CAPABILITIES.md', '',
559
+ '> 最后更新: 2026-01-01', '',
560
+ '<!-- PRESERVE:说明 -->',
561
+ '手工说明',
562
+ '<!-- /PRESERVE:说明 -->', '',
563
+ '| 模块 | 文件 | 说明 |', '|------|------|------|',
564
+ '| foo | src/core/foo.ts | Foo 模块 |',
565
+ '| bar | src/core/bar.ts | Bar 模块 |',
566
+ '| solo | src/utils/solo.ts | 单独文件 |',
567
+ '',
568
+ ].join('\n')
569
+ );
570
+
571
+ const result = await syncDocs({ projectPath: testDir, compact: true });
572
+ expect(result).toBe(true);
573
+
574
+ const content = fs.readFileSync(path.join(testDir, 'CAPABILITIES.md'), 'utf-8');
575
+ // 折叠为目录条目(说明取组内第一行)
576
+ expect(content).toContain('| core | src/core/ | Foo 模块 |');
577
+ expect(content).not.toContain('src/core/bar.ts');
578
+ // 单独成组的文件行保留
579
+ expect(content).toContain('src/utils/solo.ts');
580
+ // 非表格内容原样保留
581
+ expect(content).toContain('<!-- PRESERVE:说明 -->');
582
+ expect(content).toContain('手工说明');
583
+
584
+ // 幂等:再跑一遍内容不变
585
+ await syncDocs({ projectPath: testDir, compact: true });
586
+ const content2 = fs.readFileSync(path.join(testDir, 'CAPABILITIES.md'), 'utf-8');
587
+ expect(content2).toBe(content);
588
+
589
+ fs.rmSync(testDir, { recursive: true, force: true });
590
+ });
591
+
592
+ it('CAPABILITIES.md 不存在时返回 false', async () => {
593
+ const testDir = path.join(tempDir, 'compact-missing');
594
+ fs.mkdirSync(testDir, { recursive: true });
595
+
596
+ const result = await syncDocs({ projectPath: testDir, compact: true });
597
+ expect(result).toBe(false);
598
+
599
+ fs.rmSync(testDir, { recursive: true, force: true });
600
+ });
601
+ });
439
602
  });