@dommaker/harness 1.9.0 → 1.10.0
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 +6 -0
- package/README.md +9 -12
- package/dist/cli/commands/check.d.ts +3 -3
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +41 -78
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/constraints-report.d.ts +2 -10
- package/dist/cli/commands/constraints-report.d.ts.map +1 -1
- package/dist/cli/commands/constraints-report.js +4 -57
- package/dist/cli/commands/constraints-report.js.map +1 -1
- package/dist/cli/commands/constraints-retire.d.ts +9 -23
- package/dist/cli/commands/constraints-retire.d.ts.map +1 -1
- package/dist/cli/commands/constraints-retire.js +39 -121
- package/dist/cli/commands/constraints-retire.js.map +1 -1
- package/dist/cli/commands/constraints.d.ts +3 -8
- package/dist/cli/commands/constraints.d.ts.map +1 -1
- package/dist/cli/commands/constraints.js +8 -23
- package/dist/cli/commands/constraints.js.map +1 -1
- package/dist/cli/commands/definitions.js +2 -2
- package/dist/cli/commands/init.d.ts +0 -32
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +7 -149
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +14 -17
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/scaffold-templates.d.ts +0 -2
- package/dist/cli/commands/scaffold-templates.d.ts.map +1 -1
- package/dist/cli/commands/scaffold-templates.js +2 -37
- package/dist/cli/commands/scaffold-templates.js.map +1 -1
- package/dist/cli/commands/scaffold.d.ts +0 -2
- package/dist/cli/commands/scaffold.d.ts.map +1 -1
- package/dist/cli/commands/scaffold.js +0 -10
- package/dist/cli/commands/scaffold.js.map +1 -1
- package/dist/cli/commands/status.js +10 -10
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/sync-docs/agents-syncer.d.ts +0 -2
- package/dist/cli/commands/sync-docs/agents-syncer.d.ts.map +1 -1
- package/dist/cli/commands/sync-docs/agents-syncer.js +4 -23
- package/dist/cli/commands/sync-docs/agents-syncer.js.map +1 -1
- package/dist/core/constraints/capabilities-parser.d.ts.map +1 -1
- package/dist/core/constraints/capabilities-parser.js +16 -4
- package/dist/core/constraints/capabilities-parser.js.map +1 -1
- package/dist/core/constraints/checker.d.ts +15 -24
- package/dist/core/constraints/checker.d.ts.map +1 -1
- package/dist/core/constraints/checker.js +33 -72
- package/dist/core/constraints/checker.js.map +1 -1
- package/dist/core/constraints/checkers/docs-freshness.js +1 -1
- package/dist/core/constraints/checkers/docs-freshness.js.map +1 -1
- package/dist/core/constraints/checkers/governance-presence.d.ts +2 -1
- package/dist/core/constraints/checkers/governance-presence.d.ts.map +1 -1
- package/dist/core/constraints/checkers/governance-presence.js +4 -3
- package/dist/core/constraints/checkers/governance-presence.js.map +1 -1
- package/dist/core/constraints/checkers/index.d.ts +1 -1
- package/dist/core/constraints/checkers/index.d.ts.map +1 -1
- package/dist/core/constraints/checkers/index.js +4 -8
- package/dist/core/constraints/checkers/index.js.map +1 -1
- package/dist/core/constraints/checkers/iron-flags.d.ts +3 -4
- package/dist/core/constraints/checkers/iron-flags.d.ts.map +1 -1
- package/dist/core/constraints/checkers/iron-flags.js +4 -5
- package/dist/core/constraints/checkers/iron-flags.js.map +1 -1
- package/dist/core/constraints/checkers/no-test-simplification.js +1 -1
- package/dist/core/constraints/checkers/no-test-simplification.js.map +1 -1
- package/dist/core/constraints/checkers/types.d.ts +1 -1
- package/dist/core/constraints/checkers/types.js +1 -1
- package/dist/core/constraints/definitions/guidelines.d.ts +4 -4
- package/dist/core/constraints/definitions/guidelines.d.ts.map +1 -1
- package/dist/core/constraints/definitions/guidelines.js +9 -25
- package/dist/core/constraints/definitions/guidelines.js.map +1 -1
- package/dist/core/constraints/definitions/iron-laws.d.ts +4 -4
- package/dist/core/constraints/definitions/iron-laws.d.ts.map +1 -1
- package/dist/core/constraints/definitions/iron-laws.js +10 -81
- package/dist/core/constraints/definitions/iron-laws.js.map +1 -1
- package/dist/core/constraints/definitions.d.ts +7 -9
- package/dist/core/constraints/definitions.d.ts.map +1 -1
- package/dist/core/constraints/definitions.js +13 -16
- package/dist/core/constraints/definitions.js.map +1 -1
- package/dist/core/constraints/index.d.ts +2 -5
- package/dist/core/constraints/index.d.ts.map +1 -1
- package/dist/core/constraints/index.js +3 -13
- package/dist/core/constraints/index.js.map +1 -1
- package/dist/core/constraints/injection-writer.d.ts +10 -38
- package/dist/core/constraints/injection-writer.d.ts.map +1 -1
- package/dist/core/constraints/injection-writer.js +17 -54
- package/dist/core/constraints/injection-writer.js.map +1 -1
- package/dist/core/constraints/run-env.d.ts +1 -10
- package/dist/core/constraints/run-env.d.ts.map +1 -1
- package/dist/core/constraints/run-env.js +1 -22
- package/dist/core/constraints/run-env.js.map +1 -1
- package/dist/core/constraints/usage-report.d.ts +5 -7
- package/dist/core/constraints/usage-report.d.ts.map +1 -1
- package/dist/core/constraints/usage-report.js +5 -10
- package/dist/core/constraints/usage-report.js.map +1 -1
- package/dist/core/effective-constraints.d.ts +12 -22
- package/dist/core/effective-constraints.d.ts.map +1 -1
- package/dist/core/effective-constraints.js +13 -30
- package/dist/core/effective-constraints.js.map +1 -1
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +3 -9
- package/dist/core/index.js.map +1 -1
- package/dist/core/project-config-loader.d.ts +4 -42
- package/dist/core/project-config-loader.d.ts.map +1 -1
- package/dist/core/project-config-loader.js +16 -125
- package/dist/core/project-config-loader.js.map +1 -1
- package/dist/core/validators/passes-gate.d.ts +2 -2
- package/dist/core/validators/passes-gate.js +6 -6
- package/dist/core/validators/passes-gate.js.map +1 -1
- package/dist/index.d.ts +7 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -18
- package/dist/index.js.map +1 -1
- package/dist/monitoring/trace-analyzer.d.ts.map +1 -1
- package/dist/monitoring/trace-analyzer.js +11 -12
- package/dist/monitoring/trace-analyzer.js.map +1 -1
- package/dist/monitoring/traces.d.ts +4 -4
- package/dist/monitoring/traces.d.ts.map +1 -1
- package/dist/monitoring/traces.js +8 -8
- package/dist/monitoring/traces.js.map +1 -1
- package/dist/presets/standard.d.ts +8 -10
- package/dist/presets/standard.d.ts.map +1 -1
- package/dist/presets/standard.js +10 -16
- package/dist/presets/standard.js.map +1 -1
- package/dist/types/constraint.d.ts +24 -35
- package/dist/types/constraint.d.ts.map +1 -1
- package/dist/types/constraint.js +8 -7
- package/dist/types/constraint.js.map +1 -1
- package/dist/types/passes-gate.d.ts +5 -5
- package/dist/types/passes-gate.d.ts.map +1 -1
- package/dist/types/project-config.d.ts +8 -66
- package/dist/types/project-config.d.ts.map +1 -1
- package/dist/types/project-config.js +3 -2
- package/dist/types/project-config.js.map +1 -1
- package/dist/types/trace.d.ts +8 -10
- package/dist/types/trace.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/CONTEXT.md +2 -2
- package/src/__tests__/checker-extra.test.ts +37 -61
- package/src/__tests__/checker.test.ts +10 -115
- package/src/__tests__/effective-constraints.test.ts +18 -83
- package/src/__tests__/iron-laws.test.ts +71 -90
- package/src/__tests__/passes-gate-check.test.ts +2 -2
- package/src/__tests__/project-config-loader-extra.test.ts +22 -123
- package/src/__tests__/project-config-loader.test.ts +5 -33
- package/src/__tests__/public-exports.test.ts +1 -7
- package/src/__tests__/public-type-surface.test.ts +2 -5
- package/src/__tests__/public-value-surface.test.ts +1 -7
- package/src/__tests__/skip-semantics.test.ts +21 -37
- package/src/__tests__/trace-analyzer-extra.test.ts +14 -14
- package/src/__tests__/trace-analyzer.test.ts +21 -21
- package/src/__tests__/trace-collector.test.ts +22 -22
- package/src/__tests__/traces.test.ts +27 -28
- package/src/cli/commands/CONTEXT.md +9 -9
- package/src/cli/commands/__tests__/check-read-count.test.ts +4 -15
- package/src/cli/commands/__tests__/check-skip-output.test.ts +14 -14
- package/src/cli/commands/__tests__/check.test.ts +14 -31
- package/src/cli/commands/__tests__/constraints-report.test.ts +12 -80
- package/src/cli/commands/__tests__/constraints-retire.test.ts +42 -231
- package/src/cli/commands/__tests__/init-governance-io.test.ts +12 -58
- package/src/cli/commands/__tests__/init-ondisk.test.ts +12 -20
- package/src/cli/commands/__tests__/init.test.ts +0 -11
- package/src/cli/commands/__tests__/project-path-anchoring.test.ts +2 -2
- package/src/cli/commands/__tests__/report-extra.test.ts +4 -4
- package/src/cli/commands/__tests__/report.test.ts +1 -1
- package/src/cli/commands/__tests__/scaffold.test.ts +4 -14
- package/src/cli/commands/__tests__/status-analysis-wiring.test.ts +3 -3
- package/src/cli/commands/__tests__/status-extra.test.ts +14 -14
- package/src/cli/commands/__tests__/status.test.ts +12 -12
- package/src/cli/commands/__tests__/sync-docs-agents.test.ts +1 -1
- package/src/cli/commands/check.ts +43 -82
- package/src/cli/commands/constraints-report.ts +4 -59
- package/src/cli/commands/constraints-retire.ts +49 -154
- package/src/cli/commands/constraints.ts +11 -26
- package/src/cli/commands/definitions.ts +2 -2
- package/src/cli/commands/init.ts +8 -179
- package/src/cli/commands/report.ts +19 -23
- package/src/cli/commands/scaffold-templates.ts +1 -37
- package/src/cli/commands/scaffold.ts +0 -11
- package/src/cli/commands/status.ts +10 -10
- package/src/cli/commands/sync-docs/agents-syncer.ts +4 -25
- package/src/core/CONTEXT.md +9 -9
- package/src/core/constraints/__tests__/capability-counts.test.ts +5 -5
- package/src/core/constraints/__tests__/collect-constraints.test.ts +13 -8
- package/src/core/constraints/__tests__/git-evidence.test.ts +4 -7
- package/src/core/constraints/__tests__/injection-writer.test.ts +8 -61
- package/src/core/constraints/__tests__/run-env.test.ts +5 -34
- package/src/core/constraints/__tests__/trace-injection.test.ts +1 -1
- package/src/core/constraints/capabilities-parser.ts +17 -5
- package/src/core/constraints/checker.ts +39 -88
- package/src/core/constraints/checkers/__tests__/check-outcome.test.ts +5 -8
- package/src/core/constraints/checkers/__tests__/governance-presence.test.ts +1 -53
- package/src/core/constraints/checkers/__tests__/iron-flags.test.ts +5 -25
- package/src/core/constraints/checkers/docs-freshness.ts +1 -1
- package/src/core/constraints/checkers/governance-presence.ts +4 -3
- package/src/core/constraints/checkers/index.ts +4 -10
- package/src/core/constraints/checkers/iron-flags.ts +3 -12
- package/src/core/constraints/checkers/no-test-simplification.ts +1 -1
- package/src/core/constraints/checkers/types.ts +1 -1
- package/src/core/constraints/definitions/guidelines.ts +8 -25
- package/src/core/constraints/definitions/iron-laws.ts +9 -82
- package/src/core/constraints/definitions.ts +14 -15
- package/src/core/constraints/index.ts +4 -19
- package/src/core/constraints/injection-writer.ts +16 -61
- package/src/core/constraints/run-env.ts +1 -33
- package/src/core/constraints/usage-report.ts +8 -15
- package/src/core/effective-constraints.ts +14 -45
- package/src/core/index.ts +3 -10
- package/src/core/project-config-loader.ts +20 -145
- package/src/core/validators/passes-gate.ts +6 -6
- package/src/failure/CONTEXT.md +1 -1
- package/src/hooks/__tests__/bootstrap.test.ts +3 -5
- package/src/index.ts +8 -18
- package/src/monitoring/__tests__/trace-file-anchoring.test.ts +1 -1
- package/src/monitoring/__tests__/traces.test.ts +22 -22
- package/src/monitoring/trace-analyzer.ts +12 -13
- package/src/monitoring/traces.ts +8 -8
- package/src/presets/__tests__/standard.test.ts +12 -16
- package/src/presets/standard.ts +14 -23
- package/src/types/__tests__/types.test.ts +3 -3
- package/src/types/constraint.ts +26 -40
- package/src/types/passes-gate.ts +5 -5
- package/src/types/project-config.ts +8 -77
- package/src/types/trace.ts +8 -11
- package/dist/core/constraints/agent-prompt-renderer.d.ts +0 -32
- package/dist/core/constraints/agent-prompt-renderer.d.ts.map +0 -1
- package/dist/core/constraints/agent-prompt-renderer.js +0 -55
- package/dist/core/constraints/agent-prompt-renderer.js.map +0 -1
- package/dist/core/constraints/checkers/no-bypass-checkpoint.d.ts +0 -6
- package/dist/core/constraints/checkers/no-bypass-checkpoint.d.ts.map +0 -1
- package/dist/core/constraints/checkers/no-bypass-checkpoint.js +0 -40
- package/dist/core/constraints/checkers/no-bypass-checkpoint.js.map +0 -1
- package/dist/core/constraints/definitions/prompts.d.ts +0 -12
- package/dist/core/constraints/definitions/prompts.d.ts.map +0 -1
- package/dist/core/constraints/definitions/prompts.js +0 -400
- package/dist/core/constraints/definitions/prompts.js.map +0 -1
- package/dist/core/constraints/injection-drift.d.ts +0 -61
- package/dist/core/constraints/injection-drift.d.ts.map +0 -1
- package/dist/core/constraints/injection-drift.js +0 -131
- package/dist/core/constraints/injection-drift.js.map +0 -1
- package/dist/core/constraints/injection-renderer.d.ts +0 -23
- package/dist/core/constraints/injection-renderer.d.ts.map +0 -1
- package/dist/core/constraints/injection-renderer.js +0 -44
- package/dist/core/constraints/injection-renderer.js.map +0 -1
- package/src/cli/commands/__tests__/check-drift.test.ts +0 -158
- package/src/cli/commands/__tests__/init-injection.test.ts +0 -466
- package/src/core/constraints/__tests__/agent-prompt-renderer.test.ts +0 -129
- package/src/core/constraints/__tests__/injection-drift.test.ts +0 -247
- package/src/core/constraints/agent-prompt-renderer.ts +0 -67
- package/src/core/constraints/checkers/__tests__/no-bypass-checkpoint.test.ts +0 -76
- package/src/core/constraints/checkers/no-bypass-checkpoint.ts +0 -40
- package/src/core/constraints/definitions/prompts.ts +0 -414
- package/src/core/constraints/injection-drift.ts +0 -142
- package/src/core/constraints/injection-renderer.ts +0 -44
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-syncer.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/sync-docs/agents-syncer.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6CH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"agents-syncer.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/sync-docs/agents-syncer.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6CH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAgF3F"}
|
|
@@ -129,11 +129,7 @@ async function buildAgentsMd(projectPath, srcDirs) {
|
|
|
129
129
|
lines.push(`- 治理配置:\`.harness/config.yml\`${governance.preset ? `(preset: ${governance.preset})` : ''}`);
|
|
130
130
|
}
|
|
131
131
|
if (governance.hasClaudeGovernance) {
|
|
132
|
-
|
|
133
|
-
governance.ironLaws !== undefined ? `Iron Laws ${governance.ironLaws} 条` : null,
|
|
134
|
-
governance.guidelines !== undefined ? `Guidelines ${governance.guidelines} 条` : null,
|
|
135
|
-
].filter(Boolean).join('、');
|
|
136
|
-
lines.push(`- 约束清单:\`CLAUDE.md\` Governance Rules 块${counts ? `(${counts})` : ''}`);
|
|
132
|
+
lines.push('- 约束清单:`CLAUDE.md` Governance Rules 块');
|
|
137
133
|
}
|
|
138
134
|
if (!governance.hasConfig && !governance.hasClaudeGovernance) {
|
|
139
135
|
lines.push('- 未检测到 harness 治理配置,可运行 `harness init` 初始化');
|
|
@@ -217,7 +213,7 @@ async function listWorkspaceMembers(dir) {
|
|
|
217
213
|
return [];
|
|
218
214
|
}
|
|
219
215
|
}
|
|
220
|
-
/** 收集治理信息:.harness/config.yml 与 CLAUDE.md
|
|
216
|
+
/** 收集治理信息:.harness/config.yml 与 CLAUDE.md 治理块 */
|
|
221
217
|
async function getGovernanceInfo(projectPath) {
|
|
222
218
|
const info = { hasConfig: false, hasClaudeGovernance: false };
|
|
223
219
|
try {
|
|
@@ -232,29 +228,14 @@ async function getGovernanceInfo(projectPath) {
|
|
|
232
228
|
}
|
|
233
229
|
try {
|
|
234
230
|
const claude = await fs.readFile(path.join(projectPath, 'CLAUDE.md'), 'utf-8');
|
|
235
|
-
// 契约在场判定收口 injection-writer.hasGovernanceContract(#83,与 presence
|
|
236
|
-
|
|
237
|
-
info.hasClaudeGovernance = true;
|
|
238
|
-
info.ironLaws = countConstraintBullets(claude, 'Iron Laws');
|
|
239
|
-
info.guidelines = countConstraintBullets(claude, 'Guidelines');
|
|
240
|
-
}
|
|
231
|
+
// 契约在场判定收口 injection-writer.hasGovernanceContract(#83,与 presence 同谓词)
|
|
232
|
+
info.hasClaudeGovernance = (0, injection_writer_1.hasGovernanceContract)(claude);
|
|
241
233
|
}
|
|
242
234
|
catch {
|
|
243
235
|
// CLAUDE.md 不存在
|
|
244
236
|
}
|
|
245
237
|
return info;
|
|
246
238
|
}
|
|
247
|
-
/** 统计 CLAUDE.md 指定约束分节下的条目数(`- **key**:` 行),分节不存在时返回 undefined */
|
|
248
|
-
function countConstraintBullets(content, section) {
|
|
249
|
-
const heading = new RegExp(`^###\\s+${section}[^\\n]*$`, 'm').exec(content);
|
|
250
|
-
if (!heading)
|
|
251
|
-
return undefined;
|
|
252
|
-
const rest = content.slice(heading.index + heading[0].length);
|
|
253
|
-
const end = rest.search(/^###\s|^\s*<!--\s*HARNESS_CONSTRAINTS_END/m);
|
|
254
|
-
const block = end === -1 ? rest : rest.slice(0, end);
|
|
255
|
-
const items = block.match(/^-\s+\*\*[A-Za-z0-9_]+\*\*/gm);
|
|
256
|
-
return items ? items.length : 0;
|
|
257
|
-
}
|
|
258
239
|
/** 判断 .harness/knowledge 目录是否存在(只判存在性,不统计条数——条数易变,见 buildAgentsMd 注释) */
|
|
259
240
|
async function hasKnowledgeDir(projectPath) {
|
|
260
241
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-syncer.js","sourceRoot":"","sources":["../../../../src/cli/commands/sync-docs/agents-syncer.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"agents-syncer.js","sourceRoot":"","sources":["../../../../src/cli/commands/sync-docs/agents-syncer.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DH,sCAgFC;AAxID,gDAAkC;AAClC,2BAAgC;AAChC,2CAA6B;AAC7B,+EAA2E;AAC3E,iFAAmF;AACnF,wDAA6D;AAC7D,qDAK0B;AAE1B,4CAA4C;AAC5C,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU;IAClD,mBAAmB,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ;CAC/D,CAAC,CAAC;AAEH,mBAAmB;AACnB,MAAM,mBAAmB,GAA2B;IAClD,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,UAAU;IACf,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,UAAU;IACrB,UAAU,EAAE,kBAAkB;CAC/B,CAAC;AAEF,8CAA8C;AAC9C,MAAM,kBAAkB,GAA4B;IAClD,CAAC,KAAK,EAAE,QAAQ,CAAC;IACjB,CAAC,OAAO,EAAE,IAAI,CAAC;IACf,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,UAAU,EAAE,OAAO,CAAC;IACrB,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,OAAO,EAAE,QAAQ,CAAC;CACpB,CAAC;AAQF;;;;;;GAMG;AACI,KAAK,UAAU,aAAa,CAAC,WAAmB,EAAE,OAAiB;IACxE,MAAM,GAAG,GAAG,MAAM,IAAA,oCAAmB,EAAC,WAAW,CAAC,CAAC;IACnD,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1F,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC;QAC3C,iBAAiB,CAAC,WAAW,CAAC;QAC9B,eAAe,CAAC,WAAW,CAAC;QAC5B,uBAAuB,CAAC,WAAW,CAAC;QACpC,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC;KACvC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,GAAG,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,GAAG,EAAE,WAAW,IAAI,MAAM,IAAA,qCAAoB,EAAC,WAAW,CAAC,CAAC;IAEhF,MAAM,KAAK,GAAa;QACtB,aAAa;QACb,EAAE;QACF,gIAAgI;QAChI,EAAE;QACF,SAAS;QACT,EAAE;QACF,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI;QAC5D,EAAE;QACF,SAAS;QACT,EAAE;KACH,CAAC;IAEF,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAC9B,MAAM,EAAE,GAAG,IAAA,qCAAoB,EAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,GAAG,EAAE,OAAO,IAAI,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,KAAK,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,QAAQ,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAA,oCAAmB,EAAC,EAAE,EAAE,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IAC/B,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,iCAAiC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,UAAU,CAAC,mBAAmB,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;QAC7D,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAC9B,IAAI,YAAY,EAAE,CAAC;QACjB,6CAA6C;QAC7C,kDAAkD;QAClD,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACnB,kCAAkC;QAClC,mCAAmC;QACnC,KAAK,CAAC,IAAI,CAAC,eAAe,cAAc,sBAAsB,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,eAAe,GAAG,CAAC;YACjB,CAAC,CAAC,sCAAsC,eAAe,eAAe;YACtE,CAAC,CAAC,+DAA+D,CACpE,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,6BAA6B;AAC7B,KAAK,UAAU,qBAAqB,CAClC,WAAmB,EACnB,OAAiB;IAEjB,IAAI,OAA8B,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAyC,EAAE,CAAC;IACzD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;YAAE,SAAS;QAC/B,IAAI,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,SAAS;QAC9C,6BAA6B;QAC7B,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,SAAS;QACtF,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gEAAgE;AAChE,KAAK,UAAU,mBAAmB,CAAC,WAAmB,EAAE,GAAW,EAAE,OAAiB;IACpF,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;QACxE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,YAAY,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1E,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAC;IAEzC,MAAM,MAAM,GAAG,MAAM,IAAA,oCAAmB,EAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IACtE,IAAI,MAAM,EAAE,WAAW;QAAE,OAAO,MAAM,CAAC,WAAW,CAAC;IAEnD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iDAAiD;AACjD,KAAK,UAAU,oBAAoB,CAAC,GAAW;IAC7C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACzD,IAAI,IAAA,eAAU,EAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;gBACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,iDAAiD;AACjD,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IAClD,MAAM,IAAI,GAAmB,EAAE,SAAS,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC;IAE9E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,4CAAoB,EAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC;QACtC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC9B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ;IACV,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;QAC/E,sEAAsE;QACtE,IAAI,CAAC,mBAAmB,GAAG,IAAA,wCAAqB,EAAC,MAAM,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,gBAAgB;IAClB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yEAAyE;AACzE,KAAK,UAAU,eAAe,CAAC,WAAmB;IAChD,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,4CAA4C;AAC5C,MAAM,iBAAiB,GAAe;IACpC,CAAC,UAAU,EAAE,YAAY,CAAC;IAC1B,CAAC,SAAS,EAAE,YAAY,CAAC;CAC1B,CAAC;AAEF;;;;;;GAMG;AACH,KAAK,UAAU,uBAAuB,CAAC,WAAmB;IACxD,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;gBAClE,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,yCAAyC;AACzC,KAAK,UAAU,gBAAgB,CAAC,WAAmB,EAAE,OAAiB;IACpE,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhC,KAAK,UAAU,IAAI,CAAC,GAAW;QAC7B,IAAI,OAA8B,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS;YACnC,IAAI,6BAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YACrD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,IAAA,eAAU,EAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;gBACnD,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC;YACD,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,IAAA,eAAU,EAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities-parser.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/capabilities-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmBH,MAAM,WAAW,wBAAwB;IACvC,0BAA0B;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,MAAM,EAAE,CAoB1G;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,MAAM,EAAE,CAMlH;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"capabilities-parser.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/capabilities-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmBH,MAAM,WAAW,wBAAwB;IACvC,0BAA0B;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,MAAM,EAAE,CAoB1G;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAE,wBAA6B,GAAG,MAAM,EAAE,CAMlH;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASlE;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAO1E;AAID;;;;;;;;GAQG;AACH,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,SAAS,OAAO,EAAE,CAAC;IAC7B,KAAK,EAAE,SAAS;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CACrC;AAuDD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,0BAA0B,GACjC;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAa1C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,0BAA0B,GACjC,MAAM,CASR"}
|
|
@@ -108,10 +108,14 @@ function readCapabilitiesEntries(capabilitiesPath, options = {}) {
|
|
|
108
108
|
* checker 与 sync-docs 都应按此跳过条目级比对。
|
|
109
109
|
*/
|
|
110
110
|
function isCapabilityListingFormat(content) {
|
|
111
|
-
// 能力清单格式特征:包含 "CLI Commands (N)"
|
|
111
|
+
// 能力清单格式特征:包含 "CLI Commands (N)" 与约束计数行
|
|
112
|
+
// (ADR-0029 前为 "Iron Laws (N)" / "Guidelines (N)",现行为 "errors (N)" / "warnings (N)",
|
|
113
|
+
// 新旧行都认——旧文档不因此失去格式身份)
|
|
112
114
|
return /CLI Commands\s*\(\d+\)/.test(content) ||
|
|
113
115
|
/Iron Laws?\s*\(\d+\)/.test(content) ||
|
|
114
|
-
/Guidelines?\s*\(\d+\)/.test(content)
|
|
116
|
+
/Guidelines?\s*\(\d+\)/.test(content) ||
|
|
117
|
+
/errors?\s*\(\d+\)/.test(content) ||
|
|
118
|
+
/warnings?\s*\(\d+\)/.test(content);
|
|
115
119
|
}
|
|
116
120
|
/**
|
|
117
121
|
* 未覆盖文件的聚合目录(module 模式)
|
|
@@ -140,8 +144,16 @@ function capabilityCountRules(source) {
|
|
|
140
144
|
actual: source.commands.length + source.gates.filter(g => g.cli).length,
|
|
141
145
|
},
|
|
142
146
|
{ label: 'Quality Gates', pattern: 'Quality Gates?\\s*\\((\\d+)\\)', actual: source.gates.length },
|
|
143
|
-
{
|
|
144
|
-
|
|
147
|
+
{
|
|
148
|
+
label: 'errors',
|
|
149
|
+
pattern: 'errors?\\s*\\((\\d+)\\)',
|
|
150
|
+
actual: Object.values(definitions_1.CONSTRAINTS).filter(c => c.severity === 'error').length,
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
label: 'warnings',
|
|
154
|
+
pattern: 'warnings?\\s*\\((\\d+)\\)',
|
|
155
|
+
actual: Object.values(definitions_1.CONSTRAINTS).filter(c => c.severity === 'warning').length,
|
|
156
|
+
},
|
|
145
157
|
];
|
|
146
158
|
}
|
|
147
159
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities-parser.js","sourceRoot":"","sources":["../../../src/core/constraints/capabilities-parser.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCH,4DAoBC;AAKD,0DAMC;AAQD,
|
|
1
|
+
{"version":3,"file":"capabilities-parser.js","sourceRoot":"","sources":["../../../src/core/constraints/capabilities-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 约束检查引擎
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* -
|
|
6
|
-
* -
|
|
7
|
-
*
|
|
4
|
+
* severity 显式模型(ADR-0029):
|
|
5
|
+
* - severity='error':检查失败立即抛出异常(block 模式)
|
|
6
|
+
* - severity='warning':检查失败记录警告
|
|
7
|
+
* 全部约束 kind='check',必须带真实 checker(注册表闭环)。
|
|
8
8
|
*/
|
|
9
9
|
import { Constraint, ConstraintContext, ConstraintResult, ConstraintCheckResult } from '../../types/constraint';
|
|
10
10
|
import type { ExecutionTrace } from '../../types/trace';
|
|
@@ -43,11 +43,7 @@ export declare class ConstraintChecker {
|
|
|
43
43
|
*
|
|
44
44
|
* @param customConfig 可选,per-request 自定义配置;不传则返回内置约束集
|
|
45
45
|
*/
|
|
46
|
-
getConstraints(customConfig?: MergedConstraintsConfig | null):
|
|
47
|
-
ironLaws: Record<string, Constraint>;
|
|
48
|
-
guidelines: Record<string, Constraint>;
|
|
49
|
-
prompts: Record<string, Constraint>;
|
|
50
|
-
};
|
|
46
|
+
getConstraints(customConfig?: MergedConstraintsConfig | null): Record<string, Constraint>;
|
|
51
47
|
/**
|
|
52
48
|
* 检查单个约束
|
|
53
49
|
*
|
|
@@ -55,10 +51,6 @@ export declare class ConstraintChecker {
|
|
|
55
51
|
* @param runEnv 可选,本 run 的运行级观察面(ADR-0023);不传 = 本次调用独占一份
|
|
56
52
|
*/
|
|
57
53
|
check(constraint: Constraint, context: ConstraintContext, evidence?: GitEvidence, runEnv?: RunEnv): Promise<ConstraintResult>;
|
|
58
|
-
/**
|
|
59
|
-
* 根据约束层级获取严重性
|
|
60
|
-
*/
|
|
61
|
-
private getSeverity;
|
|
62
54
|
/**
|
|
63
55
|
* 记录约束检查的 trace
|
|
64
56
|
*/
|
|
@@ -67,7 +59,7 @@ export declare class ConstraintChecker {
|
|
|
67
59
|
* 检查约束前置条件(工单 21:分发至 checkers/ 注册表)
|
|
68
60
|
*
|
|
69
61
|
* 注册表闭环(ADR-0001):kind='check' 未注册 checker 直接抛错,
|
|
70
|
-
* 不再有"未注册默认通过"
|
|
62
|
+
* 不再有"未注册默认通过"路径。
|
|
71
63
|
*
|
|
72
64
|
* git 证据(stagedDiff/stagedDiffNames)单一来源 = GitEvidence adapter(#87):
|
|
73
65
|
* 一次 run 内调用方传同一实例即至多取证一次,run 外调用独占一份。
|
|
@@ -81,15 +73,14 @@ export declare class ConstraintChecker {
|
|
|
81
73
|
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
82
74
|
*/
|
|
83
75
|
findApplicableConstraints(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null): {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
prompts: Constraint[];
|
|
76
|
+
errors: Constraint[];
|
|
77
|
+
warnings: Constraint[];
|
|
87
78
|
};
|
|
88
79
|
/**
|
|
89
80
|
* 执行约束检查
|
|
90
81
|
*
|
|
91
|
-
* -
|
|
92
|
-
* -
|
|
82
|
+
* - severity='error':检查失败立即抛出异常
|
|
83
|
+
* - severity='warning':检查失败记录警告
|
|
93
84
|
*
|
|
94
85
|
* @param context 约束上下文
|
|
95
86
|
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
@@ -104,23 +95,23 @@ export declare class ConstraintChecker {
|
|
|
104
95
|
* 收集模式执行约束检查(harness report 的不抛出口,架构评审候选1)
|
|
105
96
|
*
|
|
106
97
|
* 与 checkConstraints 共享同一检查体,唯一差别是不 throw:
|
|
107
|
-
*
|
|
98
|
+
* error 级违规照进 result.errors、passed=false,后续 error 与 warning 级照常执行,
|
|
108
99
|
* trace 逐条照记。报告类消费者拿全量视图;阻断语义只属于 checkConstraints
|
|
109
100
|
* (throw 契约是 #119 判定证据的外溢面,逐字不动)。
|
|
110
101
|
*/
|
|
111
102
|
collectConstraints(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null, evidence?: GitEvidence, runEnv?: RunEnv): Promise<ConstraintCheckResult>;
|
|
112
103
|
/**
|
|
113
104
|
* checkConstraints / collectConstraints 的共享检查体;
|
|
114
|
-
* mode='block'
|
|
105
|
+
* mode='block' 首个 error 级违规即抛,mode='collect' 全量跑完不抛
|
|
115
106
|
*/
|
|
116
107
|
private runAllConstraints;
|
|
117
108
|
/**
|
|
118
|
-
* 执行前检查(仅检查
|
|
109
|
+
* 执行前检查(仅检查 severity='error' 的约束)
|
|
119
110
|
*
|
|
120
111
|
* @param context 约束上下文
|
|
121
112
|
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
122
113
|
* @param evidence 可选,本次检查共用的 git 证据 adapter(#87,同 checkConstraints)
|
|
123
|
-
* @throws ConstraintViolationError
|
|
114
|
+
* @throws ConstraintViolationError 如果有 error 级违规
|
|
124
115
|
*/
|
|
125
116
|
beforeExecution(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null, evidence?: GitEvidence): Promise<void>;
|
|
126
117
|
}
|
|
@@ -140,7 +131,7 @@ export interface CheckConstraintsOptions {
|
|
|
140
131
|
customConfig?: MergedConstraintsConfig | null;
|
|
141
132
|
}
|
|
142
133
|
/**
|
|
143
|
-
*
|
|
134
|
+
* 快捷函数:执行约束检查
|
|
144
135
|
*
|
|
145
136
|
* @param context 约束上下文
|
|
146
137
|
* @param options.onTrace 每条约束检查后的回调(用于记录 trace 到外部存储)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/checker.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* 约束检查引擎
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
8
|
-
*
|
|
5
|
+
* severity 显式模型(ADR-0029):
|
|
6
|
+
* - severity='error':检查失败立即抛出异常(block 模式)
|
|
7
|
+
* - severity='warning':检查失败记录警告
|
|
8
|
+
* 全部约束 kind='check',必须带真实 checker(注册表闭环)。
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
11
|
exports.constraintChecker = exports.ConstraintChecker = void 0;
|
|
@@ -53,15 +53,7 @@ class ConstraintChecker {
|
|
|
53
53
|
* @param customConfig 可选,per-request 自定义配置;不传则返回内置约束集
|
|
54
54
|
*/
|
|
55
55
|
getConstraints(customConfig) {
|
|
56
|
-
|
|
57
|
-
const source = config
|
|
58
|
-
? { ironLaws: config.ironLaws, guidelines: config.guidelines, prompts: config.prompts ?? definitions_1.PROMPTS }
|
|
59
|
-
: { ironLaws: definitions_1.IRON_LAWS, guidelines: definitions_1.GUIDELINES, prompts: definitions_1.PROMPTS };
|
|
60
|
-
return {
|
|
61
|
-
ironLaws: source.ironLaws,
|
|
62
|
-
guidelines: source.guidelines,
|
|
63
|
-
prompts: source.prompts,
|
|
64
|
-
};
|
|
56
|
+
return customConfig ? customConfig.constraints : definitions_1.CONSTRAINTS;
|
|
65
57
|
}
|
|
66
58
|
/**
|
|
67
59
|
* 检查单个约束
|
|
@@ -70,22 +62,12 @@ class ConstraintChecker {
|
|
|
70
62
|
* @param runEnv 可选,本 run 的运行级观察面(ADR-0023);不传 = 本次调用独占一份
|
|
71
63
|
*/
|
|
72
64
|
async check(constraint, context, evidence, runEnv) {
|
|
73
|
-
// prompt 类约束不参与 checker 执行(ADR-0001:仅参与注入)
|
|
74
|
-
if (constraint.kind === 'prompt') {
|
|
75
|
-
return {
|
|
76
|
-
id: constraint.id,
|
|
77
|
-
level: constraint.level,
|
|
78
|
-
satisfied: true,
|
|
79
|
-
constraint,
|
|
80
|
-
checkedAt: new Date(),
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
65
|
// 检查前置条件('skip' = 约定未采用/证据未接线:satisfied 置 true 但不计 pass/fail)
|
|
84
66
|
const outcome = (0, checkers_1.normalizeCheckOutcome)(await this.checkPrecondition(constraint, context, evidence, runEnv));
|
|
85
67
|
if (outcome.skipped) {
|
|
86
68
|
return {
|
|
87
69
|
id: constraint.id,
|
|
88
|
-
|
|
70
|
+
severity: constraint.severity,
|
|
89
71
|
satisfied: true,
|
|
90
72
|
skipped: true,
|
|
91
73
|
constraint,
|
|
@@ -96,7 +78,7 @@ class ConstraintChecker {
|
|
|
96
78
|
const satisfied = outcome.satisfied;
|
|
97
79
|
return {
|
|
98
80
|
id: constraint.id,
|
|
99
|
-
|
|
81
|
+
severity: constraint.severity,
|
|
100
82
|
satisfied,
|
|
101
83
|
constraint,
|
|
102
84
|
message: satisfied ? undefined : constraint.message,
|
|
@@ -105,32 +87,16 @@ class ConstraintChecker {
|
|
|
105
87
|
checkedAt: new Date(),
|
|
106
88
|
};
|
|
107
89
|
}
|
|
108
|
-
/**
|
|
109
|
-
* 根据约束层级获取严重性
|
|
110
|
-
*/
|
|
111
|
-
getSeverity(level) {
|
|
112
|
-
switch (level) {
|
|
113
|
-
case 'iron_law':
|
|
114
|
-
return 'error';
|
|
115
|
-
case 'guideline':
|
|
116
|
-
return 'warning';
|
|
117
|
-
case 'prompt':
|
|
118
|
-
return 'info';
|
|
119
|
-
default:
|
|
120
|
-
return 'warning';
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
90
|
/**
|
|
124
91
|
* 记录约束检查的 trace
|
|
125
92
|
*/
|
|
126
93
|
recordTrace(constraint, checkResult, context) {
|
|
127
94
|
this.traceRecorder.record({
|
|
128
95
|
constraintId: constraint.id,
|
|
129
|
-
|
|
96
|
+
severity: constraint.severity,
|
|
130
97
|
timestamp: Date.now(),
|
|
131
98
|
result: checkResult.skipped ? 'skip' : checkResult.satisfied ? 'pass' : 'fail',
|
|
132
99
|
operation: context.operation,
|
|
133
|
-
severity: this.getSeverity(constraint.level),
|
|
134
100
|
projectPath: context.projectPath,
|
|
135
101
|
sessionId: context.sessionId,
|
|
136
102
|
evidence: checkResult.evidence,
|
|
@@ -140,7 +106,7 @@ class ConstraintChecker {
|
|
|
140
106
|
* 检查约束前置条件(工单 21:分发至 checkers/ 注册表)
|
|
141
107
|
*
|
|
142
108
|
* 注册表闭环(ADR-0001):kind='check' 未注册 checker 直接抛错,
|
|
143
|
-
* 不再有"未注册默认通过"
|
|
109
|
+
* 不再有"未注册默认通过"路径。
|
|
144
110
|
*
|
|
145
111
|
* git 证据(stagedDiff/stagedDiffNames)单一来源 = GitEvidence adapter(#87):
|
|
146
112
|
* 一次 run 内调用方传同一实例即至多取证一次,run 外调用独占一份。
|
|
@@ -150,7 +116,7 @@ class ConstraintChecker {
|
|
|
150
116
|
const impl = (0, checkers_1.getConstraintCheck)(constraint.id);
|
|
151
117
|
if (!impl) {
|
|
152
118
|
throw new Error(`[harness] 约束 "${constraint.id}" (kind='check') 未注册 checker,拒绝静默通过。` +
|
|
153
|
-
`请在 checkers/
|
|
119
|
+
`请在 checkers/ 注册实现(纯文本提示层已随 ADR-0029 关停,文本规则写入项目治理文档)。`);
|
|
154
120
|
}
|
|
155
121
|
const projectPath = context.projectPath || process.cwd();
|
|
156
122
|
const git = evidence ?? (0, git_evidence_1.createGitEvidence)(projectPath);
|
|
@@ -170,20 +136,17 @@ class ConstraintChecker {
|
|
|
170
136
|
findApplicableConstraints(context, customConfig) {
|
|
171
137
|
const operations = [context.operation, ...(context.extraTriggers ?? [])];
|
|
172
138
|
const constraints = this.getConstraints(customConfig);
|
|
173
|
-
const
|
|
174
|
-
return Object.values(constraintSet).filter(constraint => (0, triggers_1.matchesTrigger)(constraint, operations));
|
|
175
|
-
};
|
|
139
|
+
const applicable = Object.values(constraints).filter(constraint => (0, triggers_1.matchesTrigger)(constraint, operations));
|
|
176
140
|
return {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
prompts: filterByTrigger(constraints.prompts),
|
|
141
|
+
errors: applicable.filter(c => c.severity === 'error'),
|
|
142
|
+
warnings: applicable.filter(c => c.severity === 'warning'),
|
|
180
143
|
};
|
|
181
144
|
}
|
|
182
145
|
/**
|
|
183
146
|
* 执行约束检查
|
|
184
147
|
*
|
|
185
|
-
* -
|
|
186
|
-
* -
|
|
148
|
+
* - severity='error':检查失败立即抛出异常
|
|
149
|
+
* - severity='warning':检查失败记录警告
|
|
187
150
|
*
|
|
188
151
|
* @param context 约束上下文
|
|
189
152
|
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
@@ -200,7 +163,7 @@ class ConstraintChecker {
|
|
|
200
163
|
* 收集模式执行约束检查(harness report 的不抛出口,架构评审候选1)
|
|
201
164
|
*
|
|
202
165
|
* 与 checkConstraints 共享同一检查体,唯一差别是不 throw:
|
|
203
|
-
*
|
|
166
|
+
* error 级违规照进 result.errors、passed=false,后续 error 与 warning 级照常执行,
|
|
204
167
|
* trace 逐条照记。报告类消费者拿全量视图;阻断语义只属于 checkConstraints
|
|
205
168
|
* (throw 契约是 #119 判定证据的外溢面,逐字不动)。
|
|
206
169
|
*/
|
|
@@ -209,7 +172,7 @@ class ConstraintChecker {
|
|
|
209
172
|
}
|
|
210
173
|
/**
|
|
211
174
|
* checkConstraints / collectConstraints 的共享检查体;
|
|
212
|
-
* mode='block'
|
|
175
|
+
* mode='block' 首个 error 级违规即抛,mode='collect' 全量跑完不抛
|
|
213
176
|
*/
|
|
214
177
|
async runAllConstraints(context, customConfig, evidence, runEnv, mode) {
|
|
215
178
|
// run 起始:重置 src 扫描缓存(S7);git 证据 = 本 run 独占的 adapter 实例(工单 18 → #87)
|
|
@@ -219,20 +182,20 @@ class ConstraintChecker {
|
|
|
219
182
|
// 观察面同一形状(ADR-0023):调用方传了就共用,没传也只造一枚——逐条 checker 不再各读一遍配置
|
|
220
183
|
const env = runEnv ?? (0, run_env_1.createRunEnv)(projectPath);
|
|
221
184
|
const result = {
|
|
222
|
-
|
|
223
|
-
|
|
185
|
+
errors: [],
|
|
186
|
+
warnings: [],
|
|
224
187
|
passed: true,
|
|
225
188
|
warningCount: 0,
|
|
226
189
|
};
|
|
227
190
|
const constraints = this.getConstraints(customConfig);
|
|
228
191
|
// context.operation 为主触发条件,extraTriggers 为次级推断(ADR-0001),任一命中即匹配
|
|
229
192
|
const operations = [context.operation, ...(context.extraTriggers ?? [])];
|
|
230
|
-
// 1.
|
|
231
|
-
for (const constraint of Object.values(constraints.
|
|
193
|
+
// 1. error 级: block 模式首个违规即抛;collect 模式全量收集
|
|
194
|
+
for (const constraint of Object.values(constraints).filter(c => c.severity === 'error')) {
|
|
232
195
|
if (!(0, triggers_1.matchesTrigger)(constraint, operations))
|
|
233
196
|
continue;
|
|
234
197
|
const checkResult = await this.check(constraint, context, run, env);
|
|
235
|
-
result.
|
|
198
|
+
result.errors.push(checkResult);
|
|
236
199
|
this.recordTrace(constraint, checkResult, context);
|
|
237
200
|
if (!checkResult.satisfied) {
|
|
238
201
|
result.passed = false;
|
|
@@ -241,12 +204,12 @@ class ConstraintChecker {
|
|
|
241
204
|
}
|
|
242
205
|
}
|
|
243
206
|
}
|
|
244
|
-
// 2.
|
|
245
|
-
for (const constraint of Object.values(constraints.
|
|
207
|
+
// 2. warning 级: 记录警告
|
|
208
|
+
for (const constraint of Object.values(constraints).filter(c => c.severity === 'warning')) {
|
|
246
209
|
if (!(0, triggers_1.matchesTrigger)(constraint, operations))
|
|
247
210
|
continue;
|
|
248
211
|
const checkResult = await this.check(constraint, context, run, env);
|
|
249
|
-
result.
|
|
212
|
+
result.warnings.push(checkResult);
|
|
250
213
|
this.recordTrace(constraint, checkResult, context);
|
|
251
214
|
if (!checkResult.satisfied) {
|
|
252
215
|
result.warningCount++;
|
|
@@ -255,12 +218,12 @@ class ConstraintChecker {
|
|
|
255
218
|
return result;
|
|
256
219
|
}
|
|
257
220
|
/**
|
|
258
|
-
* 执行前检查(仅检查
|
|
221
|
+
* 执行前检查(仅检查 severity='error' 的约束)
|
|
259
222
|
*
|
|
260
223
|
* @param context 约束上下文
|
|
261
224
|
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
262
225
|
* @param evidence 可选,本次检查共用的 git 证据 adapter(#87,同 checkConstraints)
|
|
263
|
-
* @throws ConstraintViolationError
|
|
226
|
+
* @throws ConstraintViolationError 如果有 error 级违规
|
|
264
227
|
*/
|
|
265
228
|
async beforeExecution(context, customConfig, evidence) {
|
|
266
229
|
const projectPath = context.projectPath || process.cwd();
|
|
@@ -269,7 +232,7 @@ class ConstraintChecker {
|
|
|
269
232
|
const env = (0, run_env_1.createRunEnv)(projectPath);
|
|
270
233
|
const constraints = this.getConstraints(customConfig);
|
|
271
234
|
const operations = [context.operation, ...(context.extraTriggers ?? [])];
|
|
272
|
-
for (const constraint of Object.values(constraints.
|
|
235
|
+
for (const constraint of Object.values(constraints).filter(c => c.severity === 'error')) {
|
|
273
236
|
if (!(0, triggers_1.matchesTrigger)(constraint, operations))
|
|
274
237
|
continue;
|
|
275
238
|
const result = await this.check(constraint, context, run, env);
|
|
@@ -291,13 +254,11 @@ exports.ConstraintChecker = ConstraintChecker;
|
|
|
291
254
|
async function checkConstraint(constraintId, context, customConfig) {
|
|
292
255
|
const checker = ConstraintChecker.getInstance();
|
|
293
256
|
const constraints = checker.getConstraints(customConfig);
|
|
294
|
-
const constraint = constraints
|
|
295
|
-
constraints.guidelines[constraintId] ||
|
|
296
|
-
constraints.prompts[constraintId];
|
|
257
|
+
const constraint = constraints[constraintId];
|
|
297
258
|
if (!constraint) {
|
|
298
259
|
return {
|
|
299
260
|
id: constraintId,
|
|
300
|
-
|
|
261
|
+
severity: 'warning',
|
|
301
262
|
satisfied: false,
|
|
302
263
|
message: `未知的约束: ${constraintId}`,
|
|
303
264
|
checkedAt: new Date(),
|
|
@@ -306,7 +267,7 @@ async function checkConstraint(constraintId, context, customConfig) {
|
|
|
306
267
|
return checker.check(constraint, context);
|
|
307
268
|
}
|
|
308
269
|
/**
|
|
309
|
-
*
|
|
270
|
+
* 快捷函数:执行约束检查
|
|
310
271
|
*
|
|
311
272
|
* @param context 约束上下文
|
|
312
273
|
* @param options.onTrace 每条约束检查后的回调(用于记录 trace 到外部存储)
|
|
@@ -315,9 +276,9 @@ async function checkConstraint(constraintId, context, customConfig) {
|
|
|
315
276
|
async function checkConstraints(context, options) {
|
|
316
277
|
const result = await ConstraintChecker.getInstance().checkConstraints(context, options?.customConfig ?? null);
|
|
317
278
|
if (options?.onTrace) {
|
|
318
|
-
for (const r of result.
|
|
279
|
+
for (const r of result.errors)
|
|
319
280
|
options.onTrace(r);
|
|
320
|
-
for (const r of result.
|
|
281
|
+
for (const r of result.warnings)
|
|
321
282
|
options.onTrace(r);
|
|
322
283
|
}
|
|
323
284
|
return result;
|