@dommaker/harness 0.7.3 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +239 -2
  2. package/dist/architecture/constraint-engine.d.ts +49 -0
  3. package/dist/architecture/constraint-engine.d.ts.map +1 -0
  4. package/dist/architecture/constraint-engine.js +207 -0
  5. package/dist/architecture/constraint-engine.js.map +1 -0
  6. package/dist/architecture/cross-project-checker.d.ts +34 -0
  7. package/dist/architecture/cross-project-checker.d.ts.map +1 -0
  8. package/dist/architecture/cross-project-checker.js +260 -0
  9. package/dist/architecture/cross-project-checker.js.map +1 -0
  10. package/dist/context/progressive-loader.d.ts +110 -0
  11. package/dist/context/progressive-loader.d.ts.map +1 -0
  12. package/dist/context/progressive-loader.js +183 -0
  13. package/dist/context/progressive-loader.js.map +1 -0
  14. package/dist/context/token-budget.d.ts +144 -0
  15. package/dist/context/token-budget.d.ts.map +1 -0
  16. package/dist/context/token-budget.js +264 -0
  17. package/dist/context/token-budget.js.map +1 -0
  18. package/dist/core/constraints/definitions.d.ts.map +1 -1
  19. package/dist/core/constraints/definitions.js +33 -0
  20. package/dist/core/constraints/definitions.js.map +1 -1
  21. package/dist/core/index.d.ts +2 -0
  22. package/dist/core/index.d.ts.map +1 -1
  23. package/dist/core/index.js +4 -0
  24. package/dist/core/index.js.map +1 -1
  25. package/dist/failure/classifier.d.ts +63 -0
  26. package/dist/failure/classifier.d.ts.map +1 -0
  27. package/dist/failure/classifier.js +123 -0
  28. package/dist/failure/classifier.js.map +1 -0
  29. package/dist/failure/index.d.ts +10 -0
  30. package/dist/failure/index.d.ts.map +1 -0
  31. package/dist/failure/index.js +36 -0
  32. package/dist/failure/index.js.map +1 -0
  33. package/dist/failure/recorder.d.ts +78 -0
  34. package/dist/failure/recorder.d.ts.map +1 -0
  35. package/dist/failure/recorder.js +193 -0
  36. package/dist/failure/recorder.js.map +1 -0
  37. package/dist/failure/types.d.ts +89 -0
  38. package/dist/failure/types.d.ts.map +1 -0
  39. package/dist/failure/types.js +121 -0
  40. package/dist/failure/types.js.map +1 -0
  41. package/dist/gates/acceptance.d.ts +159 -0
  42. package/dist/gates/acceptance.d.ts.map +1 -0
  43. package/dist/gates/acceptance.js +368 -0
  44. package/dist/gates/acceptance.js.map +1 -0
  45. package/dist/gates/index.d.ts +5 -2
  46. package/dist/gates/index.d.ts.map +1 -1
  47. package/dist/gates/index.js +8 -1
  48. package/dist/gates/index.js.map +1 -1
  49. package/dist/gates/types.d.ts +33 -0
  50. package/dist/gates/types.d.ts.map +1 -1
  51. package/dist/index.d.ts +6 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +18 -5
  54. package/dist/index.js.map +1 -1
  55. package/dist/monitoring/index.d.ts +6 -0
  56. package/dist/monitoring/index.d.ts.map +1 -1
  57. package/dist/monitoring/index.js +6 -0
  58. package/dist/monitoring/index.js.map +1 -1
  59. package/dist/monitoring/performance-analyzer.d.ts +104 -0
  60. package/dist/monitoring/performance-analyzer.d.ts.map +1 -0
  61. package/dist/monitoring/performance-analyzer.js +417 -0
  62. package/dist/monitoring/performance-analyzer.js.map +1 -0
  63. package/dist/monitoring/performance-collector.d.ts +111 -0
  64. package/dist/monitoring/performance-collector.d.ts.map +1 -0
  65. package/dist/monitoring/performance-collector.js +319 -0
  66. package/dist/monitoring/performance-collector.js.map +1 -0
  67. package/dist/monitoring/trace-analyzer.js +1 -1
  68. package/dist/monitoring/trace-analyzer.js.map +1 -1
  69. package/dist/monitoring/traces.js +1 -1
  70. package/dist/monitoring/traces.js.map +1 -1
  71. package/dist/presets/index.d.ts +0 -1
  72. package/dist/presets/index.d.ts.map +1 -1
  73. package/dist/presets/index.js +1 -6
  74. package/dist/presets/index.js.map +1 -1
  75. package/dist/spec/annotation-checker.d.ts +47 -0
  76. package/dist/spec/annotation-checker.d.ts.map +1 -0
  77. package/dist/spec/annotation-checker.js +299 -0
  78. package/dist/spec/annotation-checker.js.map +1 -0
  79. package/dist/types/index.d.ts +2 -0
  80. package/dist/types/index.d.ts.map +1 -1
  81. package/dist/types/index.js +9 -0
  82. package/dist/types/index.js.map +1 -1
  83. package/dist/types/performance.d.ts +204 -0
  84. package/dist/types/performance.d.ts.map +1 -0
  85. package/dist/types/performance.js +12 -0
  86. package/dist/types/performance.js.map +1 -0
  87. package/package.json +3 -1
  88. package/dist/extensions/long-running/constraints.d.ts +0 -38
  89. package/dist/extensions/long-running/constraints.d.ts.map +0 -1
  90. package/dist/extensions/long-running/constraints.js +0 -153
  91. package/dist/extensions/long-running/constraints.js.map +0 -1
  92. package/dist/extensions/long-running/index.d.ts +0 -30
  93. package/dist/extensions/long-running/index.d.ts.map +0 -1
  94. package/dist/extensions/long-running/index.js +0 -50
  95. package/dist/extensions/long-running/index.js.map +0 -1
  96. package/dist/extensions/long-running/types.d.ts +0 -154
  97. package/dist/extensions/long-running/types.d.ts.map +0 -1
  98. package/dist/extensions/long-running/types.js +0 -9
  99. package/dist/extensions/long-running/types.js.map +0 -1
  100. package/dist/presets/long-running.d.ts +0 -33
  101. package/dist/presets/long-running.d.ts.map +0 -1
  102. package/dist/presets/long-running.js +0 -52
  103. package/dist/presets/long-running.js.map +0 -1
@@ -0,0 +1,47 @@
1
+ /**
2
+ * 代码注释规范检查器
3
+ *
4
+ * 检查代码中的 @spec 注释是否规范
5
+ */
6
+ export interface AnnotationCheckResult {
7
+ valid: boolean;
8
+ file: string;
9
+ annotations: SpecAnnotation[];
10
+ errors: AnnotationError[];
11
+ warnings: AnnotationWarning[];
12
+ }
13
+ export interface SpecAnnotation {
14
+ specId: string;
15
+ implements?: string[];
16
+ acceptance?: string[];
17
+ dependencies?: string[];
18
+ author?: string;
19
+ since?: string;
20
+ line: number;
21
+ type: 'class' | 'method' | 'function' | 'inline';
22
+ }
23
+ export interface AnnotationError {
24
+ line: number;
25
+ message: string;
26
+ code: 'MISSING_SPEC' | 'INVALID_SPEC_FORMAT' | 'SPEC_NOT_APPROVED' | 'IMPLEMENTS_NOT_FOUND';
27
+ }
28
+ export interface AnnotationWarning {
29
+ line: number;
30
+ message: string;
31
+ code: 'MISSING_IMPLEMENTS' | 'MISSING_ACCEPTANCE' | 'MISSING_AUTHOR';
32
+ }
33
+ /**
34
+ * 检查单个文件
35
+ */
36
+ export declare function checkFile(filePath: string): AnnotationCheckResult;
37
+ /**
38
+ * 批量检查目录
39
+ */
40
+ export declare function checkDirectory(dir: string, options?: {
41
+ extensions?: string[];
42
+ }): AnnotationCheckResult[];
43
+ /**
44
+ * 生成报告
45
+ */
46
+ export declare function generateReport(results: AnnotationCheckResult[]): string;
47
+ //# sourceMappingURL=annotation-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation-checker.d.ts","sourceRoot":"","sources":["../../src/spec/annotation-checker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;CAClD;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,GAAG,qBAAqB,GAAG,mBAAmB,GAAG,sBAAsB,CAAC;CAC7F;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,oBAAoB,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;CACtE;AAKD;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,CAkEjE;AA0KD;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GACtC,qBAAqB,EAAE,CAKzB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,EAAE,GAAG,MAAM,CAgCvE"}
@@ -0,0 +1,299 @@
1
+ "use strict";
2
+ /**
3
+ * 代码注释规范检查器
4
+ *
5
+ * 检查代码中的 @spec 注释是否规范
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.checkFile = checkFile;
42
+ exports.checkDirectory = checkDirectory;
43
+ exports.generateReport = generateReport;
44
+ const fs_1 = require("fs");
45
+ const path = __importStar(require("path"));
46
+ // Spec ID 格式: AR-XXX, WS-XXX, etc.
47
+ const SPEC_ID_REGEX = /^[A-Z]{2,3}-\d{3}$/;
48
+ /**
49
+ * 检查单个文件
50
+ */
51
+ function checkFile(filePath) {
52
+ const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
53
+ const lines = content.split('\n');
54
+ const result = {
55
+ valid: true,
56
+ file: filePath,
57
+ annotations: [],
58
+ errors: [],
59
+ warnings: [],
60
+ };
61
+ let inJSDoc = false;
62
+ let currentJSDoc = [];
63
+ let currentJSDocStartLine = 0;
64
+ for (let i = 0; i < lines.length; i++) {
65
+ const line = lines[i].trim();
66
+ // JSDoc 开始
67
+ if (line.startsWith('/**')) {
68
+ inJSDoc = true;
69
+ currentJSDoc = [line];
70
+ currentJSDocStartLine = i + 1;
71
+ continue;
72
+ }
73
+ // JSDoc 结束
74
+ if (inJSDoc && line.endsWith('*/')) {
75
+ inJSDoc = false;
76
+ currentJSDoc.push(line);
77
+ const annotation = parseJSDoc(currentJSDoc, currentJSDocStartLine);
78
+ if (annotation) {
79
+ result.annotations.push(annotation);
80
+ validateAnnotation(annotation, result);
81
+ }
82
+ currentJSDoc = [];
83
+ continue;
84
+ }
85
+ // JSDoc 中间
86
+ if (inJSDoc) {
87
+ currentJSDoc.push(line);
88
+ }
89
+ // 行内注释 // @spec AR-001
90
+ const inlineMatch = line.match(/\/\/\s*@spec\s+(\S+)/);
91
+ if (inlineMatch) {
92
+ const specId = inlineMatch[1];
93
+ const annotation = {
94
+ specId,
95
+ line: i + 1,
96
+ type: 'inline',
97
+ };
98
+ result.annotations.push(annotation);
99
+ validateAnnotation(annotation, result);
100
+ }
101
+ }
102
+ // 检查公共导出是否有注释
103
+ checkPublicExports(content, result);
104
+ result.valid = result.errors.length === 0;
105
+ return result;
106
+ }
107
+ /**
108
+ * 解析 JSDoc 注释
109
+ */
110
+ function parseJSDoc(lines, startLine) {
111
+ const content = lines.join('\n');
112
+ // 检查是否有 @spec
113
+ const specMatch = content.match(/@spec\s+(\S+)/);
114
+ if (!specMatch) {
115
+ return null;
116
+ }
117
+ const specId = specMatch[1];
118
+ // 解析其他标签
119
+ const annotation = {
120
+ specId,
121
+ line: startLine,
122
+ type: inferType(content),
123
+ };
124
+ // @implements
125
+ const implementsMatch = content.match(/@implements\s+([\w\-_,\s]+)/);
126
+ if (implementsMatch) {
127
+ annotation.implements = implementsMatch[1]
128
+ .split(/[,\s]+/)
129
+ .map(s => s.trim())
130
+ .filter(Boolean);
131
+ }
132
+ // @acceptance
133
+ const acceptanceMatch = content.match(/@acceptance\s+([\w\-_,\s]+)/);
134
+ if (acceptanceMatch) {
135
+ annotation.acceptance = acceptanceMatch[1]
136
+ .split(/[,\s]+/)
137
+ .map(s => s.trim())
138
+ .filter(Boolean);
139
+ }
140
+ // @dependencies
141
+ const depsMatch = content.match(/@dependencies\s+([\w\-_,\s\/]+)/);
142
+ if (depsMatch) {
143
+ annotation.dependencies = depsMatch[1]
144
+ .split(/[,\s]+/)
145
+ .map(s => s.trim())
146
+ .filter(Boolean);
147
+ }
148
+ // @author
149
+ const authorMatch = content.match(/@author\s+(\S+)/);
150
+ if (authorMatch) {
151
+ annotation.author = authorMatch[1];
152
+ }
153
+ // @since
154
+ const sinceMatch = content.match(/@since\s+(\d{4}-\d{2}-\d{2})/);
155
+ if (sinceMatch) {
156
+ annotation.since = sinceMatch[1];
157
+ }
158
+ return annotation;
159
+ }
160
+ /**
161
+ * 推断注释类型
162
+ */
163
+ function inferType(content) {
164
+ if (content.includes('class '))
165
+ return 'class';
166
+ if (content.includes('async ') || content.includes('function '))
167
+ return 'function';
168
+ return 'method';
169
+ }
170
+ /**
171
+ * 验证注释
172
+ */
173
+ function validateAnnotation(annotation, result) {
174
+ // 检查 Spec ID 格式
175
+ if (!SPEC_ID_REGEX.test(annotation.specId)) {
176
+ result.errors.push({
177
+ line: annotation.line,
178
+ message: `Invalid spec ID format: ${annotation.specId}`,
179
+ code: 'INVALID_SPEC_FORMAT',
180
+ });
181
+ }
182
+ // 警告:建议标记 @implements
183
+ if (!annotation.implements && annotation.type !== 'inline') {
184
+ result.warnings.push({
185
+ line: annotation.line,
186
+ message: 'Missing @implements tag',
187
+ code: 'MISSING_IMPLEMENTS',
188
+ });
189
+ }
190
+ // 警告:建议标记 @acceptance
191
+ if (!annotation.acceptance) {
192
+ result.warnings.push({
193
+ line: annotation.line,
194
+ message: 'Missing @acceptance tag',
195
+ code: 'MISSING_ACCEPTANCE',
196
+ });
197
+ }
198
+ }
199
+ /**
200
+ * 检查公共导出是否有注释
201
+ */
202
+ function checkPublicExports(content, result) {
203
+ // 查找 export class/function 但没有 @spec 的
204
+ const exportRegex = /^(export\s+(?:abstract\s+)?(?:class|interface|function|const|let|var))\s+(\w+)/gm;
205
+ let match;
206
+ while ((match = exportRegex.exec(content)) !== null) {
207
+ const line = content.substring(0, match.index).split('\n').length;
208
+ const name = match[2];
209
+ // 检查前10行是否有 @spec
210
+ const beforeContent = content.substring(Math.max(0, match.index - 500), match.index);
211
+ if (!beforeContent.includes('@spec')) {
212
+ result.warnings.push({
213
+ line,
214
+ message: `Public export "${name}" missing @spec annotation`,
215
+ code: 'MISSING_SPEC',
216
+ });
217
+ }
218
+ }
219
+ }
220
+ /**
221
+ * 递归获取目录下所有文件
222
+ */
223
+ function getFilesRecursively(dir, extensions) {
224
+ const files = [];
225
+ try {
226
+ const items = (0, fs_1.readdirSync)(dir);
227
+ for (const item of items) {
228
+ const fullPath = path.join(dir, item);
229
+ const stat = (0, fs_1.statSync)(fullPath);
230
+ if (stat.isDirectory()) {
231
+ // 跳过 node_modules 和 dist
232
+ if (item === 'node_modules' || item === 'dist') {
233
+ continue;
234
+ }
235
+ files.push(...getFilesRecursively(fullPath, extensions));
236
+ }
237
+ else if (stat.isFile()) {
238
+ const ext = path.extname(item);
239
+ if (extensions.includes(ext) && !item.endsWith('.d.ts')) {
240
+ files.push(fullPath);
241
+ }
242
+ }
243
+ }
244
+ }
245
+ catch {
246
+ // 目录不存在或无法访问
247
+ }
248
+ return files;
249
+ }
250
+ /**
251
+ * 批量检查目录
252
+ */
253
+ function checkDirectory(dir, options = {}) {
254
+ const extensions = options.extensions || ['.ts', '.tsx', '.js', '.jsx'];
255
+ const files = getFilesRecursively(dir, extensions);
256
+ return files.map(file => checkFile(file));
257
+ }
258
+ /**
259
+ * 生成报告
260
+ */
261
+ function generateReport(results) {
262
+ const totalFiles = results.length;
263
+ const validFiles = results.filter(r => r.valid).length;
264
+ const totalErrors = results.reduce((sum, r) => sum + r.errors.length, 0);
265
+ const totalWarnings = results.reduce((sum, r) => sum + r.warnings.length, 0);
266
+ let report = `## 注释规范检查报告\n\n`;
267
+ report += `- 检查文件: ${totalFiles}\n`;
268
+ report += `- 通过: ${validFiles}/${totalFiles}\n`;
269
+ report += `- 错误: ${totalErrors}\n`;
270
+ report += `- 警告: ${totalWarnings}\n\n`;
271
+ if (totalErrors > 0) {
272
+ report += `### ❌ 错误\n\n`;
273
+ for (const result of results) {
274
+ for (const error of result.errors) {
275
+ report += `- ${result.file}:${error.line} - ${error.message}\n`;
276
+ }
277
+ }
278
+ report += '\n';
279
+ }
280
+ if (totalWarnings > 0) {
281
+ report += `### ⚠️ 警告\n\n`;
282
+ for (const result of results) {
283
+ for (const warning of result.warnings.slice(0, 5)) {
284
+ report += `- ${result.file}:${warning.line} - ${warning.message}\n`;
285
+ }
286
+ }
287
+ }
288
+ return report;
289
+ }
290
+ // CLI 入口
291
+ if (require.main === module) {
292
+ const args = process.argv.slice(2);
293
+ const dir = args[0] || process.cwd();
294
+ const results = checkDirectory(dir);
295
+ console.log(generateReport(results));
296
+ const hasErrors = results.some(r => r.errors.length > 0);
297
+ process.exit(hasErrors ? 1 : 0);
298
+ }
299
+ //# sourceMappingURL=annotation-checker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotation-checker.js","sourceRoot":"","sources":["../../src/spec/annotation-checker.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ export * from './checkpoint';
6
6
  export * from './passes-gate';
7
7
  export * from './cso';
8
8
  export * from './trace';
9
+ export * from './performance';
9
10
  export type { Diagnosis } from '../monitoring/constraint-doctor';
10
11
  export type { ConstraintProposal, ProposalReviewResult, } from '../monitoring/constraint-evolver';
11
12
  export { StartupCheckpoints, StartupCheckpointType, StartupCheckpointResult, CleanStateConfig, CleanStateResult, DetectedBug, TaskListJson, TaskStepStatus, SessionInfo, } from './session';
@@ -13,4 +14,5 @@ export { DynamicTask as ExtendedDynamicTask, TaskTestResult as ExtendedTaskTestR
13
14
  export * from './project-config';
14
15
  export * from './enforcement';
15
16
  export * from './spec';
17
+ export { ErrorType, FailureLevel, ErrorClassificationRule, FailureRecord, ClassificationResult, DEFAULT_CLASSIFICATION_RULES, DEFAULT_LEVEL_MAPPING, } from '../failure/types';
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,cAAc,CAAC;AAE7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AAGtB,cAAc,SAAS,CAAC;AAGxB,YAAY,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EACV,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAGzG,cAAc,kBAAkB,CAAC;AAGjC,cAAc,eAAe,CAAC;AAG9B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,cAAc,cAAc,CAAC;AAE7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AAGtB,cAAc,SAAS,CAAC;AAGxB,cAAc,eAAe,CAAC;AAG9B,YAAY,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EACV,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,cAAc,IAAI,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAGzG,cAAc,kBAAkB,CAAC;AAGjC,cAAc,eAAe,CAAC;AAG9B,cAAc,QAAQ,CAAC;AAGvB,OAAO,EACL,SAAS,EACT,YAAY,EACZ,uBAAuB,EACvB,aAAa,EACb,oBAAoB,EACpB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC"}
@@ -17,6 +17,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
17
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
18
  };
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.DEFAULT_LEVEL_MAPPING = exports.DEFAULT_CLASSIFICATION_RULES = exports.FailureLevel = exports.ErrorType = void 0;
20
21
  // 约束类型(三层体系)
21
22
  __exportStar(require("./constraint"), exports);
22
23
  __exportStar(require("./checkpoint"), exports);
@@ -24,10 +25,18 @@ __exportStar(require("./passes-gate"), exports);
24
25
  __exportStar(require("./cso"), exports);
25
26
  // Trace 类型(Execution Trace 系统)
26
27
  __exportStar(require("./trace"), exports);
28
+ // Performance 类型(Performance Trace 系统)
29
+ __exportStar(require("./performance"), exports);
27
30
  // 项目配置类型
28
31
  __exportStar(require("./project-config"), exports);
29
32
  // Enforcement 类型
30
33
  __exportStar(require("./enforcement"), exports);
31
34
  // Spec 验证类型
32
35
  __exportStar(require("./spec"), exports);
36
+ // Failure 类型(从 failure 模块导入)
37
+ var types_1 = require("../failure/types");
38
+ Object.defineProperty(exports, "ErrorType", { enumerable: true, get: function () { return types_1.ErrorType; } });
39
+ Object.defineProperty(exports, "FailureLevel", { enumerable: true, get: function () { return types_1.FailureLevel; } });
40
+ Object.defineProperty(exports, "DEFAULT_CLASSIFICATION_RULES", { enumerable: true, get: function () { return types_1.DEFAULT_CLASSIFICATION_RULES; } });
41
+ Object.defineProperty(exports, "DEFAULT_LEVEL_MAPPING", { enumerable: true, get: function () { return types_1.DEFAULT_LEVEL_MAPPING; } });
33
42
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,aAAa;AACb,+CAA6B;AAE7B,+CAA6B;AAC7B,gDAA8B;AAC9B,wCAAsB;AAEtB,+BAA+B;AAC/B,0CAAwB;AAyBxB,SAAS;AACT,mDAAiC;AAEjC,iBAAiB;AACjB,gDAA8B;AAE9B,YAAY;AACZ,yCAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;AAEH,aAAa;AACb,+CAA6B;AAE7B,+CAA6B;AAC7B,gDAA8B;AAC9B,wCAAsB;AAEtB,+BAA+B;AAC/B,0CAAwB;AAExB,uCAAuC;AACvC,gDAA8B;AAyB9B,SAAS;AACT,mDAAiC;AAEjC,iBAAiB;AACjB,gDAA8B;AAE9B,YAAY;AACZ,yCAAuB;AAEvB,6BAA6B;AAC7B,0CAQ0B;AAPxB,kGAAA,SAAS,OAAA;AACT,qGAAA,YAAY,OAAA;AAIZ,qHAAA,4BAA4B,OAAA;AAC5B,8GAAA,qBAAqB,OAAA"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Performance Trace 类型定义
3
+ *
4
+ * 轻量设计:只记录核心信息,零 Token 成本
5
+ *
6
+ * 与 ExecutionTrace 的区别:
7
+ * - ExecutionTrace: 记录约束检查结果(业务行为)
8
+ * - PerformanceTrace: 记录操作耗时(性能指标)
9
+ */
10
+ /**
11
+ * 性能追踪记录
12
+ *
13
+ * 设计原则:
14
+ * - 只记录核心字段(零 Token)
15
+ * - 文件存储,追加写入
16
+ * - 支持多种操作类型
17
+ */
18
+ export interface PerformanceTrace {
19
+ /** 操作类型 */
20
+ operation: string;
21
+ /** 时间戳(Unix timestamp) */
22
+ timestamp: number;
23
+ /** 耗时(毫秒) */
24
+ duration: number;
25
+ /** 结果 */
26
+ result: 'ok' | 'exceeded' | 'error';
27
+ /** 阈值(毫秒),用于计算是否超阈值 */
28
+ threshold?: number;
29
+ /** 项目路径(用于区分多项目) */
30
+ projectPath?: string;
31
+ /** 会话 ID(用于追踪同一会话的多次操作) */
32
+ sessionId?: string;
33
+ /** 任务 ID */
34
+ taskId?: string;
35
+ /** 角色ID(用于角色相关操作) */
36
+ roleId?: string;
37
+ /** 额外元数据 */
38
+ metadata?: Record<string, unknown>;
39
+ }
40
+ /**
41
+ * 性能统计汇总
42
+ */
43
+ export interface PerformanceSummary {
44
+ /** 操作类型 */
45
+ operation: string;
46
+ /** 统计时间范围 */
47
+ timeRange: {
48
+ start: number;
49
+ end: number;
50
+ };
51
+ /** 总执行次数 */
52
+ totalCalls: number;
53
+ /** 成功次数 */
54
+ okCount: number;
55
+ /** 超阈值次数 */
56
+ exceededCount: number;
57
+ /** 错误次数 */
58
+ errorCount: number;
59
+ /** 平均耗时(毫秒) */
60
+ avgDuration: number;
61
+ /** 最大耗时 */
62
+ maxDuration: number;
63
+ /** 最小耗时 */
64
+ minDuration: number;
65
+ /** P95 耗时 */
66
+ p95Duration: number;
67
+ /** P99 耗时 */
68
+ p99Duration: number;
69
+ /** 成功率 (0-1) */
70
+ okRate: number;
71
+ /** 超阈值率 (0-1) */
72
+ exceededRate: number;
73
+ /** 错误率 (0-1) */
74
+ errorRate: number;
75
+ /** 最近趋势 */
76
+ recentTrend: 'stable' | 'rising' | 'falling';
77
+ /** 对比上一周期的变化 */
78
+ changeFromLastPeriod?: {
79
+ avgDurationDelta: number;
80
+ exceededRateDelta: number;
81
+ };
82
+ }
83
+ /**
84
+ * 性能异常
85
+ */
86
+ export interface PerformanceAnomaly {
87
+ /** 异常类型 */
88
+ type: 'high_avg_duration' | 'rising_duration' | 'high_exceeded_rate' | 'rising_exceeded_rate' | 'high_error_rate';
89
+ /** 操作类型 */
90
+ operation: string;
91
+ /** 异常描述 */
92
+ message: string;
93
+ /** 相关数据 */
94
+ data: {
95
+ currentValue: number;
96
+ threshold: number;
97
+ trend?: 'rising' | 'falling' | 'stable';
98
+ };
99
+ /** 检测时间 */
100
+ detectedAt: number;
101
+ /** 建议的下一步 */
102
+ suggestedAction?: 'optimize' | 'adjust_threshold' | 'notify_user';
103
+ }
104
+ /**
105
+ * 性能追踪过滤条件
106
+ */
107
+ export interface PerformanceTraceFilter {
108
+ /** 操作类型(可选) */
109
+ operation?: string;
110
+ /** 结果类型(可选) */
111
+ result?: 'ok' | 'exceeded' | 'error';
112
+ /** 时间范围(可选) */
113
+ timeRange?: {
114
+ start: number;
115
+ end: number;
116
+ };
117
+ /** 项目路径(可选) */
118
+ projectPath?: string;
119
+ /** 会话 ID(可选) */
120
+ sessionId?: string;
121
+ /** 任务 ID(可选) */
122
+ taskId?: string;
123
+ /** 角色 ID(可选) */
124
+ roleId?: string;
125
+ }
126
+ /**
127
+ * PerformanceCollector 配置
128
+ */
129
+ export interface PerformanceCollectorConfig {
130
+ /** 日志文件路径,默认 .harness/logs/performance.log */
131
+ logFile?: string;
132
+ /** 最大文件大小(字节),超出则滚动,默认 10MB */
133
+ maxFileSize?: number;
134
+ /** 是否启用(默认 true) */
135
+ enabled?: boolean;
136
+ }
137
+ /**
138
+ * PerformanceAnalyzer 配置
139
+ */
140
+ export interface PerformanceAnalyzerConfig {
141
+ /** Summary 文件路径 */
142
+ summaryFile?: string;
143
+ /** 周期长度(毫秒),默认 1 小时 */
144
+ periodMs?: number;
145
+ /** 异常阈值 */
146
+ thresholds?: {
147
+ /** 平均耗时阈值(毫秒),超过则告警 */
148
+ avgDuration?: number;
149
+ /** 超阈值率阈值,默认 0.3 */
150
+ exceededRate?: number;
151
+ /** 错误率阈值,默认 0.1 */
152
+ errorRate?: number;
153
+ };
154
+ }
155
+ /**
156
+ * Token 使用记录
157
+ */
158
+ export interface TokenUsageRecord {
159
+ /** 时间戳 */
160
+ timestamp: number;
161
+ /** 会话/会议 ID */
162
+ sessionId: string;
163
+ /** 任务 ID(可选) */
164
+ taskId?: string;
165
+ /** 角色 ID(可选) */
166
+ roleId?: string;
167
+ /** 上下文 Token 数 */
168
+ contextTokens: number;
169
+ /** 执行 Token 数 */
170
+ executionTokens: number;
171
+ /** 总 Token 数 */
172
+ totalTokens: number;
173
+ /** 预算 */
174
+ budget: number;
175
+ /** 是否超预算 */
176
+ exceeded: boolean;
177
+ /** 项目路径 */
178
+ projectPath?: string;
179
+ }
180
+ /**
181
+ * Token 使用统计
182
+ */
183
+ export interface TokenUsageSummary {
184
+ /** 会话 ID */
185
+ sessionId: string;
186
+ /** 时间范围 */
187
+ timeRange: {
188
+ start: number;
189
+ end: number;
190
+ };
191
+ /** 总 Token 使用 */
192
+ totalTokens: number;
193
+ /** 平均每次 Token 使用 */
194
+ avgTokensPerCall: number;
195
+ /** 超预算次数 */
196
+ exceededCount: number;
197
+ /** 超预算率 */
198
+ exceededRate: number;
199
+ /** 按任务统计 */
200
+ byTask?: Map<string, number>;
201
+ /** 按角色统计 */
202
+ byRole?: Map<string, number>;
203
+ }
204
+ //# sourceMappingURL=performance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.d.ts","sourceRoot":"","sources":["../../src/types/performance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * Performance Trace 类型定义
4
+ *
5
+ * 轻量设计:只记录核心信息,零 Token 成本
6
+ *
7
+ * 与 ExecutionTrace 的区别:
8
+ * - ExecutionTrace: 记录约束检查结果(业务行为)
9
+ * - PerformanceTrace: 记录操作耗时(性能指标)
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ //# sourceMappingURL=performance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"performance.js","sourceRoot":"","sources":["../../src/types/performance.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dommaker/harness",
3
- "version": "0.7.3",
3
+ "version": "0.7.4",
4
4
  "description": "通用工程约束框架 - 铁律系统、检查点验证、测试门控、拦截器",
5
5
  "keywords": [
6
6
  "harness",
@@ -47,6 +47,7 @@
47
47
  "prepublishOnly": "npm run build"
48
48
  },
49
49
  "dependencies": {
50
+ "@dommaker/harness": "file:dommaker-harness-0.7.3.tgz",
50
51
  "chalk": "^4.1.2",
51
52
  "commander": "^12.0.0",
52
53
  "fast-glob": "^3.3.3",
@@ -54,6 +55,7 @@
54
55
  "zod": "^3.22.4"
55
56
  },
56
57
  "devDependencies": {
58
+ "@types/glob": "^8.1.0",
57
59
  "@types/jest": "^29.5.0",
58
60
  "@types/js-yaml": "^4.0.9",
59
61
  "@types/node": "^20.11.0",