@dommaker/harness 0.18.0 → 1.0.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 +23 -0
- package/bin/harness.js +136 -552
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +2 -13
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/definitions.d.ts +90 -0
- package/dist/cli/commands/definitions.d.ts.map +1 -0
- package/dist/cli/commands/definitions.js +519 -0
- package/dist/cli/commands/definitions.js.map +1 -0
- package/dist/cli/commands/knowledge.js.map +1 -1
- package/dist/cli/commands/sync-docs/capabilities-syncer.d.ts +3 -25
- package/dist/cli/commands/sync-docs/capabilities-syncer.d.ts.map +1 -1
- package/dist/cli/commands/sync-docs/capabilities-syncer.js +3 -93
- package/dist/cli/commands/sync-docs/capabilities-syncer.js.map +1 -1
- package/dist/cli/commands/sync-docs/index.d.ts +1 -1
- package/dist/cli/commands/sync-docs/index.d.ts.map +1 -1
- package/dist/cli/commands/sync-docs/index.js +4 -4
- package/dist/cli/commands/sync-docs/index.js.map +1 -1
- package/dist/cli/commands/update-user-model.d.ts +1 -0
- package/dist/cli/commands/update-user-model.d.ts.map +1 -1
- package/dist/cli/commands/update-user-model.js +12 -5
- package/dist/cli/commands/update-user-model.js.map +1 -1
- package/dist/context/index.d.ts +1 -5
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +1 -5
- package/dist/context/index.js.map +1 -1
- package/dist/context/knowledge-injector.d.ts +3 -3
- package/dist/context/knowledge-injector.d.ts.map +1 -1
- package/dist/context/knowledge-injector.js +1 -1
- package/dist/context/session-manager.d.ts +1 -12
- package/dist/context/session-manager.d.ts.map +1 -1
- package/dist/context/session-manager.js +0 -63
- package/dist/context/session-manager.js.map +1 -1
- package/dist/context/types.d.ts +1 -39
- package/dist/context/types.d.ts.map +1 -1
- package/dist/context/types.js +2 -15
- package/dist/context/types.js.map +1 -1
- package/dist/core/constraints/agent-prompt-renderer.d.ts +32 -0
- package/dist/core/constraints/agent-prompt-renderer.d.ts.map +1 -0
- package/dist/core/constraints/agent-prompt-renderer.js +58 -0
- package/dist/core/constraints/agent-prompt-renderer.js.map +1 -0
- package/dist/core/constraints/capabilities-parser.d.ts +17 -2
- package/dist/core/constraints/capabilities-parser.d.ts.map +1 -1
- package/dist/core/constraints/capabilities-parser.js +84 -2
- package/dist/core/constraints/capabilities-parser.js.map +1 -1
- package/dist/core/constraints/check-cache.d.ts +48 -3
- package/dist/core/constraints/check-cache.d.ts.map +1 -1
- package/dist/core/constraints/check-cache.js +53 -5
- package/dist/core/constraints/check-cache.js.map +1 -1
- package/dist/core/constraints/checker.d.ts +3 -17
- package/dist/core/constraints/checker.d.ts.map +1 -1
- package/dist/core/constraints/checker.js +7 -47
- package/dist/core/constraints/checker.js.map +1 -1
- package/dist/core/constraints/definitions.d.ts +0 -7
- package/dist/core/constraints/definitions.d.ts.map +1 -1
- package/dist/core/constraints/definitions.js +1 -8
- package/dist/core/constraints/definitions.js.map +1 -1
- package/dist/core/constraints/doc-freshness/runner.d.ts +0 -2
- package/dist/core/constraints/doc-freshness/runner.d.ts.map +1 -1
- package/dist/core/constraints/doc-freshness/runner.js.map +1 -1
- package/dist/core/constraints/index.d.ts +5 -1
- package/dist/core/constraints/index.d.ts.map +1 -1
- package/dist/core/constraints/index.js +8 -3
- package/dist/core/constraints/index.js.map +1 -1
- package/dist/core/constraints/interceptor.d.ts.map +1 -1
- package/dist/core/constraints/interceptor.js +1 -5
- package/dist/core/constraints/interceptor.js.map +1 -1
- package/dist/core/effective-constraints.d.ts.map +1 -1
- package/dist/core/effective-constraints.js +0 -1
- package/dist/core/effective-constraints.js.map +1 -1
- package/dist/core/project-config-loader.d.ts.map +1 -1
- package/dist/core/project-config-loader.js +1 -8
- package/dist/core/project-config-loader.js.map +1 -1
- package/dist/dashboard/stats.d.ts.map +1 -1
- package/dist/dashboard/stats.js.map +1 -1
- package/dist/dashboard/types.d.ts +2 -2
- package/dist/dashboard/types.d.ts.map +1 -1
- package/dist/failure/constraint-handler.d.ts.map +1 -1
- package/dist/failure/constraint-handler.js +0 -2
- package/dist/failure/constraint-handler.js.map +1 -1
- package/dist/gates/acceptance.d.ts +9 -1
- package/dist/gates/acceptance.d.ts.map +1 -1
- package/dist/gates/acceptance.js +21 -0
- package/dist/gates/acceptance.js.map +1 -1
- package/dist/gates/checker-gate.d.ts +23 -0
- package/dist/gates/checker-gate.d.ts.map +1 -0
- package/dist/gates/checker-gate.js +53 -0
- package/dist/gates/checker-gate.js.map +1 -0
- package/dist/gates/command.d.ts +9 -2
- package/dist/gates/command.d.ts.map +1 -1
- package/dist/gates/command.js +10 -0
- package/dist/gates/command.js.map +1 -1
- package/dist/gates/contract.d.ts +8 -2
- package/dist/gates/contract.d.ts.map +1 -1
- package/dist/gates/contract.js +9 -0
- package/dist/gates/contract.js.map +1 -1
- package/dist/gates/decision.d.ts +17 -0
- package/dist/gates/decision.d.ts.map +1 -0
- package/dist/gates/decision.js +25 -0
- package/dist/gates/decision.js.map +1 -0
- package/dist/gates/definitions.d.ts +63 -0
- package/dist/gates/definitions.d.ts.map +1 -0
- package/dist/gates/definitions.js +160 -0
- package/dist/gates/definitions.js.map +1 -0
- package/dist/gates/effective-gates.d.ts +30 -0
- package/dist/gates/effective-gates.d.ts.map +1 -0
- package/dist/gates/effective-gates.js +85 -0
- package/dist/gates/effective-gates.js.map +1 -0
- package/dist/gates/index.d.ts +25 -1
- package/dist/gates/index.d.ts.map +1 -1
- package/dist/gates/index.js +37 -1
- package/dist/gates/index.js.map +1 -1
- package/dist/gates/performance.d.ts +8 -2
- package/dist/gates/performance.d.ts.map +1 -1
- package/dist/gates/performance.js +9 -0
- package/dist/gates/performance.js.map +1 -1
- package/dist/gates/registry.d.ts +32 -0
- package/dist/gates/registry.d.ts.map +1 -0
- package/dist/gates/registry.js +90 -0
- package/dist/gates/registry.js.map +1 -0
- package/dist/gates/review.d.ts +8 -2
- package/dist/gates/review.d.ts.map +1 -1
- package/dist/gates/review.js +9 -0
- package/dist/gates/review.js.map +1 -1
- package/dist/gates/runner.d.ts +30 -0
- package/dist/gates/runner.d.ts.map +1 -0
- package/dist/gates/runner.js +38 -0
- package/dist/gates/runner.js.map +1 -0
- package/dist/gates/security.d.ts +8 -2
- package/dist/gates/security.d.ts.map +1 -1
- package/dist/gates/security.js +9 -0
- package/dist/gates/security.js.map +1 -1
- package/dist/gates/types.d.ts +41 -1
- package/dist/gates/types.d.ts.map +1 -1
- package/dist/hooks/bootstrap.d.ts.map +1 -1
- package/dist/hooks/bootstrap.js +0 -2
- package/dist/hooks/bootstrap.js.map +1 -1
- package/dist/hooks/config.d.ts +26 -0
- package/dist/hooks/config.d.ts.map +1 -0
- package/dist/hooks/config.js +30 -0
- package/dist/hooks/config.js.map +1 -0
- package/dist/hooks/index.d.ts +2 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +4 -1
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/registry.d.ts +18 -1
- package/dist/hooks/registry.d.ts.map +1 -1
- package/dist/hooks/registry.js +45 -0
- package/dist/hooks/registry.js.map +1 -1
- package/dist/hooks/types.d.ts +20 -0
- package/dist/hooks/types.d.ts.map +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -21
- package/dist/index.js.map +1 -1
- package/dist/knowledge/import.d.ts +2 -2
- package/dist/knowledge/import.d.ts.map +1 -1
- package/dist/knowledge/ingest.js.map +1 -1
- package/dist/knowledge/lifecycle-hooks.d.ts +2 -2
- package/dist/knowledge/lifecycle-hooks.d.ts.map +1 -1
- package/dist/knowledge/types.d.ts +5 -7
- package/dist/knowledge/types.d.ts.map +1 -1
- package/dist/knowledge/types.js +1 -1
- package/dist/knowledge/types.js.map +1 -1
- package/dist/monitoring/constraint-doctor.d.ts +4 -22
- package/dist/monitoring/constraint-doctor.d.ts.map +1 -1
- package/dist/monitoring/constraint-doctor.js +7 -94
- package/dist/monitoring/constraint-doctor.js.map +1 -1
- package/dist/presets/standard.d.ts +1 -1
- package/dist/presets/standard.d.ts.map +1 -1
- package/dist/presets/standard.js +1 -2
- package/dist/presets/standard.js.map +1 -1
- package/dist/spec/annotation-checker.d.ts.map +1 -1
- package/dist/spec/annotation-checker.js +6 -26
- package/dist/spec/annotation-checker.js.map +1 -1
- package/dist/tools/index.d.ts +0 -4
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/types/constraint.d.ts +1 -12
- package/dist/types/constraint.d.ts.map +1 -1
- package/dist/types/constraint.js +0 -3
- package/dist/types/constraint.js.map +1 -1
- package/dist/types/project-config.d.ts +0 -2
- package/dist/types/project-config.d.ts.map +1 -1
- package/dist/utils/file-walk.d.ts +2 -2
- package/dist/utils/file-walk.js +2 -2
- package/package.json +9 -4
- package/src/CONTEXT.md +14 -0
- package/src/__tests__/checker-extra.test.ts +2 -59
- package/src/__tests__/constraint-doctor.test.ts +1 -140
- package/src/__tests__/constraint-handler.test.ts +0 -4
- package/src/__tests__/project-config-loader-extra.test.ts +0 -20
- package/src/__tests__/project-config-loader.test.ts +0 -1
- package/src/cli/commands/CONTEXT.md +15 -7
- package/src/cli/commands/__tests__/analyze-sessions.test.ts +178 -0
- package/src/cli/commands/__tests__/check-drift.test.ts +0 -3
- package/src/cli/commands/__tests__/check-skip-output.test.ts +0 -5
- package/src/cli/commands/__tests__/check.test.ts +7 -75
- package/src/cli/commands/__tests__/registry.test.ts +201 -0
- package/src/cli/commands/__tests__/release.test.ts +162 -0
- package/src/cli/commands/__tests__/update-user-model.test.ts +205 -0
- package/src/cli/commands/check.ts +2 -14
- package/src/cli/commands/definitions.ts +593 -0
- package/src/cli/commands/knowledge.ts +3 -3
- package/src/cli/commands/sync-docs/capabilities-syncer.ts +4 -110
- package/src/cli/commands/sync-docs/index.ts +8 -5
- package/src/cli/commands/update-user-model.ts +15 -5
- package/src/context/CONTEXT.md +2 -7
- package/src/context/__tests__/session-manager.test.ts +0 -91
- package/src/context/index.ts +1 -5
- package/src/context/knowledge-injector.ts +3 -3
- package/src/context/session-manager.ts +0 -74
- package/src/context/types.ts +2 -63
- package/src/core/CONTEXT.md +1 -1
- package/src/core/constraints/__tests__/agent-prompt-renderer.test.ts +129 -0
- package/src/core/constraints/__tests__/check-cache.test.ts +227 -0
- package/src/core/constraints/__tests__/interceptor.test.ts +0 -2
- package/src/core/constraints/agent-prompt-renderer.ts +71 -0
- package/src/core/constraints/capabilities-parser.ts +95 -2
- package/src/core/constraints/check-cache.ts +75 -3
- package/src/core/constraints/checker.ts +8 -53
- package/src/core/constraints/definitions.ts +0 -8
- package/src/core/constraints/doc-freshness/runner.ts +1 -2
- package/src/core/constraints/index.ts +11 -2
- package/src/core/constraints/interceptor.ts +1 -6
- package/src/core/effective-constraints.ts +0 -1
- package/src/core/project-config-loader.ts +1 -7
- package/src/dashboard/stats.ts +2 -2
- package/src/dashboard/types.ts +2 -2
- package/src/failure/constraint-handler.ts +0 -2
- package/src/gates/CONTEXT.md +16 -13
- package/src/gates/__tests__/checker-gate.test.ts +45 -0
- package/src/gates/__tests__/contract.test.ts +73 -0
- package/src/gates/__tests__/effective-gates.test.ts +82 -0
- package/src/gates/__tests__/gate-interface.test.ts +202 -0
- package/src/gates/__tests__/registry.test.ts +87 -0
- package/src/gates/__tests__/runner.test.ts +81 -0
- package/src/gates/acceptance.ts +24 -1
- package/src/gates/checker-gate.ts +54 -0
- package/src/gates/command.ts +13 -2
- package/src/gates/contract.ts +12 -2
- package/src/gates/decision.ts +27 -0
- package/src/gates/definitions.ts +207 -0
- package/src/gates/effective-gates.ts +106 -0
- package/src/gates/index.ts +38 -0
- package/src/gates/performance.ts +12 -2
- package/src/gates/registry.ts +107 -0
- package/src/gates/review.ts +12 -2
- package/src/gates/runner.ts +57 -0
- package/src/gates/security.ts +12 -2
- package/src/gates/types.ts +48 -1
- package/src/hooks/CONTEXT.md +12 -2
- package/src/hooks/__tests__/bootstrap.test.ts +0 -1
- package/src/hooks/__tests__/config.test.ts +19 -0
- package/src/hooks/__tests__/pipeline.test.ts +79 -0
- package/src/hooks/__tests__/registry.test.ts +67 -0
- package/src/hooks/bootstrap.ts +0 -2
- package/src/hooks/config.ts +29 -0
- package/src/hooks/index.ts +2 -1
- package/src/hooks/registry.ts +60 -1
- package/src/hooks/types.ts +21 -0
- package/src/index.ts +13 -22
- package/src/knowledge/import.ts +3 -3
- package/src/knowledge/ingest.ts +4 -4
- package/src/knowledge/lifecycle-hooks.ts +3 -3
- package/src/knowledge/types.ts +5 -8
- package/src/monitoring/constraint-doctor.ts +7 -106
- package/src/presets/__tests__/standard.test.ts +0 -2
- package/src/presets/standard.ts +1 -2
- package/src/spec/__tests__/annotation-checker.test.ts +9 -3
- package/src/spec/annotation-checker.ts +7 -29
- package/src/tools/CONTEXT.md +7 -14
- package/src/tools/index.ts +0 -4
- package/src/types/constraint.ts +1 -14
- package/src/types/project-config.ts +0 -3
- package/src/utils/file-walk.ts +2 -2
- package/dist/architecture/constraint-engine.d.ts +0 -67
- package/dist/architecture/constraint-engine.d.ts.map +0 -1
- package/dist/architecture/constraint-engine.js +0 -295
- package/dist/architecture/constraint-engine.js.map +0 -1
- package/dist/architecture/cross-project-checker.d.ts +0 -54
- package/dist/architecture/cross-project-checker.d.ts.map +0 -1
- package/dist/architecture/cross-project-checker.js +0 -467
- package/dist/architecture/cross-project-checker.js.map +0 -1
- package/dist/cli/commands/index.d.ts +0 -30
- package/dist/cli/commands/index.d.ts.map +0 -1
- package/dist/cli/commands/index.js +0 -91
- package/dist/cli/commands/index.js.map +0 -1
- package/dist/context/file-budget.d.ts +0 -40
- package/dist/context/file-budget.d.ts.map +0 -1
- package/dist/context/file-budget.js +0 -147
- package/dist/context/file-budget.js.map +0 -1
- package/dist/context/progressive-loader.d.ts +0 -109
- package/dist/context/progressive-loader.d.ts.map +0 -1
- package/dist/context/progressive-loader.js +0 -166
- package/dist/context/progressive-loader.js.map +0 -1
- package/dist/context/token-pipeline.d.ts +0 -55
- package/dist/context/token-pipeline.d.ts.map +0 -1
- package/dist/context/token-pipeline.js +0 -220
- package/dist/context/token-pipeline.js.map +0 -1
- package/dist/context/tool-output-budget.d.ts +0 -59
- package/dist/context/tool-output-budget.d.ts.map +0 -1
- package/dist/context/tool-output-budget.js +0 -177
- package/dist/context/tool-output-budget.js.map +0 -1
- package/dist/core/constraints/default-executors.d.ts +0 -10
- package/dist/core/constraints/default-executors.d.ts.map +0 -1
- package/dist/core/constraints/default-executors.js +0 -120
- package/dist/core/constraints/default-executors.js.map +0 -1
- package/dist/llm/adapter.d.ts +0 -36
- package/dist/llm/adapter.d.ts.map +0 -1
- package/dist/llm/adapter.js +0 -118
- package/dist/llm/adapter.js.map +0 -1
- package/dist/llm/index.d.ts +0 -3
- package/dist/llm/index.d.ts.map +0 -1
- package/dist/llm/index.js +0 -19
- package/dist/llm/index.js.map +0 -1
- package/dist/llm/types.d.ts +0 -62
- package/dist/llm/types.d.ts.map +0 -1
- package/dist/llm/types.js +0 -8
- package/dist/llm/types.js.map +0 -1
- package/dist/tools/core/index.d.ts +0 -13
- package/dist/tools/core/index.d.ts.map +0 -1
- package/dist/tools/core/index.js +0 -198
- package/dist/tools/core/index.js.map +0 -1
- package/dist/tools/loader.d.ts +0 -21
- package/dist/tools/loader.d.ts.map +0 -1
- package/dist/tools/loader.js +0 -199
- package/dist/tools/loader.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -59
- package/dist/tools/registry.d.ts.map +0 -1
- package/dist/tools/registry.js +0 -115
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/types.d.ts +0 -38
- package/dist/tools/types.d.ts.map +0 -1
- package/dist/tools/types.js +0 -6
- package/dist/tools/types.js.map +0 -1
- package/src/__tests__/architecture-engine.test.ts +0 -619
- package/src/__tests__/context/progressive-loader.test.ts +0 -131
- package/src/__tests__/cross-project-checker.test.ts +0 -318
- package/src/architecture/CONTEXT.md +0 -22
- package/src/architecture/constraint-engine.ts +0 -351
- package/src/architecture/cross-project-checker.ts +0 -545
- package/src/cli/commands/index.ts +0 -30
- package/src/context/__tests__/file-budget.test.ts +0 -142
- package/src/context/__tests__/progressive-loader.test.ts +0 -264
- package/src/context/__tests__/token-pipeline.test.ts +0 -178
- package/src/context/__tests__/tool-output-budget.test.ts +0 -95
- package/src/context/file-budget.ts +0 -142
- package/src/context/progressive-loader.ts +0 -260
- package/src/context/token-pipeline.ts +0 -265
- package/src/context/tool-output-budget.ts +0 -178
- package/src/core/constraints/__tests__/default-executors.test.ts +0 -57
- package/src/core/constraints/default-executors.ts +0 -92
- package/src/llm/CONTEXT.md +0 -21
- package/src/llm/__tests__/adapter.test.ts +0 -172
- package/src/llm/adapter.ts +0 -149
- package/src/llm/index.ts +0 -2
- package/src/llm/types.ts +0 -81
- package/src/tools/__tests__/loader.test.ts +0 -252
- package/src/tools/__tests__/registry.test.ts +0 -157
- package/src/tools/core/__tests__/core.test.ts +0 -122
- package/src/tools/core/index.ts +0 -201
- package/src/tools/loader.ts +0 -216
- package/src/tools/registry.ts +0 -128
- package/src/tools/types.ts +0 -46
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constraint.d.ts","sourceRoot":"","sources":["../../src/types/constraint.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"constraint.d.ts","sourceRoot":"","sources":["../../src/types/constraint.ts"],"names":[],"mappings":"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"}
|
package/dist/types/constraint.js
CHANGED
|
@@ -7,9 +7,6 @@
|
|
|
7
7
|
* - iron_law:绝对禁止,无例外,违背即阻止执行
|
|
8
8
|
* - guideline:优先建议,有例外,违背发警告但不阻止
|
|
9
9
|
* - prompt:纯文本提示,仅参与 prompt 注入,不占检查位、不产生 trace
|
|
10
|
-
*
|
|
11
|
-
* 'tip' 层级已随 TIPS 退役(ADR-0001),仅保留在类型上以兼容
|
|
12
|
-
* ConstraintCheckResult.tips 等历史结果形态,不再有新定义使用。
|
|
13
10
|
*/
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
12
|
exports.ConstraintViolationError = void 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../src/types/constraint.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"constraint.js","sourceRoot":"","sources":["../../src/types/constraint.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAgQH;;GAEG;AACH,MAAa,wBAAyB,SAAQ,KAAK;IACjC,MAAM,CAAmB;IAEzC,YAAY,MAAwB;QAClC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AARD,4DAQC"}
|
|
@@ -243,8 +243,6 @@ export interface MergedConstraintsConfig {
|
|
|
243
243
|
ironLaws: Record<string, Constraint>;
|
|
244
244
|
/** Guidelines(合并后) */
|
|
245
245
|
guidelines: Record<string, Constraint>;
|
|
246
|
-
/** Tips(合并后)—— 已退役(ADR-0001),内置侧恒为空表,仅兼容历史调用方 */
|
|
247
|
-
tips: Record<string, Constraint>;
|
|
248
246
|
/** Prompts(合并后,ADR-0001 新增;可选以兼容旧调用方,缺省回落内置 PROMPTS) */
|
|
249
247
|
prompts?: Record<string, Constraint>;
|
|
250
248
|
/** 禁用的约束 ID */
|
|
@@ -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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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* 文件遍历工具(工单 19)
|
|
3
3
|
*
|
|
4
|
-
* 收敛此前散落在 sync-docs /
|
|
5
|
-
*
|
|
4
|
+
* 收敛此前散落在 sync-docs / checker / spec-baseline-check /
|
|
5
|
+
* doc-freshness-check / spec/annotation-checker 中的递归遍历实现。
|
|
6
6
|
*/
|
|
7
7
|
export interface FileWalkOptions {
|
|
8
8
|
/** 需要整体跳过的目录名(精确匹配) */
|
package/dist/utils/file-walk.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* 文件遍历工具(工单 19)
|
|
4
4
|
*
|
|
5
|
-
* 收敛此前散落在 sync-docs /
|
|
6
|
-
*
|
|
5
|
+
* 收敛此前散落在 sync-docs / checker / spec-baseline-check /
|
|
6
|
+
* doc-freshness-check / spec/annotation-checker 中的递归遍历实现。
|
|
7
7
|
*/
|
|
8
8
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
9
|
if (k2 === undefined) k2 = k;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dommaker/harness",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "通用工程约束框架 - 铁律系统、检查点验证、测试门控、拦截器",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"harness",
|
|
@@ -36,6 +36,11 @@
|
|
|
36
36
|
"types": "./dist/context/index.d.ts",
|
|
37
37
|
"require": "./dist/context/index.js",
|
|
38
38
|
"import": "./dist/context/index.js"
|
|
39
|
+
},
|
|
40
|
+
"./gates": {
|
|
41
|
+
"types": "./dist/gates/index.d.ts",
|
|
42
|
+
"require": "./dist/gates/index.js",
|
|
43
|
+
"import": "./dist/gates/index.js"
|
|
39
44
|
}
|
|
40
45
|
},
|
|
41
46
|
"files": [
|
|
@@ -79,10 +84,10 @@
|
|
|
79
84
|
},
|
|
80
85
|
"repository": {
|
|
81
86
|
"type": "git",
|
|
82
|
-
"url": "https://github.com/
|
|
87
|
+
"url": "https://github.com/dommaker/harness.git"
|
|
83
88
|
},
|
|
84
89
|
"bugs": {
|
|
85
|
-
"url": "https://github.com/
|
|
90
|
+
"url": "https://github.com/dommaker/harness/issues"
|
|
86
91
|
},
|
|
87
|
-
"homepage": "https://github.com/
|
|
92
|
+
"homepage": "https://github.com/dommaker/harness#readme"
|
|
88
93
|
}
|
package/src/CONTEXT.md
CHANGED
|
@@ -28,6 +28,20 @@
|
|
|
28
28
|
- `src/gates/` 依赖 `src/core/` 类型
|
|
29
29
|
- `src/cli/` 依赖所有模块
|
|
30
30
|
|
|
31
|
+
## 术语
|
|
32
|
+
|
|
33
|
+
词典(#30 术语裁决;详见 `docs/adr/0002-registry-closed-loop.md`):
|
|
34
|
+
|
|
35
|
+
| 术语 | 定义 |
|
|
36
|
+
|------|------|
|
|
37
|
+
| 插件 | harness 扩展点统称 = hook / checker / 门禁(Gate) / 命令(CLI);非运行时插件容器——harness 是文件驱动 CLI、无常驻进程 |
|
|
38
|
+
| Gate(门禁) | 统一守卫接口 `Gate{id, order, evaluate(ctx)}` → `GateDecision`;统一的是决策协议(id/order/三态),执行细节私有 |
|
|
39
|
+
| GateDecision | 三态决策 `deny \| abstain \| ask`;deny 单调(下游不可改回 allow)、ask 枚举预留 fail-closed = deny |
|
|
40
|
+
| GateResult | 报告结构(gate/passed/message/details/timestamp/duration),保留为报告层,不作决策 |
|
|
41
|
+
| 守卫 guard | 仅 dsh 借鉴语境(工具管线单调守卫),不进入 harness 命名 |
|
|
42
|
+
| 回滚 | 分工:版本化回退(单段——yml 数据文件 git 版本化,删段恢复)+ 提案回滚(多段 inverse,挂 #82 D6) |
|
|
43
|
+
| 文件驱动 CLI | yml 状态真值 + 一次性进程、无常驻生命周期;故不引 dispose 链(止步档 1) |
|
|
44
|
+
|
|
31
45
|
## 注意事项
|
|
32
46
|
- 公共包,禁止硬编码业务路径
|
|
33
47
|
- 约束定义在 `core/constraints/definitions/{iron-laws,guidelines,prompts}.ts`,不应在运行时代码中定义
|
|
@@ -494,7 +494,6 @@ describe('ConstraintChecker - 补充覆盖', () => {
|
|
|
494
494
|
// 这个测试的目的是验证 filterByTrigger 逻辑
|
|
495
495
|
expect(Array.isArray(result.ironLaws)).toBe(true);
|
|
496
496
|
expect(Array.isArray(result.guidelines)).toBe(true);
|
|
497
|
-
expect(Array.isArray(result.tips)).toBe(true);
|
|
498
497
|
});
|
|
499
498
|
});
|
|
500
499
|
|
|
@@ -541,31 +540,22 @@ describe('ConstraintChecker - 补充覆盖', () => {
|
|
|
541
540
|
|
|
542
541
|
expect(result.ironLaws).toBeDefined();
|
|
543
542
|
expect(result.guidelines).toBeDefined();
|
|
544
|
-
expect(result.tips).toBeDefined();
|
|
545
543
|
expect(typeof result.passed).toBe('boolean');
|
|
546
544
|
expect(typeof result.warningCount).toBe('number');
|
|
547
|
-
expect(typeof result.tipCount).toBe('number');
|
|
548
545
|
});
|
|
549
546
|
});
|
|
550
547
|
|
|
551
548
|
describe('自定义约束配置', () => {
|
|
552
|
-
it('
|
|
553
|
-
checker.
|
|
549
|
+
it('per-request customConfig 应该生效', () => {
|
|
550
|
+
const constraints = checker.getConstraints({
|
|
554
551
|
ironLaws: {},
|
|
555
552
|
guidelines: {},
|
|
556
|
-
tips: {},
|
|
557
553
|
disabled: [],
|
|
558
554
|
custom: [],
|
|
559
555
|
});
|
|
560
556
|
|
|
561
|
-
const constraints = checker.getConstraints();
|
|
562
|
-
|
|
563
557
|
expect(constraints.ironLaws).toEqual({});
|
|
564
558
|
expect(constraints.guidelines).toEqual({});
|
|
565
|
-
expect(constraints.tips).toEqual({});
|
|
566
|
-
|
|
567
|
-
// 重置为默认
|
|
568
|
-
(checker as any).customConfig = null;
|
|
569
559
|
});
|
|
570
560
|
});
|
|
571
561
|
|
|
@@ -613,26 +603,6 @@ describe('ConstraintChecker - 补充覆盖', () => {
|
|
|
613
603
|
expect(result).toBeDefined();
|
|
614
604
|
});
|
|
615
605
|
|
|
616
|
-
it('tip 应该返回 info', async () => {
|
|
617
|
-
const context: ConstraintContext = {
|
|
618
|
-
operation: 'code_implementation',
|
|
619
|
-
};
|
|
620
|
-
|
|
621
|
-
const result = await checker.check(
|
|
622
|
-
{
|
|
623
|
-
id: 'test_severity_tip',
|
|
624
|
-
kind: 'prompt',
|
|
625
|
-
level: 'tip',
|
|
626
|
-
rule: 'TEST',
|
|
627
|
-
message: 'test',
|
|
628
|
-
trigger: 'code_implementation',
|
|
629
|
-
enforcement: 'test',
|
|
630
|
-
},
|
|
631
|
-
context
|
|
632
|
-
);
|
|
633
|
-
|
|
634
|
-
expect(result).toBeDefined();
|
|
635
|
-
});
|
|
636
606
|
});
|
|
637
607
|
|
|
638
608
|
describe('checkException 例外豁免', () => {
|
|
@@ -1448,7 +1418,6 @@ describe('ConstraintChecker - 补充覆盖', () => {
|
|
|
1448
1418
|
},
|
|
1449
1419
|
},
|
|
1450
1420
|
guidelines: {},
|
|
1451
|
-
tips: {},
|
|
1452
1421
|
disabled: [] as string[],
|
|
1453
1422
|
custom: [] as string[],
|
|
1454
1423
|
};
|
|
@@ -1482,7 +1451,6 @@ describe('ConstraintChecker - 补充覆盖', () => {
|
|
|
1482
1451
|
},
|
|
1483
1452
|
},
|
|
1484
1453
|
guidelines: {},
|
|
1485
|
-
tips: {},
|
|
1486
1454
|
disabled: [] as string[],
|
|
1487
1455
|
custom: [] as string[],
|
|
1488
1456
|
};
|
|
@@ -1500,7 +1468,6 @@ describe('ConstraintChecker - 补充覆盖', () => {
|
|
|
1500
1468
|
},
|
|
1501
1469
|
},
|
|
1502
1470
|
guidelines: {},
|
|
1503
|
-
tips: {},
|
|
1504
1471
|
disabled: [] as string[],
|
|
1505
1472
|
custom: [] as string[],
|
|
1506
1473
|
};
|
|
@@ -1535,29 +1502,6 @@ describe('ConstraintChecker - 补充覆盖', () => {
|
|
|
1535
1502
|
expect(ironLawIdsB).not.toContain('rule_a');
|
|
1536
1503
|
});
|
|
1537
1504
|
|
|
1538
|
-
it('setCustomConfig 仍可用于兼容(但应标记 deprecated)', () => {
|
|
1539
|
-
const checker = ConstraintChecker.getInstance();
|
|
1540
|
-
const defaultConstraints = checker.getConstraints();
|
|
1541
|
-
const defaultKeys = Object.keys(defaultConstraints.ironLaws);
|
|
1542
|
-
|
|
1543
|
-
const customConfig = {
|
|
1544
|
-
ironLaws: { compat_test: { id: 'compat_test', kind: 'prompt' as const, level: 'iron_law' as const, rule: 'C', message: 'compat', trigger: 'file_modification', enforcement: 'test' } },
|
|
1545
|
-
guidelines: {},
|
|
1546
|
-
tips: {},
|
|
1547
|
-
disabled: [] as string[],
|
|
1548
|
-
custom: [] as string[],
|
|
1549
|
-
};
|
|
1550
|
-
|
|
1551
|
-
checker.setCustomConfig(customConfig);
|
|
1552
|
-
const modified = checker.getConstraints();
|
|
1553
|
-
expect(Object.keys(modified.ironLaws)).toEqual(['compat_test']);
|
|
1554
|
-
|
|
1555
|
-
// 恢复默认
|
|
1556
|
-
checker.setCustomConfig(null as any);
|
|
1557
|
-
const restored = checker.getConstraints();
|
|
1558
|
-
expect(Object.keys(restored.ironLaws)).toEqual(defaultKeys);
|
|
1559
|
-
});
|
|
1560
|
-
|
|
1561
1505
|
it('findApplicableConstraints 应接受 per-request config', () => {
|
|
1562
1506
|
const checker = ConstraintChecker.getInstance();
|
|
1563
1507
|
|
|
@@ -1574,7 +1518,6 @@ describe('ConstraintChecker - 补充覆盖', () => {
|
|
|
1574
1518
|
},
|
|
1575
1519
|
},
|
|
1576
1520
|
guidelines: {},
|
|
1577
|
-
tips: {},
|
|
1578
1521
|
disabled: [] as string[],
|
|
1579
1522
|
custom: [] as string[],
|
|
1580
1523
|
};
|
|
@@ -2,24 +2,12 @@
|
|
|
2
2
|
* ConstraintDoctor 测试
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import { describe, it, expect, beforeAll, afterAll
|
|
5
|
+
import { describe, it, expect, beforeAll, afterAll } from '@jest/globals';
|
|
6
6
|
import { ConstraintDoctor } from '../monitoring/constraint-doctor';
|
|
7
7
|
import type { TraceAnomaly } from '../types/trace';
|
|
8
|
-
import type { LLMAdapter, Message, LLMOptions } from '../llm/types';
|
|
9
8
|
import * as fs from 'fs';
|
|
10
9
|
import * as path from 'path';
|
|
11
10
|
|
|
12
|
-
function createMockLLM(response: string): LLMAdapter & { complete: jest.Mock } {
|
|
13
|
-
const mock = {
|
|
14
|
-
complete: jest.fn<(prompt: string, options?: LLMOptions) => Promise<string>>().mockResolvedValue(response),
|
|
15
|
-
chat: jest.fn<(messages: Message[], options?: LLMOptions) => Promise<string>>().mockResolvedValue(''),
|
|
16
|
-
streamChat: jest.fn(),
|
|
17
|
-
summarize: jest.fn(),
|
|
18
|
-
extract: jest.fn(),
|
|
19
|
-
};
|
|
20
|
-
return mock as unknown as LLMAdapter & { complete: jest.Mock };
|
|
21
|
-
}
|
|
22
|
-
|
|
23
11
|
describe('ConstraintDoctor', () => {
|
|
24
12
|
const tempDir = path.join(process.cwd(), 'temp-test-doctor');
|
|
25
13
|
let doctor: ConstraintDoctor;
|
|
@@ -280,131 +268,4 @@ describe('ConstraintDoctor', () => {
|
|
|
280
268
|
expect(d).toBeDefined();
|
|
281
269
|
});
|
|
282
270
|
});
|
|
283
|
-
|
|
284
|
-
describe('agentDiagnose - LLM 深度诊断', () => {
|
|
285
|
-
it('LLM 未启用时应该返回规则诊断', async () => {
|
|
286
|
-
const mockLLM = createMockLLM('{}');
|
|
287
|
-
const d = new ConstraintDoctor({ enabled: false }, mockLLM);
|
|
288
|
-
const anomaly: TraceAnomaly = {
|
|
289
|
-
type: 'high_bypass_rate',
|
|
290
|
-
constraintId: 'test',
|
|
291
|
-
level: 'guideline',
|
|
292
|
-
message: 'test',
|
|
293
|
-
data: { currentRate: 0.5, threshold: 0.3 },
|
|
294
|
-
detectedAt: Date.now(),
|
|
295
|
-
};
|
|
296
|
-
|
|
297
|
-
const diagnosis = await d.diagnose(anomaly);
|
|
298
|
-
|
|
299
|
-
expect(diagnosis.rootCause.primary).toContain('绕过');
|
|
300
|
-
expect(mockLLM.complete).not.toHaveBeenCalled();
|
|
301
|
-
});
|
|
302
|
-
|
|
303
|
-
it('LLM 启用时应该调用 LLM 并合并结果', async () => {
|
|
304
|
-
const llmResponse = JSON.stringify({
|
|
305
|
-
rootCause: { primary: 'LLM 发现的根因', secondary: ['原因A', '原因B'] },
|
|
306
|
-
impact: { severity: 'high', scope: 'team', userImpact: 'LLM 发现的影响' },
|
|
307
|
-
recommendations: [{ type: 'modify_constraint', content: 'LLM 建议', expectedOutcome: '改善', implementationCost: 'low' }],
|
|
308
|
-
needsChange: true,
|
|
309
|
-
urgency: 'high',
|
|
310
|
-
});
|
|
311
|
-
const mockLLM = createMockLLM(llmResponse);
|
|
312
|
-
const d = new ConstraintDoctor({ enabled: true }, mockLLM);
|
|
313
|
-
const anomaly: TraceAnomaly = {
|
|
314
|
-
type: 'high_bypass_rate',
|
|
315
|
-
constraintId: 'test-constraint',
|
|
316
|
-
level: 'guideline',
|
|
317
|
-
message: 'test',
|
|
318
|
-
data: { currentRate: 0.5, threshold: 0.3 },
|
|
319
|
-
detectedAt: Date.now(),
|
|
320
|
-
};
|
|
321
|
-
|
|
322
|
-
const diagnosis = await d.diagnose(anomaly);
|
|
323
|
-
|
|
324
|
-
expect(mockLLM.complete).toHaveBeenCalledTimes(1);
|
|
325
|
-
expect(diagnosis.rootCause.primary).toBe('LLM 发现的根因');
|
|
326
|
-
expect(diagnosis.impact.severity).toBe('high');
|
|
327
|
-
expect(diagnosis.recommendations[0].content).toBe('LLM 建议');
|
|
328
|
-
});
|
|
329
|
-
|
|
330
|
-
it('LLM 返回被代码块包裹的 JSON 应该正确解析', async () => {
|
|
331
|
-
const llmResponse = '```json\n{"rootCause":{"primary":"嵌套JSON根因"},"needsChange":true}\n```';
|
|
332
|
-
const mockLLM = createMockLLM(llmResponse);
|
|
333
|
-
const d = new ConstraintDoctor({ enabled: true }, mockLLM);
|
|
334
|
-
const anomaly: TraceAnomaly = {
|
|
335
|
-
type: 'rising_fail_rate',
|
|
336
|
-
constraintId: 'test',
|
|
337
|
-
level: 'guideline',
|
|
338
|
-
message: 'test',
|
|
339
|
-
data: { currentRate: 0.5, threshold: 0.3, trend: 'rising' },
|
|
340
|
-
detectedAt: Date.now(),
|
|
341
|
-
};
|
|
342
|
-
|
|
343
|
-
const diagnosis = await d.diagnose(anomaly);
|
|
344
|
-
|
|
345
|
-
expect(diagnosis.rootCause.primary).toBe('嵌套JSON根因');
|
|
346
|
-
});
|
|
347
|
-
|
|
348
|
-
it('LLM 调用失败应该降级到规则诊断', async () => {
|
|
349
|
-
const mockLLM = createMockLLM('');
|
|
350
|
-
(mockLLM.complete as any).mockRejectedValue(new Error('API error'));
|
|
351
|
-
const d = new ConstraintDoctor({ enabled: true }, mockLLM);
|
|
352
|
-
const anomaly: TraceAnomaly = {
|
|
353
|
-
type: 'low_pass_rate',
|
|
354
|
-
constraintId: 'test',
|
|
355
|
-
level: 'guideline',
|
|
356
|
-
message: 'test',
|
|
357
|
-
data: { currentRate: 0.1, threshold: 0.5 },
|
|
358
|
-
detectedAt: Date.now(),
|
|
359
|
-
};
|
|
360
|
-
|
|
361
|
-
const diagnosis = await d.diagnose(anomaly);
|
|
362
|
-
|
|
363
|
-
// 降级到规则诊断
|
|
364
|
-
expect(diagnosis.rootCause.primary).toContain('通过率');
|
|
365
|
-
expect(diagnosis.needsChange).toBe(true);
|
|
366
|
-
});
|
|
367
|
-
|
|
368
|
-
it('LLM 返回无效 JSON 庙该降级到规则诊断', async () => {
|
|
369
|
-
const mockLLM = createMockLLM('这不是 JSON');
|
|
370
|
-
const d = new ConstraintDoctor({ enabled: true }, mockLLM);
|
|
371
|
-
const anomaly: TraceAnomaly = {
|
|
372
|
-
type: 'exception_overuse',
|
|
373
|
-
constraintId: 'test',
|
|
374
|
-
level: 'guideline',
|
|
375
|
-
message: 'test',
|
|
376
|
-
data: { currentRate: 0.6, threshold: 0.2 },
|
|
377
|
-
detectedAt: Date.now(),
|
|
378
|
-
};
|
|
379
|
-
|
|
380
|
-
const diagnosis = await d.diagnose(anomaly);
|
|
381
|
-
|
|
382
|
-
// 降级到规则诊断
|
|
383
|
-
expect(diagnosis.rootCause.primary).toContain('例外');
|
|
384
|
-
});
|
|
385
|
-
|
|
386
|
-
it('应该将 traces 摘要传入 prompt', async () => {
|
|
387
|
-
const mockLLM = createMockLLM('{}');
|
|
388
|
-
const d = new ConstraintDoctor({ enabled: true, maxTracesInPrompt: 5 }, mockLLM);
|
|
389
|
-
d.setData([
|
|
390
|
-
{ constraintId: 'test', result: 'fail', timestamp: Date.now() } as any,
|
|
391
|
-
{ constraintId: 'test', result: 'bypassed', timestamp: Date.now() } as any,
|
|
392
|
-
]);
|
|
393
|
-
const anomaly: TraceAnomaly = {
|
|
394
|
-
type: 'high_bypass_rate',
|
|
395
|
-
constraintId: 'test',
|
|
396
|
-
level: 'guideline',
|
|
397
|
-
message: 'test',
|
|
398
|
-
data: { currentRate: 0.5, threshold: 0.3 },
|
|
399
|
-
detectedAt: Date.now(),
|
|
400
|
-
};
|
|
401
|
-
|
|
402
|
-
await d.diagnose(anomaly);
|
|
403
|
-
|
|
404
|
-
const prompt = (mockLLM.complete as jest.Mock).mock.calls[0][0] as string;
|
|
405
|
-
expect(prompt).toContain('test');
|
|
406
|
-
expect(prompt).toContain('fail');
|
|
407
|
-
expect(prompt).toContain('bypassed');
|
|
408
|
-
});
|
|
409
|
-
});
|
|
410
271
|
});
|
|
@@ -15,10 +15,8 @@ function makePassingResult(): ConstraintCheckResult {
|
|
|
15
15
|
return {
|
|
16
16
|
ironLaws: [{ id: 'test_law', level: 'iron_law', satisfied: true, checkedAt: new Date() }],
|
|
17
17
|
guidelines: [],
|
|
18
|
-
tips: [],
|
|
19
18
|
passed: true,
|
|
20
19
|
warningCount: 0,
|
|
21
|
-
tipCount: 0,
|
|
22
20
|
};
|
|
23
21
|
}
|
|
24
22
|
|
|
@@ -26,10 +24,8 @@ function makeFailingResult(): ConstraintCheckResult {
|
|
|
26
24
|
return {
|
|
27
25
|
ironLaws: [{ id: 'test_law', level: 'iron_law', satisfied: false, message: '违规', checkedAt: new Date() }],
|
|
28
26
|
guidelines: [{ id: 'guide', level: 'guideline', satisfied: false, checkedAt: new Date() }],
|
|
29
|
-
tips: [],
|
|
30
27
|
passed: false,
|
|
31
28
|
warningCount: 1,
|
|
32
|
-
tipCount: 0,
|
|
33
29
|
};
|
|
34
30
|
}
|
|
35
31
|
|
|
@@ -66,26 +66,6 @@ custom_constraints:
|
|
|
66
66
|
expect(merged.ironLaws['my_iron_law']).toBeDefined();
|
|
67
67
|
});
|
|
68
68
|
|
|
69
|
-
it('应该正确分类 tip 级别约束', () => {
|
|
70
|
-
fs.writeFileSync(
|
|
71
|
-
path.join(harnessDir, 'config.yml'),
|
|
72
|
-
`
|
|
73
|
-
custom_constraints:
|
|
74
|
-
my_tip:
|
|
75
|
-
rule: MY TIP
|
|
76
|
-
message: Tip message
|
|
77
|
-
level: tip
|
|
78
|
-
trigger: commit
|
|
79
|
-
`
|
|
80
|
-
);
|
|
81
|
-
|
|
82
|
-
const loader = new ProjectConfigLoader(tempDir);
|
|
83
|
-
loader.load();
|
|
84
|
-
const merged = loader.mergeConstraints();
|
|
85
|
-
|
|
86
|
-
expect(merged.tips['my_tip']).toBeDefined();
|
|
87
|
-
});
|
|
88
|
-
|
|
89
69
|
it('默认应该分类为 guideline', () => {
|
|
90
70
|
fs.writeFileSync(
|
|
91
71
|
path.join(harnessDir, 'config.yml'),
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
# cli/commands/
|
|
2
2
|
|
|
3
3
|
## 职责
|
|
4
|
-
CLI 子命令实现:24 个顶层命令 + constraints 治理子命令 report/retire
|
|
4
|
+
CLI 子命令实现:24 个顶层命令 + constraints 治理子命令 report/retire,覆盖约束检查/门禁验证/文档同步/知识管理/失败诊断/发布/会话分析等。
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
H5(#44)起:
|
|
7
|
+
- **命令定义即注册**:`definitions.ts` 的 `COMMAND_DEFINITIONS` 是命令形状(名称/别名/位置参数/选项/子命令/实现引用)的单一来源;bin/harness.js 遍历本表注册表驱动生成,不再手写 commander 命令块,不再有 index.ts barrel 两处同步(R6)
|
|
8
|
+
- **per-command 懒加载**(O2):定义表存实现引用 `{ module, export }`,bin 只在 action 执行时 require 对应命令模块,任一命令执行不再加载全部命令实现
|
|
9
|
+
|
|
10
|
+
## 核心导出
|
|
11
|
+
- `COMMAND_DEFINITIONS`(definitions.ts)— 全部非门禁命令定义(纯数据模块,禁止 import 命令实现)
|
|
12
|
+
- 各命令文件:check / validate / passes-gate / init / report / status / spec / sync-docs / knowledge / sdd / failure / posteval-plan / release / analyze-sessions / update-user-model / constraints / doc-freshness-check / spec-baseline-check
|
|
13
|
+
- 6 门禁命令实现在 `acceptance` / `command` / `contract` / `performance` / `review` / `security`(其 CLI 元数据在 `src/gates/definitions.ts`)
|
|
8
14
|
|
|
9
15
|
`constraints` 下挂治理子命令:`constraints report`(使用统计 + 退役候选诊断 + 配置健康 + 注入漂移,`--export` 脱敏)、`constraints retire`(交互选择 + 人确认退役;带 id 直达需显式 `--yes`(#24 人确认闸门),无 `--yes` 报错 + 非零退出码且不落盘;内置落 config.yml retired 元数据,custom 落 custom-constraints.yml 条目 retired 段(#82 D6 一处真相)+ KnowledgeStore 沉淀 + CLAUDE.md 注入段同步)。
|
|
10
16
|
|
|
@@ -14,13 +20,15 @@ check / validate / passes-gate / init / report / status / spec / acceptance / pe
|
|
|
14
20
|
- 依赖 `src/monitoring/` 追踪/诊断
|
|
15
21
|
- 依赖 `src/knowledge/` 知识引擎
|
|
16
22
|
- 依赖 `src/failure/` 失败记录
|
|
17
|
-
- 被 `bin/harness.js` CLI
|
|
23
|
+
- 被 `bin/harness.js` CLI 入口按定义表驱动生成
|
|
18
24
|
|
|
19
25
|
## 约定
|
|
20
|
-
-
|
|
21
|
-
-
|
|
26
|
+
- 每个命令一个实现文件,命名与命令名一致(sync-docs 为模块族目录)
|
|
27
|
+
- **新增命令 = 命令实现文件 + definitions.ts 一条定义(含 CLI 元数据与实现引用)+ 测试**,不再改 bin/harness.js
|
|
28
|
+
- **definitions.ts 是纯数据模块**:禁止 import 任何命令实现/运行时依赖(保 --help/--version 懒加载);实现引用可解析性由 `__tests__/registry.test.ts` 构建/测试期断言
|
|
22
29
|
- 命令选项类型命名规范:XxxOptions
|
|
23
30
|
|
|
24
31
|
## 注意事项
|
|
25
32
|
- 新增命令需同步更新 CLAUDE.md / CAPABILITIES.md / src/CONTEXT.md
|
|
26
|
-
- knowledge 命令包含
|
|
33
|
+
- knowledge 命令包含 13 个子操作(list/search/import/decay/stats/upsert/sync-status/sync-rag/audit/snapshot/migrate/index/health)
|
|
34
|
+
- 特殊路由(选项条件、子命令兜底、退出码处理)表达在定义表的 optionRoutes / subcommands / afterRun 字段,bin 是纯通用引擎、不含单命令知识
|