@dommaker/harness 0.7.2 → 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 (121) hide show
  1. package/README.md +390 -5
  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/contract.d.ts +41 -0
  46. package/dist/gates/contract.d.ts.map +1 -0
  47. package/dist/gates/contract.js +264 -0
  48. package/dist/gates/contract.js.map +1 -0
  49. package/dist/gates/index.d.ts +23 -0
  50. package/dist/gates/index.d.ts.map +1 -0
  51. package/dist/gates/index.js +46 -0
  52. package/dist/gates/index.js.map +1 -0
  53. package/dist/gates/performance.d.ts +81 -0
  54. package/dist/gates/performance.d.ts.map +1 -0
  55. package/dist/gates/performance.js +336 -0
  56. package/dist/gates/performance.js.map +1 -0
  57. package/dist/gates/review.d.ts +37 -0
  58. package/dist/gates/review.d.ts.map +1 -0
  59. package/dist/gates/review.js +149 -0
  60. package/dist/gates/review.js.map +1 -0
  61. package/dist/gates/security.d.ts +45 -0
  62. package/dist/gates/security.d.ts.map +1 -0
  63. package/dist/gates/security.js +221 -0
  64. package/dist/gates/security.js.map +1 -0
  65. package/dist/gates/types.d.ts +115 -0
  66. package/dist/gates/types.d.ts.map +1 -0
  67. package/dist/gates/types.js +6 -0
  68. package/dist/gates/types.js.map +1 -0
  69. package/dist/index.d.ts +15 -1
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +30 -5
  72. package/dist/index.js.map +1 -1
  73. package/dist/monitoring/index.d.ts +6 -0
  74. package/dist/monitoring/index.d.ts.map +1 -1
  75. package/dist/monitoring/index.js +6 -0
  76. package/dist/monitoring/index.js.map +1 -1
  77. package/dist/monitoring/performance-analyzer.d.ts +104 -0
  78. package/dist/monitoring/performance-analyzer.d.ts.map +1 -0
  79. package/dist/monitoring/performance-analyzer.js +417 -0
  80. package/dist/monitoring/performance-analyzer.js.map +1 -0
  81. package/dist/monitoring/performance-collector.d.ts +111 -0
  82. package/dist/monitoring/performance-collector.d.ts.map +1 -0
  83. package/dist/monitoring/performance-collector.js +319 -0
  84. package/dist/monitoring/performance-collector.js.map +1 -0
  85. package/dist/monitoring/trace-analyzer.js +1 -1
  86. package/dist/monitoring/trace-analyzer.js.map +1 -1
  87. package/dist/monitoring/traces.js +1 -1
  88. package/dist/monitoring/traces.js.map +1 -1
  89. package/dist/presets/index.d.ts +0 -1
  90. package/dist/presets/index.d.ts.map +1 -1
  91. package/dist/presets/index.js +1 -6
  92. package/dist/presets/index.js.map +1 -1
  93. package/dist/spec/annotation-checker.d.ts +47 -0
  94. package/dist/spec/annotation-checker.d.ts.map +1 -0
  95. package/dist/spec/annotation-checker.js +299 -0
  96. package/dist/spec/annotation-checker.js.map +1 -0
  97. package/dist/types/index.d.ts +2 -0
  98. package/dist/types/index.d.ts.map +1 -1
  99. package/dist/types/index.js +9 -0
  100. package/dist/types/index.js.map +1 -1
  101. package/dist/types/performance.d.ts +204 -0
  102. package/dist/types/performance.d.ts.map +1 -0
  103. package/dist/types/performance.js +12 -0
  104. package/dist/types/performance.js.map +1 -0
  105. package/package.json +3 -1
  106. package/dist/extensions/long-running/constraints.d.ts +0 -38
  107. package/dist/extensions/long-running/constraints.d.ts.map +0 -1
  108. package/dist/extensions/long-running/constraints.js +0 -153
  109. package/dist/extensions/long-running/constraints.js.map +0 -1
  110. package/dist/extensions/long-running/index.d.ts +0 -30
  111. package/dist/extensions/long-running/index.d.ts.map +0 -1
  112. package/dist/extensions/long-running/index.js +0 -50
  113. package/dist/extensions/long-running/index.js.map +0 -1
  114. package/dist/extensions/long-running/types.d.ts +0 -154
  115. package/dist/extensions/long-running/types.d.ts.map +0 -1
  116. package/dist/extensions/long-running/types.js +0 -9
  117. package/dist/extensions/long-running/types.js.map +0 -1
  118. package/dist/presets/long-running.d.ts +0 -33
  119. package/dist/presets/long-running.d.ts.map +0 -1
  120. package/dist/presets/long-running.js +0 -52
  121. package/dist/presets/long-running.js.map +0 -1
@@ -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.2",
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",
@@ -1,38 +0,0 @@
1
- /**
2
- * Long-Running Agents 约束定义
3
- *
4
- * 来源:Anthropic Engineering Blog - Effective Harnesses for Long-Running Agents
5
- * 参考:~/knowledge-base/projects/harness/anthropic-long-running-agents-roadmap.md
6
- *
7
- * 这些约束是特定模式特有的,不是通用约束。
8
- * 适用于:
9
- * - 使用 feature_list.json 的项目
10
- * - 跨 session 追踪进度的项目
11
- * - 单功能推进的开发模式
12
- */
13
- import type { Constraint, ConstraintTrigger } from '../../types/constraint';
14
- /**
15
- * Long-Running Agents 铁律
16
- */
17
- export declare const LONG_RUNNING_IRON_LAWS: Record<string, Constraint>;
18
- /**
19
- * Long-Running Agents 指导原则
20
- */
21
- export declare const LONG_RUNNING_GUIDELINES: Record<string, Constraint>;
22
- /**
23
- * Long-Running Agents 提示
24
- */
25
- export declare const LONG_RUNNING_TIPS: Record<string, Constraint>;
26
- /**
27
- * 获取所有 Long-Running 约束
28
- */
29
- export declare function getAllLongRunningConstraints(): Constraint[];
30
- /**
31
- * 根据 trigger 查找 Long-Running 约束
32
- */
33
- export declare function findLongRunningConstraintsByTrigger(trigger: ConstraintTrigger): Constraint[];
34
- /**
35
- * 根据 ID 获取 Long-Running 约束
36
- */
37
- export declare function getLongRunningConstraint(id: string): Constraint | undefined;
38
- //# sourceMappingURL=constraints.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constraints.d.ts","sourceRoot":"","sources":["../../../src/extensions/long-running/constraints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE5E;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAgC7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAkE9D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAM,CAAC;AAEhE;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,UAAU,EAAE,CAM3D;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,EAAE,CAK5F;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE3E"}