@dommaker/harness 0.16.2 → 0.16.4
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/CHANGELOG.md +31 -0
- package/bin/harness.js +1 -1
- package/dist/cli/commands/sync-docs.d.ts +1 -1
- package/dist/cli/commands/sync-docs.d.ts.map +1 -1
- package/dist/cli/commands/sync-docs.js +69 -7
- package/dist/cli/commands/sync-docs.js.map +1 -1
- package/package.json +1 -1
- package/src/cli/commands/__tests__/sync-docs-agents.test.ts +314 -0
- package/src/cli/commands/__tests__/sync-docs.test.ts +27 -0
- package/src/cli/commands/sync-docs.ts +85 -8
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,37 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
6
6
|
|
|
7
|
+
## [0.16.4] - 2026-07-24
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- **sync-docs --agents PRESERVE 标记段**:AGENTS.md 中 `<!-- PRESERVE:名称 -->` 与 `<!-- /PRESERVE:名称 -->` 之间的内容由使用者保留——重新生成时原样穿过(附于生成内容之后,保持相对顺序),漂移比对基于"生成部分 + 保留块"的组合结果,块内手改不报漂移,`--check` 对组合文件可用。未闭合的标记块不予保留并告警。
|
|
11
|
+
|
|
12
|
+
## [0.16.3] - 2026-07-22
|
|
13
|
+
|
|
14
|
+
### Changes
|
|
15
|
+
- fix(sync-docs): 删除 stale 条目正则修复 — basename 匹配完整路径列
|
|
16
|
+
- test(sync-docs): 补 --agents 覆盖率低分分支(statements 78.9% → ≥79.5%)
|
|
17
|
+
- docs: CHANGELOG 补齐 0.16.1/0.16.2(修复 docs_freshness 铁律 changelog_version 检查)
|
|
18
|
+
|
|
19
|
+
## [0.16.2] - 2026-07-20
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
- **sync-docs --agents**: AGENTS.md 生成器——面向 agent 的仓库导读(结构/命令/约束/知识入口),挂在 `sync-docs` 命令下
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- CLAUDE.md 分层计数修正(13/27 → 12/28)
|
|
26
|
+
- src/cli/commands/CONTEXT.md 命令计数修正(21 → 25,补 sdd/constraints/doc-freshness-check/spec-baseline-check)
|
|
27
|
+
- CHANGELOG 补齐 0.16.1/0.16.2(修复 docs_freshness 铁律 changelog_version 检查)
|
|
28
|
+
|
|
29
|
+
## [0.16.1] - 2026-07-17
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
- knowledge 模块导出纳入发布产物
|
|
33
|
+
- CAPABILITIES 增加 sdd CLI 命令
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
- release 命令支持受保护 master 分支时改走 PR 流程
|
|
37
|
+
|
|
7
38
|
## [0.16.0] - 2026-06-10
|
|
8
39
|
|
|
9
40
|
### Changed
|
package/bin/harness.js
CHANGED
|
@@ -347,7 +347,7 @@ program
|
|
|
347
347
|
.option('-p, --project-path <path>', '项目路径')
|
|
348
348
|
.option('-c, --check', '只检查不修改(CI 模式)', false)
|
|
349
349
|
.option('--json', '输出 JSON 格式(供 LLM 消费)', false)
|
|
350
|
-
.option('--agents', '同步 AGENTS.md(agent
|
|
350
|
+
.option('--agents', '同步 AGENTS.md(agent 导读;PRESERVE 标记段重新生成时保留)', false)
|
|
351
351
|
.action(async (options) => {
|
|
352
352
|
const ok = await syncDocs(options);
|
|
353
353
|
if (!ok && options.check) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-docs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sync-docs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,MAAM,WAAW,eAAe;IAC9B,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wBAAwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"sync-docs.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sync-docs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,MAAM,WAAW,eAAe;IAC9B,WAAW;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wBAAwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAeD;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAqRzE"}
|
|
@@ -150,19 +150,28 @@ async function syncDocs(options) {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
// 4c. AGENTS.md(--agents 启用):缺失或内容漂移
|
|
153
|
+
// 漂移比对基于"生成内容 + 既有 PRESERVE 标记块"的组合结果:
|
|
154
|
+
// PRESERVE 块原样穿过,块内手改不报漂移;块外手改/仓库状态变化报漂移。
|
|
153
155
|
let agentsMdExpected = null;
|
|
154
156
|
let agentsMdExists = false;
|
|
155
157
|
let agentsMdStale = false;
|
|
158
|
+
let agentsMdMalformedPreserve = [];
|
|
156
159
|
if (options.agents) {
|
|
157
|
-
|
|
160
|
+
const generated = await buildAgentsMd(projectPath, srcDirs);
|
|
161
|
+
let existing = null;
|
|
158
162
|
try {
|
|
159
|
-
|
|
163
|
+
existing = await fs.readFile(path.join(projectPath, 'AGENTS.md'), 'utf-8');
|
|
160
164
|
agentsMdExists = true;
|
|
161
|
-
agentsMdStale = existing !== agentsMdExpected;
|
|
162
165
|
}
|
|
163
166
|
catch {
|
|
164
|
-
|
|
167
|
+
// 缺失视为漂移
|
|
165
168
|
}
|
|
169
|
+
const { blocks, malformed } = existing !== null
|
|
170
|
+
? extractPreserveBlocks(existing)
|
|
171
|
+
: { blocks: [], malformed: [] };
|
|
172
|
+
agentsMdMalformedPreserve = malformed;
|
|
173
|
+
agentsMdExpected = composeAgentsMd(generated, blocks);
|
|
174
|
+
agentsMdStale = existing !== agentsMdExpected;
|
|
166
175
|
}
|
|
167
176
|
const hasAgentsIssues = options.agents === true && agentsMdStale;
|
|
168
177
|
const hasTableIssues = result.added.length > 0 || result.removed.length > 0;
|
|
@@ -260,6 +269,9 @@ async function syncDocs(options) {
|
|
|
260
269
|
: `\n🤖 缺少 AGENTS.md(agent 导读):`));
|
|
261
270
|
console.log(chalk_1.default.gray(` - AGENTS.md`));
|
|
262
271
|
}
|
|
272
|
+
if (agentsMdMalformedPreserve.length > 0) {
|
|
273
|
+
console.log(chalk_1.default.yellow(`\n⚠️ AGENTS.md 中 PRESERVE 标记块未闭合(不予保留,重新生成将丢弃): ${agentsMdMalformedPreserve.join(', ')}`));
|
|
274
|
+
}
|
|
263
275
|
if (!hasIssues) {
|
|
264
276
|
console.log(chalk_1.default.green('✅ 所有文档都是最新的'));
|
|
265
277
|
return true;
|
|
@@ -531,7 +543,8 @@ async function updateCapabilitiesFile(capabilitiesPath, currentModules, existing
|
|
|
531
543
|
// 移除已删除文件的行
|
|
532
544
|
for (const removed of result.removed) {
|
|
533
545
|
const escapedFile = removed.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
534
|
-
|
|
546
|
+
// 第二列存完整路径,basename 只在末尾出现,用 [^|]* 匹配路径前缀
|
|
547
|
+
const rowRegex = new RegExp(`^\\|[^|]*\\|[^|]*\\b${escapedFile}\\s*\\|.*$`, 'gm');
|
|
535
548
|
content = content.replace(rowRegex, '');
|
|
536
549
|
}
|
|
537
550
|
// 添加新文件的行(在最后一个表格行之后)
|
|
@@ -760,7 +773,8 @@ const AGENTS_MD_COMMANDS = [
|
|
|
760
773
|
* 生成 AGENTS.md 内容(agent 导读:项目简介/目录结构/常用命令/约束治理/知识入口)
|
|
761
774
|
*
|
|
762
775
|
* 纯静态提取(零 LLM),确定性输出:同一代码库状态生成同一内容(无时间戳),
|
|
763
|
-
*
|
|
776
|
+
* 因此重跑幂等。既有文件中的 PRESERVE 标记块由 composeAgentsMd 组合回输出,
|
|
777
|
+
* --check 对组合结果做文本对比检测漂移(块内手改不报漂移)。
|
|
764
778
|
*/
|
|
765
779
|
async function buildAgentsMd(projectPath, srcDirs) {
|
|
766
780
|
const pkg = await readPackageJsonLite(projectPath);
|
|
@@ -775,7 +789,7 @@ async function buildAgentsMd(projectPath, srcDirs) {
|
|
|
775
789
|
const lines = [
|
|
776
790
|
'# AGENTS.md',
|
|
777
791
|
'',
|
|
778
|
-
'> 本文件由 `harness sync-docs --agents`
|
|
792
|
+
'> 本文件由 `harness sync-docs --agents` 自动生成,请勿手改。`<!-- PRESERVE:名称 -->` 与 `<!-- /PRESERVE:名称 -->` 之间的内容在重新生成时原样保留。内容漂移时重新运行该命令更新。',
|
|
779
793
|
'',
|
|
780
794
|
'## 项目简介',
|
|
781
795
|
'',
|
|
@@ -831,6 +845,54 @@ async function buildAgentsMd(projectPath, srcDirs) {
|
|
|
831
845
|
lines.push('');
|
|
832
846
|
return lines.join('\n');
|
|
833
847
|
}
|
|
848
|
+
// AGENTS.md PRESERVE 标记块(--agents)
|
|
849
|
+
//
|
|
850
|
+
// 使用者在 AGENTS.md 中用 `<!-- PRESERVE:名称 -->` / `<!-- /PRESERVE:名称 -->`
|
|
851
|
+
// 圈出的区段属于使用者自有内容:重新生成时原样保留(附于生成内容之后,保持相对顺序),
|
|
852
|
+
// 漂移比对对块内改动免疫。名称仅允许字母/数字/下划线/连字符,标记须独占一行。
|
|
853
|
+
/** PRESERVE 开始标记:独占一行,捕获名称 */
|
|
854
|
+
const PRESERVE_BEGIN_RE = /^<!-- PRESERVE:([A-Za-z0-9_-]+) -->\s*$/;
|
|
855
|
+
/**
|
|
856
|
+
* 从既有 AGENTS.md 提取 PRESERVE 标记块(逐行扫描,结束标记须与开始标记同名)。
|
|
857
|
+
* 块内容原样保留(含标记行);未闭合的开始标记按普通内容处理并记入 malformed。
|
|
858
|
+
*/
|
|
859
|
+
function extractPreserveBlocks(content) {
|
|
860
|
+
const blocks = [];
|
|
861
|
+
const malformed = [];
|
|
862
|
+
const lines = content.split('\n');
|
|
863
|
+
let i = 0;
|
|
864
|
+
while (i < lines.length) {
|
|
865
|
+
const m = lines[i].match(PRESERVE_BEGIN_RE);
|
|
866
|
+
if (!m) {
|
|
867
|
+
i++;
|
|
868
|
+
continue;
|
|
869
|
+
}
|
|
870
|
+
const name = m[1];
|
|
871
|
+
const endMarker = `<!-- /PRESERVE:${name} -->`;
|
|
872
|
+
let j = i + 1;
|
|
873
|
+
while (j < lines.length && lines[j].trim() !== endMarker) {
|
|
874
|
+
j++;
|
|
875
|
+
}
|
|
876
|
+
if (j >= lines.length) {
|
|
877
|
+
malformed.push(name);
|
|
878
|
+
i++; // 未闭合:跳过开始标记行,其余行按普通内容继续扫描
|
|
879
|
+
continue;
|
|
880
|
+
}
|
|
881
|
+
blocks.push(lines.slice(i, j + 1).join('\n'));
|
|
882
|
+
i = j + 1;
|
|
883
|
+
}
|
|
884
|
+
return { blocks, malformed };
|
|
885
|
+
}
|
|
886
|
+
/**
|
|
887
|
+
* 组合 AGENTS.md 最终内容:生成部分在前,PRESERVE 块按原序附在文末(空行分隔)。
|
|
888
|
+
* 无保留块时原样返回生成内容(与历史行为一致);组合结果重跑幂等。
|
|
889
|
+
*/
|
|
890
|
+
function composeAgentsMd(generated, blocks) {
|
|
891
|
+
if (blocks.length === 0)
|
|
892
|
+
return generated;
|
|
893
|
+
const head = generated.replace(/\s*$/, '');
|
|
894
|
+
return head + '\n\n' + blocks.join('\n\n') + '\n';
|
|
895
|
+
}
|
|
834
896
|
/** 读取 package.json(不存在或无法解析时返回 null) */
|
|
835
897
|
async function readPackageJsonLite(dir) {
|
|
836
898
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-docs.js","sourceRoot":"","sources":["../../../src/cli/commands/sync-docs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync-docs.js","sourceRoot":"","sources":["../../../src/cli/commands/sync-docs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -223,4 +223,318 @@ describe('sync-docs --agents', () => {
|
|
|
223
223
|
|
|
224
224
|
fs.rmSync(testDir, { recursive: true, force: true });
|
|
225
225
|
});
|
|
226
|
+
|
|
227
|
+
it('yarn 项目应该使用 yarn 前缀执行脚本', async () => {
|
|
228
|
+
const testDir = path.join(tempDir, 'gen-yarn');
|
|
229
|
+
createFixture(testDir);
|
|
230
|
+
fs.writeFileSync(path.join(testDir, 'yarn.lock'), '# yarn lockfile v1\n');
|
|
231
|
+
|
|
232
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
233
|
+
|
|
234
|
+
const content = fs.readFileSync(path.join(testDir, 'AGENTS.md'), 'utf-8');
|
|
235
|
+
expect(content).toContain('yarn dev');
|
|
236
|
+
expect(content).toContain('yarn build');
|
|
237
|
+
expect(content).toContain('yarn test');
|
|
238
|
+
expect(content).toContain('yarn start');
|
|
239
|
+
expect(content).not.toContain('npm run');
|
|
240
|
+
|
|
241
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
it('空项目应该生成兜底内容(无 package.json、无治理配置、无知识库)', async () => {
|
|
245
|
+
const testDir = path.join(tempDir, 'empty-project');
|
|
246
|
+
// 只放应被跳过的目录:依赖/构建产物/隐藏目录
|
|
247
|
+
fs.mkdirSync(path.join(testDir, 'node_modules'), { recursive: true });
|
|
248
|
+
fs.mkdirSync(path.join(testDir, 'coverage'), { recursive: true });
|
|
249
|
+
fs.mkdirSync(path.join(testDir, '.next'), { recursive: true });
|
|
250
|
+
fs.mkdirSync(path.join(testDir, '.vscode'), { recursive: true });
|
|
251
|
+
|
|
252
|
+
const result = await syncDocs({ projectPath: testDir, agents: true });
|
|
253
|
+
expect(result).toBe(false); // AGENTS.md 缺失 → 有问题,但已生成
|
|
254
|
+
|
|
255
|
+
const content = fs.readFileSync(path.join(testDir, 'AGENTS.md'), 'utf-8');
|
|
256
|
+
// 项目名回退到目录名,无 description
|
|
257
|
+
expect(content).toContain('**empty-project**');
|
|
258
|
+
expect(content).not.toContain('**empty-project** —');
|
|
259
|
+
// 兜底分支
|
|
260
|
+
expect(content).toContain('(未检测到顶层目录)');
|
|
261
|
+
expect(content).toContain('(package.json 中未检测到常用脚本)');
|
|
262
|
+
expect(content).toContain('未检测到 harness 治理配置');
|
|
263
|
+
expect(content).toContain('缺失目录可由 `harness sync-docs` 生成模板');
|
|
264
|
+
expect(content).not.toContain('项目知识库');
|
|
265
|
+
|
|
266
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
it('package.json 无 description 时回退 config.yml,required_dirs 缺失时静默跳过', async () => {
|
|
270
|
+
const testDir = path.join(tempDir, 'config-fallback');
|
|
271
|
+
fs.mkdirSync(path.join(testDir, '.harness'), { recursive: true });
|
|
272
|
+
fs.writeFileSync(path.join(testDir, 'package.json'), JSON.stringify({ name: 'cfg-app' }));
|
|
273
|
+
fs.writeFileSync(path.join(testDir, '.harness', 'config.yml'), [
|
|
274
|
+
'description: 来自配置的项目描述',
|
|
275
|
+
'governance:',
|
|
276
|
+
' context_files:',
|
|
277
|
+
' enabled: true',
|
|
278
|
+
' required_dirs:',
|
|
279
|
+
' - src',
|
|
280
|
+
'',
|
|
281
|
+
].join('\n'));
|
|
282
|
+
|
|
283
|
+
const result = await syncDocs({ projectPath: testDir, agents: true });
|
|
284
|
+
expect(result).toBe(false);
|
|
285
|
+
|
|
286
|
+
// src 目录不存在:扫描/统计静默跳过,不中断生成
|
|
287
|
+
const content = fs.readFileSync(path.join(testDir, 'AGENTS.md'), 'utf-8');
|
|
288
|
+
// description 来自 config.yml
|
|
289
|
+
expect(content).toContain('**cfg-app** — 来自配置的项目描述');
|
|
290
|
+
// 有治理配置但无 preset
|
|
291
|
+
expect(content).toContain('治理配置:`.harness/config.yml`');
|
|
292
|
+
expect(content).not.toContain('preset:');
|
|
293
|
+
// .harness 是保留的知名隐藏目录
|
|
294
|
+
expect(content).toContain('`.harness/`');
|
|
295
|
+
|
|
296
|
+
// 写入模式已补建 src/CONTEXT.md
|
|
297
|
+
expect(fs.existsSync(path.join(testDir, 'src', 'CONTEXT.md'))).toBe(true);
|
|
298
|
+
|
|
299
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
it('monorepo 应该标注 apps/packages 成员、子包 description 与占位目录', async () => {
|
|
303
|
+
const testDir = path.join(tempDir, 'monorepo');
|
|
304
|
+
fs.mkdirSync(path.join(testDir, 'src'), { recursive: true });
|
|
305
|
+
fs.writeFileSync(path.join(testDir, 'src', 'app.ts'), '/**\n * App module\n */\nexport const app = 1;');
|
|
306
|
+
fs.mkdirSync(path.join(testDir, 'apps', 'web'), { recursive: true });
|
|
307
|
+
fs.mkdirSync(path.join(testDir, 'apps', 'api'), { recursive: true });
|
|
308
|
+
fs.mkdirSync(path.join(testDir, 'apps', '.hidden'), { recursive: true });
|
|
309
|
+
fs.writeFileSync(path.join(testDir, 'apps', 'web', 'package.json'), JSON.stringify({ name: 'web' }));
|
|
310
|
+
fs.writeFileSync(path.join(testDir, 'apps', 'api', 'package.json'), JSON.stringify({ name: 'api' }));
|
|
311
|
+
fs.mkdirSync(path.join(testDir, 'packages'), { recursive: true });
|
|
312
|
+
fs.mkdirSync(path.join(testDir, 'services'), { recursive: true });
|
|
313
|
+
fs.writeFileSync(path.join(testDir, 'services', 'package.json'), JSON.stringify({ name: 'svc', description: '内部服务目录' }));
|
|
314
|
+
fs.mkdirSync(path.join(testDir, 'misc'), { recursive: true });
|
|
315
|
+
fs.writeFileSync(path.join(testDir, 'package.json'), JSON.stringify({
|
|
316
|
+
name: 'mono-app',
|
|
317
|
+
description: '单仓项目',
|
|
318
|
+
scripts: { test: 'jest' },
|
|
319
|
+
}));
|
|
320
|
+
|
|
321
|
+
const result = await syncDocs({ projectPath: testDir, agents: true });
|
|
322
|
+
expect(result).toBe(false); // CAPABILITIES.md/AGENTS.md 缺失 → 已生成
|
|
323
|
+
|
|
324
|
+
const content = fs.readFileSync(path.join(testDir, 'AGENTS.md'), 'utf-8');
|
|
325
|
+
expect(content).toContain('| `apps/` | monorepo 应用:api、web |');
|
|
326
|
+
expect(content).toContain('| `packages/` | monorepo 工作区 |');
|
|
327
|
+
expect(content).toContain('| `services/` | 内部服务目录 |');
|
|
328
|
+
expect(content).toContain('| `misc/` | — |');
|
|
329
|
+
expect(content).toContain('| `src/` | 源码目录 |');
|
|
330
|
+
|
|
331
|
+
// 无 CAPABILITIES.md 时应整体新建
|
|
332
|
+
const caps = fs.readFileSync(path.join(testDir, 'CAPABILITIES.md'), 'utf-8');
|
|
333
|
+
expect(caps).toContain('| app | src/app.ts |');
|
|
334
|
+
|
|
335
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
336
|
+
});
|
|
337
|
+
|
|
338
|
+
it('CLAUDE.md 治理块无约束分节时不显示计数', async () => {
|
|
339
|
+
const testDir = path.join(tempDir, 'governance-no-sections');
|
|
340
|
+
createFixture(testDir, { withCapabilities: true });
|
|
341
|
+
fs.writeFileSync(path.join(testDir, 'CLAUDE.md'), '# CLAUDE.md\n\n## Governance Rules\n\n(尚未配置约束)\n');
|
|
342
|
+
|
|
343
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
344
|
+
|
|
345
|
+
const content = fs.readFileSync(path.join(testDir, 'AGENTS.md'), 'utf-8');
|
|
346
|
+
expect(content).toContain('Governance Rules 块');
|
|
347
|
+
expect(content).not.toContain('Iron Laws');
|
|
348
|
+
|
|
349
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
it('--json 幂等时 agentsMd 应为 exists:true、stale:false', async () => {
|
|
353
|
+
const testDir = path.join(tempDir, 'json-idempotent');
|
|
354
|
+
createFixture(testDir, { pnpm: true, withCapabilities: true });
|
|
355
|
+
|
|
356
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
357
|
+
|
|
358
|
+
const result = await syncDocs({ projectPath: testDir, agents: true, json: true });
|
|
359
|
+
expect(result).toBe(true);
|
|
360
|
+
|
|
361
|
+
const jsonCall = consoleSpy.mock.calls.find(
|
|
362
|
+
(call: unknown[]) => typeof call[0] === 'string' && call[0].startsWith('{')
|
|
363
|
+
);
|
|
364
|
+
expect(jsonCall).toBeDefined();
|
|
365
|
+
const parsed = JSON.parse(jsonCall![0]);
|
|
366
|
+
expect(parsed.stale).toBe(false);
|
|
367
|
+
expect(parsed.agentsMd).toEqual({ file: 'AGENTS.md', exists: true, stale: false });
|
|
368
|
+
expect(parsed.resolution.some((r: { action: string }) => r.action === 'sync-agents-md')).toBe(false);
|
|
369
|
+
|
|
370
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
371
|
+
});
|
|
372
|
+
|
|
373
|
+
it('应该检测 CONTEXT.md 缺失/过时并给出 resolution(json + 人读输出)', async () => {
|
|
374
|
+
const testDir = path.join(tempDir, 'context-stale');
|
|
375
|
+
createFixture(testDir, { withCapabilities: true });
|
|
376
|
+
// 启用 context_files 并要求 lib(不存在 → 缺失)
|
|
377
|
+
fs.writeFileSync(path.join(testDir, '.harness', 'config.yml'), [
|
|
378
|
+
'preset: standard',
|
|
379
|
+
'governance:',
|
|
380
|
+
' context_files:',
|
|
381
|
+
' enabled: true',
|
|
382
|
+
' required_dirs:',
|
|
383
|
+
' - src',
|
|
384
|
+
' - lib',
|
|
385
|
+
'',
|
|
386
|
+
].join('\n'));
|
|
387
|
+
// src 子目录树:触发子目录递归扫描 + CONTEXT.md 过时检测
|
|
388
|
+
fs.mkdirSync(path.join(testDir, 'src', 'modules', 'deep'), { recursive: true });
|
|
389
|
+
fs.mkdirSync(path.join(testDir, 'src', '__tests__'), { recursive: true });
|
|
390
|
+
fs.writeFileSync(path.join(testDir, 'src', 'modules', 'util.ts'), '/**\n * Util module\n */\nexport const util = 1;');
|
|
391
|
+
fs.writeFileSync(path.join(testDir, 'src', 'modules', 'index.ts'), 'export * from \'./util\';');
|
|
392
|
+
fs.writeFileSync(path.join(testDir, 'src', 'modules', 'deep', 'deep.ts'), '/**\n * Deep module\n */\nexport const deep = 1;');
|
|
393
|
+
fs.writeFileSync(path.join(testDir, 'src', 'modules', 'CONTEXT.md'), '# modules\n');
|
|
394
|
+
// 人为把 CONTEXT.md 的 mtime 拨到过去 → 源码比文档新 → 过时
|
|
395
|
+
const past = new Date(Date.now() - 60_000);
|
|
396
|
+
fs.utimesSync(path.join(testDir, 'src', 'modules', 'CONTEXT.md'), past, past);
|
|
397
|
+
|
|
398
|
+
// json 模式:结构化输出缺失/过时
|
|
399
|
+
const jsonResult = await syncDocs({ projectPath: testDir, agents: true, check: true, json: true });
|
|
400
|
+
expect(jsonResult).toBe(false);
|
|
401
|
+
const jsonCall = consoleSpy.mock.calls.find(
|
|
402
|
+
(call: unknown[]) => typeof call[0] === 'string' && call[0].startsWith('{')
|
|
403
|
+
);
|
|
404
|
+
expect(jsonCall).toBeDefined();
|
|
405
|
+
const parsed = JSON.parse(jsonCall![0]);
|
|
406
|
+
expect(parsed.summary.contextMissing).toBe(1);
|
|
407
|
+
expect(parsed.summary.contextStale).toBe(1);
|
|
408
|
+
expect(parsed.contextMissing).toEqual([{ dir: 'lib', file: 'lib/CONTEXT.md' }]);
|
|
409
|
+
expect(parsed.contextStale).toEqual([{ dir: 'src/modules', file: 'src/modules/CONTEXT.md' }]);
|
|
410
|
+
expect(parsed.resolution.some((r: { action: string }) => r.action === 'create-context-md')).toBe(true);
|
|
411
|
+
expect(parsed.resolution.some((r: { action: string }) => r.action === 'update-context-md')).toBe(true);
|
|
412
|
+
expect(parsed.agentsMd).toEqual({ file: 'AGENTS.md', exists: false, stale: true });
|
|
413
|
+
|
|
414
|
+
// 人读模式:输出过时提示
|
|
415
|
+
consoleSpy.mockClear();
|
|
416
|
+
const humanResult = await syncDocs({ projectPath: testDir, agents: true, check: true });
|
|
417
|
+
expect(humanResult).toBe(false);
|
|
418
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('可能过时'));
|
|
419
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('缺少 CONTEXT.md'));
|
|
420
|
+
|
|
421
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
422
|
+
});
|
|
423
|
+
|
|
424
|
+
describe('PRESERVE 标记段保留', () => {
|
|
425
|
+
const MANUAL_BLOCK = [
|
|
426
|
+
'<!-- PRESERVE:manual -->',
|
|
427
|
+
'## 手写区',
|
|
428
|
+
'',
|
|
429
|
+
'使用者自有内容',
|
|
430
|
+
'<!-- /PRESERVE:manual -->',
|
|
431
|
+
].join('\n');
|
|
432
|
+
|
|
433
|
+
function appendBlock(dir: string, block: string): void {
|
|
434
|
+
fs.appendFileSync(path.join(dir, 'AGENTS.md'), block + '\n');
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
it('PRESERVE 块在重新生成时保留,组合结果幂等(--check 通过)', async () => {
|
|
438
|
+
const testDir = path.join(tempDir, 'preserve-basic');
|
|
439
|
+
createFixture(testDir, { pnpm: true, withCapabilities: true });
|
|
440
|
+
|
|
441
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
442
|
+
appendBlock(testDir, MANUAL_BLOCK);
|
|
443
|
+
|
|
444
|
+
// 追加块后构成漂移 → 写入模式重组:生成部分 + PRESERVE 块
|
|
445
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
446
|
+
const content = fs.readFileSync(path.join(testDir, 'AGENTS.md'), 'utf-8');
|
|
447
|
+
expect(content).toContain(MANUAL_BLOCK);
|
|
448
|
+
// 块位于生成内容之后
|
|
449
|
+
expect(content.indexOf('## 知识入口')).toBeLessThan(content.indexOf('<!-- PRESERVE:manual -->'));
|
|
450
|
+
|
|
451
|
+
// 重组后幂等:--check 通过
|
|
452
|
+
expect(await syncDocs({ projectPath: testDir, agents: true, check: true })).toBe(true);
|
|
453
|
+
|
|
454
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
455
|
+
});
|
|
456
|
+
|
|
457
|
+
it('多个 PRESERVE 块保持原有相对顺序', async () => {
|
|
458
|
+
const testDir = path.join(tempDir, 'preserve-order');
|
|
459
|
+
createFixture(testDir, { pnpm: true, withCapabilities: true });
|
|
460
|
+
|
|
461
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
462
|
+
appendBlock(testDir, '<!-- PRESERVE:one -->\n第一块\n<!-- /PRESERVE:one -->');
|
|
463
|
+
appendBlock(testDir, '<!-- PRESERVE:two -->\n第二块\n<!-- /PRESERVE:two -->');
|
|
464
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
465
|
+
|
|
466
|
+
const content = fs.readFileSync(path.join(testDir, 'AGENTS.md'), 'utf-8');
|
|
467
|
+
expect(content.indexOf('PRESERVE:one')).toBeLessThan(content.indexOf('PRESERVE:two'));
|
|
468
|
+
expect(content).toContain('第一块');
|
|
469
|
+
expect(content).toContain('第二块');
|
|
470
|
+
|
|
471
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
472
|
+
});
|
|
473
|
+
|
|
474
|
+
it('块内手改不报漂移,块外手改报漂移且重生成后块仍在', async () => {
|
|
475
|
+
const testDir = path.join(tempDir, 'preserve-drift');
|
|
476
|
+
createFixture(testDir, { pnpm: true, withCapabilities: true });
|
|
477
|
+
|
|
478
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
479
|
+
appendBlock(testDir, MANUAL_BLOCK);
|
|
480
|
+
await syncDocs({ projectPath: testDir, agents: true }); // 重组为规范形态
|
|
481
|
+
|
|
482
|
+
// 块内手改 → 不报漂移
|
|
483
|
+
const agentsPath = path.join(testDir, 'AGENTS.md');
|
|
484
|
+
const edited = fs.readFileSync(agentsPath, 'utf-8').replace('使用者自有内容', '改过的内容');
|
|
485
|
+
fs.writeFileSync(agentsPath, edited);
|
|
486
|
+
expect(await syncDocs({ projectPath: testDir, agents: true, check: true })).toBe(true);
|
|
487
|
+
|
|
488
|
+
// 块外手改(生成部分) → 报漂移;重生成后块仍在、块外改动被还原
|
|
489
|
+
fs.appendFileSync(agentsPath, '\n块外手动追加\n');
|
|
490
|
+
expect(await syncDocs({ projectPath: testDir, agents: true, check: true })).toBe(false);
|
|
491
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
492
|
+
const regenerated = fs.readFileSync(agentsPath, 'utf-8');
|
|
493
|
+
expect(regenerated).toContain('改过的内容');
|
|
494
|
+
expect(regenerated).not.toContain('块外手动追加');
|
|
495
|
+
|
|
496
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
497
|
+
});
|
|
498
|
+
|
|
499
|
+
it('未闭合的 PRESERVE 块不予保留并告警', async () => {
|
|
500
|
+
const testDir = path.join(tempDir, 'preserve-malformed');
|
|
501
|
+
createFixture(testDir, { pnpm: true, withCapabilities: true });
|
|
502
|
+
|
|
503
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
504
|
+
appendBlock(testDir, '<!-- PRESERVE:broken -->\n没有结束标记');
|
|
505
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
506
|
+
|
|
507
|
+
expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('未闭合'));
|
|
508
|
+
const content = fs.readFileSync(path.join(testDir, 'AGENTS.md'), 'utf-8');
|
|
509
|
+
expect(content).not.toContain('PRESERVE:broken');
|
|
510
|
+
expect(content).not.toContain('没有结束标记');
|
|
511
|
+
|
|
512
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
513
|
+
});
|
|
514
|
+
|
|
515
|
+
it('仓库状态变化时报漂移:重生成更新生成部分且保留 PRESERVE 块', async () => {
|
|
516
|
+
const testDir = path.join(tempDir, 'preserve-repo-change');
|
|
517
|
+
createFixture(testDir, { pnpm: true, withCapabilities: true });
|
|
518
|
+
|
|
519
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
520
|
+
appendBlock(testDir, MANUAL_BLOCK);
|
|
521
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
522
|
+
|
|
523
|
+
// package.json 删除一个 curated 脚本 → 生成部分变化
|
|
524
|
+
const pkgPath = path.join(testDir, 'package.json');
|
|
525
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
526
|
+
delete pkg.scripts.lint;
|
|
527
|
+
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2));
|
|
528
|
+
|
|
529
|
+
expect(await syncDocs({ projectPath: testDir, agents: true, check: true })).toBe(false);
|
|
530
|
+
await syncDocs({ projectPath: testDir, agents: true });
|
|
531
|
+
|
|
532
|
+
const content = fs.readFileSync(path.join(testDir, 'AGENTS.md'), 'utf-8');
|
|
533
|
+
expect(content).not.toContain('pnpm lint');
|
|
534
|
+
expect(content).toContain(MANUAL_BLOCK);
|
|
535
|
+
expect(await syncDocs({ projectPath: testDir, agents: true, check: true })).toBe(true);
|
|
536
|
+
|
|
537
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
538
|
+
});
|
|
539
|
+
});
|
|
226
540
|
});
|
|
@@ -331,5 +331,32 @@ describe('sync-docs command', () => {
|
|
|
331
331
|
|
|
332
332
|
fs.rmSync(testDir, { recursive: true, force: true });
|
|
333
333
|
});
|
|
334
|
+
|
|
335
|
+
it('写入模式应移除已删除文件的行', async () => {
|
|
336
|
+
const testDir = path.join(tempDir, 'remove-stale');
|
|
337
|
+
const srcDir = path.join(testDir, 'src');
|
|
338
|
+
fs.mkdirSync(srcDir, { recursive: true });
|
|
339
|
+
|
|
340
|
+
// 创建两个源文件
|
|
341
|
+
fs.writeFileSync(path.join(srcDir, 'kept.ts'), 'export const kept = 1;');
|
|
342
|
+
fs.writeFileSync(path.join(srcDir, 'removed.ts'), 'export const removed = 1;');
|
|
343
|
+
|
|
344
|
+
// 先让 syncDocs 创建初始 CAPABILITIES.md(包含两个文件)
|
|
345
|
+
await syncDocs({ projectPath: testDir });
|
|
346
|
+
let content = fs.readFileSync(path.join(testDir, 'CAPABILITIES.md'), 'utf-8');
|
|
347
|
+
expect(content).toContain('kept.ts');
|
|
348
|
+
expect(content).toContain('removed.ts');
|
|
349
|
+
|
|
350
|
+
// 删除 removed.ts
|
|
351
|
+
fs.unlinkSync(path.join(srcDir, 'removed.ts'));
|
|
352
|
+
|
|
353
|
+
// 重新运行 syncDocs(写入模式)
|
|
354
|
+
await syncDocs({ projectPath: testDir });
|
|
355
|
+
content = fs.readFileSync(path.join(testDir, 'CAPABILITIES.md'), 'utf-8');
|
|
356
|
+
expect(content).toContain('kept.ts');
|
|
357
|
+
expect(content).not.toContain('removed.ts');
|
|
358
|
+
|
|
359
|
+
fs.rmSync(testDir, { recursive: true, force: true });
|
|
360
|
+
});
|
|
334
361
|
});
|
|
335
362
|
});
|
|
@@ -25,7 +25,7 @@ export interface SyncDocsOptions {
|
|
|
25
25
|
changelog?: boolean;
|
|
26
26
|
/** 输出 JSON 格式(供 LLM 消费) */
|
|
27
27
|
json?: boolean;
|
|
28
|
-
/** 同步 AGENTS.md(agent
|
|
28
|
+
/** 同步 AGENTS.md(agent 导读);PRESERVE 标记段在重新生成时原样保留 */
|
|
29
29
|
agents?: boolean;
|
|
30
30
|
}
|
|
31
31
|
|
|
@@ -143,18 +143,27 @@ export async function syncDocs(options: SyncDocsOptions): Promise<boolean> {
|
|
|
143
143
|
}
|
|
144
144
|
|
|
145
145
|
// 4c. AGENTS.md(--agents 启用):缺失或内容漂移
|
|
146
|
+
// 漂移比对基于"生成内容 + 既有 PRESERVE 标记块"的组合结果:
|
|
147
|
+
// PRESERVE 块原样穿过,块内手改不报漂移;块外手改/仓库状态变化报漂移。
|
|
146
148
|
let agentsMdExpected: string | null = null;
|
|
147
149
|
let agentsMdExists = false;
|
|
148
150
|
let agentsMdStale = false;
|
|
151
|
+
let agentsMdMalformedPreserve: string[] = [];
|
|
149
152
|
if (options.agents) {
|
|
150
|
-
|
|
153
|
+
const generated = await buildAgentsMd(projectPath, srcDirs);
|
|
154
|
+
let existing: string | null = null;
|
|
151
155
|
try {
|
|
152
|
-
|
|
156
|
+
existing = await fs.readFile(path.join(projectPath, 'AGENTS.md'), 'utf-8');
|
|
153
157
|
agentsMdExists = true;
|
|
154
|
-
agentsMdStale = existing !== agentsMdExpected;
|
|
155
158
|
} catch {
|
|
156
|
-
|
|
159
|
+
// 缺失视为漂移
|
|
157
160
|
}
|
|
161
|
+
const { blocks, malformed } = existing !== null
|
|
162
|
+
? extractPreserveBlocks(existing)
|
|
163
|
+
: { blocks: [] as string[], malformed: [] as string[] };
|
|
164
|
+
agentsMdMalformedPreserve = malformed;
|
|
165
|
+
agentsMdExpected = composeAgentsMd(generated, blocks);
|
|
166
|
+
agentsMdStale = existing !== agentsMdExpected;
|
|
158
167
|
}
|
|
159
168
|
const hasAgentsIssues = options.agents === true && agentsMdStale;
|
|
160
169
|
|
|
@@ -271,6 +280,14 @@ export async function syncDocs(options: SyncDocsOptions): Promise<boolean> {
|
|
|
271
280
|
console.log(chalk.gray(` - AGENTS.md`));
|
|
272
281
|
}
|
|
273
282
|
|
|
283
|
+
if (agentsMdMalformedPreserve.length > 0) {
|
|
284
|
+
console.log(
|
|
285
|
+
chalk.yellow(
|
|
286
|
+
`\n⚠️ AGENTS.md 中 PRESERVE 标记块未闭合(不予保留,重新生成将丢弃): ${agentsMdMalformedPreserve.join(', ')}`
|
|
287
|
+
)
|
|
288
|
+
);
|
|
289
|
+
}
|
|
290
|
+
|
|
274
291
|
if (!hasIssues) {
|
|
275
292
|
console.log(chalk.green('✅ 所有文档都是最新的'));
|
|
276
293
|
return true;
|
|
@@ -557,7 +574,8 @@ async function updateCapabilitiesFile(
|
|
|
557
574
|
// 移除已删除文件的行
|
|
558
575
|
for (const removed of result.removed) {
|
|
559
576
|
const escapedFile = removed.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
560
|
-
|
|
577
|
+
// 第二列存完整路径,basename 只在末尾出现,用 [^|]* 匹配路径前缀
|
|
578
|
+
const rowRegex = new RegExp(`^\\|[^|]*\\|[^|]*\\b${escapedFile}\\s*\\|.*$`, 'gm');
|
|
561
579
|
content = content.replace(rowRegex, '');
|
|
562
580
|
}
|
|
563
581
|
|
|
@@ -837,7 +855,8 @@ interface GovernanceInfo {
|
|
|
837
855
|
* 生成 AGENTS.md 内容(agent 导读:项目简介/目录结构/常用命令/约束治理/知识入口)
|
|
838
856
|
*
|
|
839
857
|
* 纯静态提取(零 LLM),确定性输出:同一代码库状态生成同一内容(无时间戳),
|
|
840
|
-
*
|
|
858
|
+
* 因此重跑幂等。既有文件中的 PRESERVE 标记块由 composeAgentsMd 组合回输出,
|
|
859
|
+
* --check 对组合结果做文本对比检测漂移(块内手改不报漂移)。
|
|
841
860
|
*/
|
|
842
861
|
async function buildAgentsMd(projectPath: string, srcDirs: string[]): Promise<string> {
|
|
843
862
|
const pkg = await readPackageJsonLite(projectPath);
|
|
@@ -854,7 +873,7 @@ async function buildAgentsMd(projectPath: string, srcDirs: string[]): Promise<st
|
|
|
854
873
|
const lines: string[] = [
|
|
855
874
|
'# AGENTS.md',
|
|
856
875
|
'',
|
|
857
|
-
'> 本文件由 `harness sync-docs --agents`
|
|
876
|
+
'> 本文件由 `harness sync-docs --agents` 自动生成,请勿手改。`<!-- PRESERVE:名称 -->` 与 `<!-- /PRESERVE:名称 -->` 之间的内容在重新生成时原样保留。内容漂移时重新运行该命令更新。',
|
|
858
877
|
'',
|
|
859
878
|
'## 项目简介',
|
|
860
879
|
'',
|
|
@@ -916,6 +935,64 @@ async function buildAgentsMd(projectPath: string, srcDirs: string[]): Promise<st
|
|
|
916
935
|
return lines.join('\n');
|
|
917
936
|
}
|
|
918
937
|
|
|
938
|
+
// AGENTS.md PRESERVE 标记块(--agents)
|
|
939
|
+
//
|
|
940
|
+
// 使用者在 AGENTS.md 中用 `<!-- PRESERVE:名称 -->` / `<!-- /PRESERVE:名称 -->`
|
|
941
|
+
// 圈出的区段属于使用者自有内容:重新生成时原样保留(附于生成内容之后,保持相对顺序),
|
|
942
|
+
// 漂移比对对块内改动免疫。名称仅允许字母/数字/下划线/连字符,标记须独占一行。
|
|
943
|
+
|
|
944
|
+
/** PRESERVE 开始标记:独占一行,捕获名称 */
|
|
945
|
+
const PRESERVE_BEGIN_RE = /^<!-- PRESERVE:([A-Za-z0-9_-]+) -->\s*$/;
|
|
946
|
+
|
|
947
|
+
interface PreserveExtraction {
|
|
948
|
+
/** 完整保留块(含首尾标记行,块间不含外部空行),保持原有相对顺序 */
|
|
949
|
+
blocks: string[];
|
|
950
|
+
/** 未闭合(缺同名结束标记)的块名——不予保留,调用方应告警 */
|
|
951
|
+
malformed: string[];
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
/**
|
|
955
|
+
* 从既有 AGENTS.md 提取 PRESERVE 标记块(逐行扫描,结束标记须与开始标记同名)。
|
|
956
|
+
* 块内容原样保留(含标记行);未闭合的开始标记按普通内容处理并记入 malformed。
|
|
957
|
+
*/
|
|
958
|
+
function extractPreserveBlocks(content: string): PreserveExtraction {
|
|
959
|
+
const blocks: string[] = [];
|
|
960
|
+
const malformed: string[] = [];
|
|
961
|
+
const lines = content.split('\n');
|
|
962
|
+
let i = 0;
|
|
963
|
+
while (i < lines.length) {
|
|
964
|
+
const m = lines[i].match(PRESERVE_BEGIN_RE);
|
|
965
|
+
if (!m) {
|
|
966
|
+
i++;
|
|
967
|
+
continue;
|
|
968
|
+
}
|
|
969
|
+
const name = m[1];
|
|
970
|
+
const endMarker = `<!-- /PRESERVE:${name} -->`;
|
|
971
|
+
let j = i + 1;
|
|
972
|
+
while (j < lines.length && lines[j].trim() !== endMarker) {
|
|
973
|
+
j++;
|
|
974
|
+
}
|
|
975
|
+
if (j >= lines.length) {
|
|
976
|
+
malformed.push(name);
|
|
977
|
+
i++; // 未闭合:跳过开始标记行,其余行按普通内容继续扫描
|
|
978
|
+
continue;
|
|
979
|
+
}
|
|
980
|
+
blocks.push(lines.slice(i, j + 1).join('\n'));
|
|
981
|
+
i = j + 1;
|
|
982
|
+
}
|
|
983
|
+
return { blocks, malformed };
|
|
984
|
+
}
|
|
985
|
+
|
|
986
|
+
/**
|
|
987
|
+
* 组合 AGENTS.md 最终内容:生成部分在前,PRESERVE 块按原序附在文末(空行分隔)。
|
|
988
|
+
* 无保留块时原样返回生成内容(与历史行为一致);组合结果重跑幂等。
|
|
989
|
+
*/
|
|
990
|
+
function composeAgentsMd(generated: string, blocks: string[]): string {
|
|
991
|
+
if (blocks.length === 0) return generated;
|
|
992
|
+
const head = generated.replace(/\s*$/, '');
|
|
993
|
+
return head + '\n\n' + blocks.join('\n\n') + '\n';
|
|
994
|
+
}
|
|
995
|
+
|
|
919
996
|
/** 读取 package.json(不存在或无法解析时返回 null) */
|
|
920
997
|
async function readPackageJsonLite(dir: string): Promise<PackageJsonLite | null> {
|
|
921
998
|
try {
|