@dommaker/harness 0.11.1 → 0.12.1
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/README.md +70 -174
- package/dist/architecture/cross-project-checker.d.ts +4 -2
- package/dist/architecture/cross-project-checker.d.ts.map +1 -1
- package/dist/architecture/cross-project-checker.js +71 -6
- package/dist/architecture/cross-project-checker.js.map +1 -1
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +37 -9
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/report.d.ts.map +1 -1
- package/dist/cli/commands/report.js +5 -8
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/sync-docs.js +7 -5
- package/dist/cli/commands/sync-docs.js.map +1 -1
- package/dist/constraints/registry.d.ts +2 -1
- package/dist/constraints/registry.d.ts.map +1 -1
- package/dist/constraints/registry.js +7 -7
- package/dist/constraints/registry.js.map +1 -1
- package/dist/constraints/types.d.ts +2 -2
- package/dist/constraints/types.d.ts.map +1 -1
- package/dist/context/session-manager.d.ts +24 -7
- package/dist/context/session-manager.d.ts.map +1 -1
- package/dist/context/session-manager.js +71 -12
- package/dist/context/session-manager.js.map +1 -1
- package/dist/core/constraints/check-cache.d.ts +38 -0
- package/dist/core/constraints/check-cache.d.ts.map +1 -0
- package/dist/core/constraints/check-cache.js +75 -0
- package/dist/core/constraints/check-cache.js.map +1 -0
- package/dist/core/constraints/checker.d.ts +99 -12
- package/dist/core/constraints/checker.d.ts.map +1 -1
- package/dist/core/constraints/checker.js +432 -47
- package/dist/core/constraints/checker.js.map +1 -1
- package/dist/core/constraints/definitions.d.ts.map +1 -1
- package/dist/core/constraints/definitions.js +328 -34
- package/dist/core/constraints/definitions.js.map +1 -1
- package/dist/core/constraints/index.d.ts +1 -1
- package/dist/core/constraints/index.d.ts.map +1 -1
- package/dist/core/constraints/index.js +2 -1
- package/dist/core/constraints/index.js.map +1 -1
- package/dist/core/constraints/interceptor.d.ts +1 -0
- package/dist/core/constraints/interceptor.d.ts.map +1 -1
- package/dist/core/constraints/interceptor.js +38 -44
- package/dist/core/constraints/interceptor.js.map +1 -1
- package/dist/core/session/clean-state.js +1 -1
- package/dist/core/session/clean-state.js.map +1 -1
- package/dist/core/session/startup.d.ts.map +1 -1
- package/dist/core/session/startup.js +2 -3
- package/dist/core/session/startup.js.map +1 -1
- package/dist/core/validators/passes-gate.js +1 -1
- package/dist/core/validators/passes-gate.js.map +1 -1
- package/dist/failure/constraint-handler.d.ts +83 -0
- package/dist/failure/constraint-handler.d.ts.map +1 -0
- package/dist/failure/constraint-handler.js +140 -0
- package/dist/failure/constraint-handler.js.map +1 -0
- package/dist/failure/index.d.ts +1 -0
- package/dist/failure/index.d.ts.map +1 -1
- package/dist/failure/index.js +7 -1
- package/dist/failure/index.js.map +1 -1
- package/dist/hooks/bootstrap.d.ts +50 -0
- package/dist/hooks/bootstrap.d.ts.map +1 -0
- package/dist/hooks/bootstrap.js +137 -0
- package/dist/hooks/bootstrap.js.map +1 -0
- package/dist/hooks/index.d.ts +11 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +32 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/pipeline.d.ts +36 -0
- package/dist/hooks/pipeline.d.ts.map +1 -0
- package/dist/hooks/pipeline.js +135 -0
- package/dist/hooks/pipeline.js.map +1 -0
- package/dist/hooks/registry.d.ts +50 -0
- package/dist/hooks/registry.d.ts.map +1 -0
- package/dist/hooks/registry.js +81 -0
- package/dist/hooks/registry.js.map +1 -0
- package/dist/hooks/types.d.ts +75 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +9 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/presets/index.d.ts +1 -1
- package/dist/presets/index.d.ts.map +1 -1
- package/dist/presets/index.js +2 -1
- package/dist/presets/index.js.map +1 -1
- package/dist/presets/standard.d.ts +17 -0
- package/dist/presets/standard.d.ts.map +1 -1
- package/dist/presets/standard.js +50 -1
- package/dist/presets/standard.js.map +1 -1
- package/dist/types/constraint.d.ts +38 -1
- package/dist/types/constraint.d.ts.map +1 -1
- package/dist/types/constraint.js +29 -1
- package/dist/types/constraint.js.map +1 -1
- package/dist/types/session.d.ts +1 -0
- package/dist/types/session.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -15,6 +15,8 @@ export declare class ConstraintChecker {
|
|
|
15
15
|
private static instance;
|
|
16
16
|
/** 自定义约束配置(项目级) */
|
|
17
17
|
private customConfig;
|
|
18
|
+
/** 检查结果缓存(S7:减少重复 git diff / src scan I/O,TTL=1s 防跨测试污染) */
|
|
19
|
+
private cache;
|
|
18
20
|
private constructor();
|
|
19
21
|
/**
|
|
20
22
|
* 获取单例实例
|
|
@@ -22,15 +24,26 @@ export declare class ConstraintChecker {
|
|
|
22
24
|
static getInstance(): ConstraintChecker;
|
|
23
25
|
/**
|
|
24
26
|
* 设置项目级约束配置
|
|
27
|
+
*
|
|
28
|
+
* @deprecated 修改单例状态,多项目并发时存在污染风险。
|
|
29
|
+
* 请改用 checkConstraints() / beforeExecution() 的 customConfig 参数实现 per-request 隔离。
|
|
25
30
|
*/
|
|
26
31
|
setCustomConfig(config: MergedConstraintsConfig): void;
|
|
27
32
|
/**
|
|
28
33
|
* 获取当前的约束集合(内置 + 自定义)
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
*
|
|
35
|
+
* @param customConfig 可选,per-request 自定义配置(优先级高于 setCustomConfig 的单例状态)
|
|
36
|
+
*/
|
|
37
|
+
getConstraints(customConfig?: MergedConstraintsConfig | null): {
|
|
38
|
+
ironLaws: Record<string, Constraint & {
|
|
39
|
+
check: (ctx: ConstraintContext) => Promise<ConstraintResult>;
|
|
40
|
+
}>;
|
|
41
|
+
guidelines: Record<string, Constraint & {
|
|
42
|
+
check: (ctx: ConstraintContext) => Promise<ConstraintResult>;
|
|
43
|
+
}>;
|
|
44
|
+
tips: Record<string, Constraint & {
|
|
45
|
+
check: (ctx: ConstraintContext) => Promise<ConstraintResult>;
|
|
46
|
+
}>;
|
|
34
47
|
};
|
|
35
48
|
/**
|
|
36
49
|
* 检查单个约束
|
|
@@ -56,6 +69,25 @@ export declare class ConstraintChecker {
|
|
|
56
69
|
* 检查约束前置条件
|
|
57
70
|
*/
|
|
58
71
|
private checkPrecondition;
|
|
72
|
+
/**
|
|
73
|
+
* 检查文本中是否包含模糊词
|
|
74
|
+
*/
|
|
75
|
+
private checkNoFuzzyWords;
|
|
76
|
+
/**
|
|
77
|
+
* 检查文本中是否包含表演性同意模式
|
|
78
|
+
*/
|
|
79
|
+
private checkNoPerformativePatterns;
|
|
80
|
+
/**
|
|
81
|
+
* 检查文本中是否包含借口模式
|
|
82
|
+
*/
|
|
83
|
+
private checkNoExcusePatterns;
|
|
84
|
+
/**
|
|
85
|
+
* 检查 YAGNI:过度设计信号
|
|
86
|
+
*
|
|
87
|
+
* 检查是否存在只有一个实现的 interface/abstract class。
|
|
88
|
+
* 主要由 promptInjection 驱动,这里是辅助检查。
|
|
89
|
+
*/
|
|
90
|
+
private checkYagni;
|
|
59
91
|
/**
|
|
60
92
|
* 检查 no_bypass_checkpoint:检查代码中是否有 skip/bypass 关键词
|
|
61
93
|
*/
|
|
@@ -69,7 +101,11 @@ export declare class ConstraintChecker {
|
|
|
69
101
|
*/
|
|
70
102
|
private checkNoAnyType;
|
|
71
103
|
/**
|
|
72
|
-
* 检查 capability_sync:检查 CAPABILITIES.md
|
|
104
|
+
* 检查 capability_sync:检查 CAPABILITIES.md 是否与代码同步
|
|
105
|
+
*
|
|
106
|
+
* 两步验证:
|
|
107
|
+
* 1. Git diff 检查 — 当前变更的非测试文件是否在文档中有记录(增量检查)
|
|
108
|
+
* 2. 全量扫描 — src/ 下的所有源文件是否都在 CAPABILITIES.md 中(完整性检查)
|
|
73
109
|
*/
|
|
74
110
|
private checkCapabilitySync;
|
|
75
111
|
/**
|
|
@@ -89,17 +125,36 @@ export declare class ConstraintChecker {
|
|
|
89
125
|
*/
|
|
90
126
|
private checkContextDocSync;
|
|
91
127
|
/**
|
|
92
|
-
* 检查 docs_freshness:CAPABILITIES.md 是否与源码同步
|
|
128
|
+
* 检查 docs_freshness:CAPABILITIES.md + CLAUDE.md 是否与源码同步
|
|
93
129
|
*/
|
|
94
130
|
private checkDocsFreshness;
|
|
131
|
+
/**
|
|
132
|
+
* 检查 CAPABILITIES.md 是否与源码同步
|
|
133
|
+
*/
|
|
134
|
+
private checkCapabilitiesFreshness;
|
|
135
|
+
/**
|
|
136
|
+
* 检查 CLAUDE.md 的 Domain Packages 和 Key Architecture Paths 段落是否与实际代码结构同步
|
|
137
|
+
*/
|
|
138
|
+
private checkClaudeMdFreshness;
|
|
139
|
+
/**
|
|
140
|
+
* 检查 CLAUDE.md Domain Packages 段落中列出的 packages/studio-* 目录是否都存在
|
|
141
|
+
*/
|
|
142
|
+
private checkDomainPackages;
|
|
143
|
+
/**
|
|
144
|
+
* 检查 CLAUDE.md Key Architecture Paths 段落中引用的路径是否存在
|
|
145
|
+
*/
|
|
146
|
+
private checkArchitecturePaths;
|
|
95
147
|
/**
|
|
96
148
|
* 查找 src/ 目录中的源文件
|
|
97
149
|
*/
|
|
98
150
|
private findSourceFiles;
|
|
99
151
|
/**
|
|
100
152
|
* 查找适用于当前操作的约束
|
|
153
|
+
*
|
|
154
|
+
* @param context 约束上下文
|
|
155
|
+
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
101
156
|
*/
|
|
102
|
-
findApplicableConstraints(context: ConstraintContext): {
|
|
157
|
+
findApplicableConstraints(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null): {
|
|
103
158
|
ironLaws: Constraint[];
|
|
104
159
|
guidelines: Constraint[];
|
|
105
160
|
tips: Constraint[];
|
|
@@ -110,14 +165,26 @@ export declare class ConstraintChecker {
|
|
|
110
165
|
* - Iron Laws:检查失败立即抛出异常
|
|
111
166
|
* - Guidelines:检查失败记录警告
|
|
112
167
|
* - Tips:检查失败记录提示
|
|
168
|
+
*
|
|
169
|
+
* @param context 约束上下文
|
|
170
|
+
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
171
|
+
*/
|
|
172
|
+
checkConstraints(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null): Promise<ConstraintCheckResult>;
|
|
173
|
+
/**
|
|
174
|
+
* S11: 安全全量检查 — 全部三层约束检查,不抛异常
|
|
175
|
+
*
|
|
176
|
+
* 区别 checkConstraints(): Iron Law 违规收集在结果中而不是抛异常。
|
|
177
|
+
* 调用方通过 result.passed + result.warningCount 判断状态。
|
|
113
178
|
*/
|
|
114
|
-
|
|
179
|
+
checkConstraintsSafe(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null): Promise<ConstraintCheckResult>;
|
|
115
180
|
/**
|
|
116
181
|
* 执行前检查(仅检查 Iron Laws)
|
|
117
182
|
*
|
|
183
|
+
* @param context 约束上下文
|
|
184
|
+
* @param customConfig 可选,per-request 自定义配置(避免多请求间的单例状态污染)
|
|
118
185
|
* @throws ConstraintViolationError 如果有铁律违规
|
|
119
186
|
*/
|
|
120
|
-
beforeExecution(context: ConstraintContext): Promise<void>;
|
|
187
|
+
beforeExecution(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null): Promise<void>;
|
|
121
188
|
}
|
|
122
189
|
/**
|
|
123
190
|
* 快捷函数:检查约束
|
|
@@ -125,12 +192,32 @@ export declare class ConstraintChecker {
|
|
|
125
192
|
export declare function checkConstraint(constraintId: string, context: ConstraintContext): Promise<ConstraintResult>;
|
|
126
193
|
/**
|
|
127
194
|
* 快捷函数:执行三层检查
|
|
195
|
+
*
|
|
196
|
+
* @param context 约束上下文
|
|
197
|
+
* @param customConfig 可选,per-request 自定义配置
|
|
198
|
+
*/
|
|
199
|
+
export declare function checkConstraints(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null): Promise<ConstraintCheckResult>;
|
|
200
|
+
/**
|
|
201
|
+
* S11: 快捷函数 — 安全全量检查(不抛异常)
|
|
128
202
|
*/
|
|
129
|
-
export declare function
|
|
203
|
+
export declare function checkConstraintsSafe(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null): Promise<ConstraintCheckResult>;
|
|
130
204
|
/**
|
|
131
205
|
* 快捷函数:执行前检查
|
|
206
|
+
*
|
|
207
|
+
* @param context 约束上下文
|
|
208
|
+
* @param customConfig 可选,per-request 自定义配置
|
|
209
|
+
*/
|
|
210
|
+
export declare function checkBeforeExecution(context: ConstraintContext, customConfig?: MergedConstraintsConfig | null): Promise<void>;
|
|
211
|
+
/**
|
|
212
|
+
* 构建约束注入 prompt
|
|
213
|
+
*
|
|
214
|
+
* 收集所有适用约束的 promptInjection 字段,格式化为 Agent system prompt 片段。
|
|
215
|
+
* 纯计算函数,无副作用,不调用 LLM。
|
|
216
|
+
*
|
|
217
|
+
* @param context 约束上下文(至少需要 operation 字段)
|
|
218
|
+
* @returns 格式化的约束提示文本,可直接注入 Agent system prompt;无匹配约束时返回空字符串
|
|
132
219
|
*/
|
|
133
|
-
export declare function
|
|
220
|
+
export declare function buildConstraintPrompt(context: ConstraintContext): string;
|
|
134
221
|
export declare const constraintChecker: ConstraintChecker;
|
|
135
222
|
/**
|
|
136
223
|
* @deprecated 使用 ConstraintChecker 代替
|
|
@@ -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,EAItB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../../src/core/constraints/checker.ts"],"names":[],"mappings":"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"}
|