@dommaker/harness 0.2.0 → 0.3.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.
Files changed (61) hide show
  1. package/README.md +134 -1
  2. package/dist/cli/commands/diagnose.d.ts +16 -0
  3. package/dist/cli/commands/diagnose.d.ts.map +1 -0
  4. package/dist/cli/commands/diagnose.js +195 -0
  5. package/dist/cli/commands/diagnose.js.map +1 -0
  6. package/dist/cli/commands/index.d.ts +3 -0
  7. package/dist/cli/commands/index.d.ts.map +1 -1
  8. package/dist/cli/commands/index.js +7 -1
  9. package/dist/cli/commands/index.js.map +1 -1
  10. package/dist/cli/commands/propose.d.ts +18 -0
  11. package/dist/cli/commands/propose.d.ts.map +1 -0
  12. package/dist/cli/commands/propose.js +331 -0
  13. package/dist/cli/commands/propose.js.map +1 -0
  14. package/dist/cli/commands/traces.d.ts +15 -0
  15. package/dist/cli/commands/traces.d.ts.map +1 -0
  16. package/dist/cli/commands/traces.js +167 -0
  17. package/dist/cli/commands/traces.js.map +1 -0
  18. package/dist/core/constraints/checker.d.ts +4 -0
  19. package/dist/core/constraints/checker.d.ts.map +1 -1
  20. package/dist/core/constraints/checker.js +54 -0
  21. package/dist/core/constraints/checker.js.map +1 -1
  22. package/dist/core/validators/checkpoint.d.ts +13 -1
  23. package/dist/core/validators/checkpoint.d.ts.map +1 -1
  24. package/dist/core/validators/checkpoint.js +51 -0
  25. package/dist/core/validators/checkpoint.js.map +1 -1
  26. package/dist/index.d.ts +1 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +4 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/monitoring/constraint-doctor.d.ts +130 -0
  31. package/dist/monitoring/constraint-doctor.d.ts.map +1 -0
  32. package/dist/monitoring/constraint-doctor.js +305 -0
  33. package/dist/monitoring/constraint-doctor.js.map +1 -0
  34. package/dist/monitoring/constraint-evolver.d.ts +174 -0
  35. package/dist/monitoring/constraint-evolver.d.ts.map +1 -0
  36. package/dist/monitoring/constraint-evolver.js +412 -0
  37. package/dist/monitoring/constraint-evolver.js.map +1 -0
  38. package/dist/monitoring/index.d.ts +14 -0
  39. package/dist/monitoring/index.d.ts.map +1 -0
  40. package/dist/monitoring/index.js +30 -0
  41. package/dist/monitoring/index.js.map +1 -0
  42. package/dist/monitoring/trace-analyzer.d.ts +100 -0
  43. package/dist/monitoring/trace-analyzer.d.ts.map +1 -0
  44. package/dist/monitoring/trace-analyzer.js +432 -0
  45. package/dist/monitoring/trace-analyzer.js.map +1 -0
  46. package/dist/monitoring/traces.d.ts +111 -0
  47. package/dist/monitoring/traces.d.ts.map +1 -0
  48. package/dist/monitoring/traces.js +312 -0
  49. package/dist/monitoring/traces.js.map +1 -0
  50. package/dist/types/constraint.d.ts +2 -0
  51. package/dist/types/constraint.d.ts.map +1 -1
  52. package/dist/types/constraint.js.map +1 -1
  53. package/dist/types/index.d.ts +3 -0
  54. package/dist/types/index.d.ts.map +1 -1
  55. package/dist/types/index.js +2 -0
  56. package/dist/types/index.js.map +1 -1
  57. package/dist/types/trace.d.ts +151 -0
  58. package/dist/types/trace.d.ts.map +1 -0
  59. package/dist/types/trace.js +8 -0
  60. package/dist/types/trace.js.map +1 -0
  61. package/package.json +1 -1
@@ -0,0 +1,432 @@
1
+ "use strict";
2
+ /**
3
+ * Trace 分析器
4
+ *
5
+ * 纯计算,零 Token 成本
6
+ *
7
+ * 功能:
8
+ * - 统计汇总(每小时自动执行)
9
+ * - 异常检测(每日检查)
10
+ * - 趋势分析(对比上一周期)
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.TraceAnalyzer = void 0;
47
+ exports.createAnalyzer = createAnalyzer;
48
+ const fs = __importStar(require("fs"));
49
+ const path = __importStar(require("path"));
50
+ const traces_1 = require("./traces");
51
+ /**
52
+ * 默认配置
53
+ */
54
+ const DEFAULT_CONFIG = {
55
+ summaryFile: '.harness/traces/summary.json',
56
+ periodMs: 3600 * 1000, // 1 小时
57
+ thresholds: {
58
+ bypassRate: 0.3, // 绕过率 > 30% 视为异常
59
+ failRate: 0.5, // 失败率 > 50% 视为异常
60
+ exceptionRate: 0.4, // 例外率 > 40% 视为滥用
61
+ },
62
+ };
63
+ /**
64
+ * Trace 分析器
65
+ *
66
+ * 使用方式:
67
+ * ```typescript
68
+ * const analyzer = new TraceAnalyzer(collector);
69
+ * const summaries = analyzer.summarize(traces);
70
+ * const anomalies = analyzer.detectAnomalies(summaries);
71
+ * ```
72
+ */
73
+ class TraceAnalyzer {
74
+ config;
75
+ collector;
76
+ constructor(collector, config) {
77
+ this.collector = collector;
78
+ this.config = { ...DEFAULT_CONFIG, ...config };
79
+ }
80
+ /**
81
+ * 生成统计汇总
82
+ *
83
+ * 纯计算,零 Token 成本
84
+ */
85
+ summarize(traces) {
86
+ // 按约束 ID 分组
87
+ const grouped = this.groupByConstraint(traces);
88
+ const summaries = [];
89
+ for (const [constraintId, group] of grouped) {
90
+ // 提取层级(从第一条 trace)
91
+ const level = group[0].level;
92
+ // 计算时间范围
93
+ const timestamps = group.map(t => t.timestamp);
94
+ const timeRange = {
95
+ start: Math.min(...timestamps),
96
+ end: Math.max(...timestamps),
97
+ };
98
+ // 计算核心统计
99
+ const totalChecks = group.length;
100
+ const passCount = group.filter(t => t.result === 'pass').length;
101
+ const failCount = group.filter(t => t.result === 'fail').length;
102
+ const bypassCount = group.filter(t => t.result === 'bypassed').length;
103
+ const ignoreCount = group.filter(t => t.userAction === 'ignore').length;
104
+ // 计算比率
105
+ const passRate = totalChecks > 0 ? passCount / totalChecks : 0;
106
+ const failRate = totalChecks > 0 ? failCount / totalChecks : 0;
107
+ const bypassRate = totalChecks > 0 ? bypassCount / totalChecks : 0;
108
+ // 计算例外统计
109
+ const exceptionTraces = group.filter(t => t.exceptionApplied);
110
+ const exceptionCount = exceptionTraces.length;
111
+ const exceptionTypes = exceptionTraces.map(t => t.exceptionApplied);
112
+ const mostCommonException = this.findMostCommon(exceptionTypes);
113
+ // 计算趋势
114
+ const recentTrend = this.calculateTrend(group);
115
+ summaries.push({
116
+ constraintId,
117
+ level,
118
+ timeRange,
119
+ totalChecks,
120
+ passCount,
121
+ failCount,
122
+ bypassCount,
123
+ ignoreCount,
124
+ passRate,
125
+ failRate,
126
+ bypassRate,
127
+ recentTrend,
128
+ exceptionCount,
129
+ mostCommonException,
130
+ });
131
+ }
132
+ return summaries;
133
+ }
134
+ /**
135
+ * 分析最近 N 小时的 traces
136
+ */
137
+ analyzeRecent(hours) {
138
+ const traces = this.collector.readRecent(hours);
139
+ return this.summarize(traces);
140
+ }
141
+ /**
142
+ * 分析特定约束
143
+ */
144
+ analyzeConstraint(constraintId) {
145
+ const traces = this.collector.readByConstraint(constraintId);
146
+ return this.summarize(traces);
147
+ }
148
+ /**
149
+ * 检测异常
150
+ *
151
+ * 基于阈值检测异常模式
152
+ */
153
+ detectAnomalies(summaries) {
154
+ const anomalies = [];
155
+ const thresholds = this.config.thresholds;
156
+ for (const summary of summaries) {
157
+ // 检测高绕过率
158
+ if (summary.bypassRate > thresholds.bypassRate) {
159
+ anomalies.push({
160
+ type: 'high_bypass_rate',
161
+ constraintId: summary.constraintId,
162
+ level: summary.level,
163
+ message: `约束 ${summary.constraintId} 绕过率 ${Math.round(summary.bypassRate * 100)}%,超过阈值 ${thresholds.bypassRate * 100}%`,
164
+ data: {
165
+ currentRate: summary.bypassRate,
166
+ threshold: thresholds.bypassRate,
167
+ trend: summary.recentTrend,
168
+ },
169
+ detectedAt: Date.now(),
170
+ suggestedAction: 'diagnose',
171
+ });
172
+ }
173
+ // 检测失败率上升
174
+ if (summary.failRate > thresholds.failRate && summary.recentTrend === 'rising') {
175
+ anomalies.push({
176
+ type: 'rising_fail_rate',
177
+ constraintId: summary.constraintId,
178
+ level: summary.level,
179
+ message: `约束 ${summary.constraintId} 失败率 ${Math.round(summary.failRate * 100)}% 且趋势上升`,
180
+ data: {
181
+ currentRate: summary.failRate,
182
+ threshold: thresholds.failRate,
183
+ trend: 'rising',
184
+ },
185
+ detectedAt: Date.now(),
186
+ suggestedAction: 'diagnose',
187
+ });
188
+ }
189
+ // 检测绕过率上升
190
+ if (summary.bypassRate > 0.1 && summary.recentTrend === 'rising') {
191
+ anomalies.push({
192
+ type: 'rising_bypass_rate',
193
+ constraintId: summary.constraintId,
194
+ level: summary.level,
195
+ message: `约束 ${summary.constraintId} 绕过率 ${Math.round(summary.bypassRate * 100)}% 且趋势上升`,
196
+ data: {
197
+ currentRate: summary.bypassRate,
198
+ threshold: 0.1,
199
+ trend: 'rising',
200
+ },
201
+ detectedAt: Date.now(),
202
+ suggestedAction: 'diagnose',
203
+ });
204
+ }
205
+ // 检测低通过率
206
+ if (summary.passRate < 0.3) {
207
+ anomalies.push({
208
+ type: 'low_pass_rate',
209
+ constraintId: summary.constraintId,
210
+ level: summary.level,
211
+ message: `约束 ${summary.constraintId} 通过率 ${Math.round(summary.passRate * 100)}%,低于 30%`,
212
+ data: {
213
+ currentRate: summary.passRate,
214
+ threshold: 0.3,
215
+ trend: summary.recentTrend,
216
+ },
217
+ detectedAt: Date.now(),
218
+ suggestedAction: 'adjust_threshold',
219
+ });
220
+ }
221
+ // 检测例外滥用
222
+ const exceptionRate = summary.totalChecks > 0
223
+ ? summary.exceptionCount / summary.totalChecks
224
+ : 0;
225
+ if (exceptionRate > thresholds.exceptionRate) {
226
+ anomalies.push({
227
+ type: 'exception_overuse',
228
+ constraintId: summary.constraintId,
229
+ level: summary.level,
230
+ message: `约束 ${summary.constraintId} 例外使用率 ${Math.round(exceptionRate * 100)}%,可能过度依赖例外`,
231
+ data: {
232
+ currentRate: exceptionRate,
233
+ threshold: thresholds.exceptionRate,
234
+ },
235
+ detectedAt: Date.now(),
236
+ suggestedAction: 'add_exception',
237
+ });
238
+ }
239
+ }
240
+ return anomalies;
241
+ }
242
+ /**
243
+ * 对比上一周期
244
+ *
245
+ * 计算各指标的环比变化
246
+ */
247
+ compareWithPrevious(current, previous) {
248
+ const previousMap = new Map(previous.map(s => [s.constraintId, s]));
249
+ return current.map(summary => {
250
+ const prev = previousMap.get(summary.constraintId);
251
+ if (prev) {
252
+ summary.changeFromLastPeriod = {
253
+ passRateDelta: summary.passRate - prev.passRate,
254
+ failRateDelta: summary.failRate - prev.failRate,
255
+ bypassRateDelta: summary.bypassRate - prev.bypassRate,
256
+ };
257
+ }
258
+ return summary;
259
+ });
260
+ }
261
+ /**
262
+ * 按约束 ID 分组
263
+ */
264
+ groupByConstraint(traces) {
265
+ const grouped = new Map();
266
+ for (const trace of traces) {
267
+ const existing = grouped.get(trace.constraintId) || [];
268
+ existing.push(trace);
269
+ grouped.set(trace.constraintId, existing);
270
+ }
271
+ return grouped;
272
+ }
273
+ /**
274
+ * 计算趋势
275
+ *
276
+ * 对比前半段和后半段的通过率
277
+ */
278
+ calculateTrend(traces) {
279
+ if (traces.length < 10) {
280
+ return 'stable';
281
+ }
282
+ // 按时间排序
283
+ const sorted = [...traces].sort((a, b) => a.timestamp - b.timestamp);
284
+ // 分成前后两半
285
+ const half = Math.floor(sorted.length / 2);
286
+ const firstHalf = sorted.slice(0, half);
287
+ const secondHalf = sorted.slice(half);
288
+ // 计算前半段和后半段的通过率
289
+ const firstPassRate = this.calcPassRate(firstHalf);
290
+ const secondPassRate = this.calcPassRate(secondHalf);
291
+ // 计算变化
292
+ const delta = secondPassRate - firstPassRate;
293
+ // 判断趋势(变化 > 5% 才算显著)
294
+ if (delta > 0.05) {
295
+ return 'rising';
296
+ }
297
+ else if (delta < -0.05) {
298
+ return 'falling';
299
+ }
300
+ else {
301
+ return 'stable';
302
+ }
303
+ }
304
+ /**
305
+ * 计算通过率
306
+ */
307
+ calcPassRate(traces) {
308
+ if (traces.length === 0)
309
+ return 0;
310
+ const passCount = traces.filter(t => t.result === 'pass').length;
311
+ return passCount / traces.length;
312
+ }
313
+ /**
314
+ * 找出最常见元素
315
+ */
316
+ findMostCommon(items) {
317
+ if (items.length === 0)
318
+ return undefined;
319
+ const counts = new Map();
320
+ for (const item of items) {
321
+ counts.set(item, (counts.get(item) || 0) + 1);
322
+ }
323
+ let maxCount = 0;
324
+ let mostCommon;
325
+ for (const [item, count] of counts) {
326
+ if (count > maxCount) {
327
+ maxCount = count;
328
+ mostCommon = item;
329
+ }
330
+ }
331
+ return mostCommon;
332
+ }
333
+ /**
334
+ * 保存汇总结果
335
+ */
336
+ saveSummary(summaries) {
337
+ const dir = path.dirname(this.config.summaryFile);
338
+ if (!fs.existsSync(dir)) {
339
+ fs.mkdirSync(dir, { recursive: true });
340
+ }
341
+ fs.writeFileSync(this.config.summaryFile, JSON.stringify(summaries, null, 2), 'utf-8');
342
+ }
343
+ /**
344
+ * 加载上次汇总结果
345
+ */
346
+ loadSummary() {
347
+ if (!fs.existsSync(this.config.summaryFile)) {
348
+ return null;
349
+ }
350
+ const content = fs.readFileSync(this.config.summaryFile, 'utf-8');
351
+ return JSON.parse(content);
352
+ }
353
+ /**
354
+ * 运行每小时汇总
355
+ *
356
+ * 自动执行,零 Token 成本
357
+ */
358
+ runHourlySummary() {
359
+ // 分析最近 1 小时
360
+ const current = this.analyzeRecent(1);
361
+ // 加载上次汇总,对比趋势
362
+ const previous = this.loadSummary();
363
+ if (previous) {
364
+ this.compareWithPrevious(current, previous);
365
+ }
366
+ // 保存当前汇总
367
+ this.saveSummary(current);
368
+ return current;
369
+ }
370
+ /**
371
+ * 运行每日异常检测
372
+ *
373
+ * 返回异常列表,用于触发 Agent 诊断
374
+ */
375
+ runDailyAnomalyCheck() {
376
+ // 分析最近 24 小时
377
+ const summaries = this.analyzeRecent(24);
378
+ // 检测异常
379
+ const anomalies = this.detectAnomalies(summaries);
380
+ return anomalies;
381
+ }
382
+ /**
383
+ * 生成报告(文本格式)
384
+ */
385
+ generateReport(summaries, anomalies) {
386
+ const lines = [];
387
+ lines.push('# Harness Trace Report');
388
+ lines.push(`Generated: ${new Date().toISOString()}`);
389
+ lines.push('');
390
+ // 汇总部分
391
+ lines.push('## Constraint Summaries');
392
+ lines.push('');
393
+ for (const summary of summaries) {
394
+ const levelEmoji = {
395
+ iron_law: '🔴',
396
+ guideline: '🟡',
397
+ tip: '🔵',
398
+ }[summary.level];
399
+ lines.push(`${levelEmoji} **${summary.constraintId}**`);
400
+ lines.push(` - Checks: ${summary.totalChecks}`);
401
+ lines.push(` - Pass: ${Math.round(summary.passRate * 100)}%`);
402
+ lines.push(` - Fail: ${Math.round(summary.failRate * 100)}%`);
403
+ lines.push(` - Bypass: ${Math.round(summary.bypassRate * 100)}%`);
404
+ lines.push(` - Trend: ${summary.recentTrend}`);
405
+ lines.push('');
406
+ }
407
+ // 异常部分
408
+ if (anomalies.length > 0) {
409
+ lines.push('## Anomalies Detected');
410
+ lines.push('');
411
+ for (const anomaly of anomalies) {
412
+ lines.push(`⚠️ **${anomaly.type}**: ${anomaly.constraintId}`);
413
+ lines.push(` - ${anomaly.message}`);
414
+ lines.push(` - Suggested: ${anomaly.suggestedAction}`);
415
+ lines.push('');
416
+ }
417
+ }
418
+ else {
419
+ lines.push('## No Anomalies Detected ✅');
420
+ }
421
+ return lines.join('\n');
422
+ }
423
+ }
424
+ exports.TraceAnalyzer = TraceAnalyzer;
425
+ /**
426
+ * 创建分析器(使用全局收集器)
427
+ */
428
+ function createAnalyzer(config) {
429
+ const collector = new traces_1.TraceCollector();
430
+ return new TraceAnalyzer(collector, config);
431
+ }
432
+ //# sourceMappingURL=trace-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-analyzer.js","sourceRoot":"","sources":["../../src/monitoring/trace-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Execution Trace 收集器
3
+ *
4
+ * 轻量设计,零 Token 成本
5
+ *
6
+ * 功能:
7
+ * - 记录约束检查结果(追加写入)
8
+ * - 批量读取 traces(按时间范围过滤)
9
+ * - 文件滚动(防止文件过大)
10
+ */
11
+ import type { ExecutionTrace, TraceFilter, TraceCollectorConfig } from '../types/trace';
12
+ /**
13
+ * Trace 收集器
14
+ *
15
+ * 使用方式:
16
+ * ```typescript
17
+ * const collector = new TraceCollector();
18
+ * collector.record({
19
+ * constraintId: 'no_fix_without_root_cause',
20
+ * level: 'iron_law',
21
+ * timestamp: Date.now(),
22
+ * result: 'fail',
23
+ * });
24
+ * ```
25
+ */
26
+ export declare class TraceCollector {
27
+ private config;
28
+ private traceFile;
29
+ constructor(config?: Partial<TraceCollectorConfig>);
30
+ /**
31
+ * 确保 trace 目录存在
32
+ */
33
+ private ensureDirectory;
34
+ /**
35
+ * 记录一条 trace
36
+ *
37
+ * 轻量操作:
38
+ * - 追加写入(不读取现有内容)
39
+ * - 单行 JSON(便于批量处理)
40
+ * - 零 Token 成本
41
+ */
42
+ record(trace: ExecutionTrace): void;
43
+ /**
44
+ * 快捷方法:记录通过
45
+ */
46
+ recordPass(constraintId: string, level: 'iron_law' | 'guideline' | 'tip', options?: Partial<ExecutionTrace>): void;
47
+ /**
48
+ * 快捷方法:记录失败
49
+ */
50
+ recordFail(constraintId: string, level: 'iron_law' | 'guideline' | 'tip', options?: Partial<ExecutionTrace>): void;
51
+ /**
52
+ * 快捷方法:记录绕过
53
+ */
54
+ recordBypass(constraintId: string, level: 'iron_law' | 'guideline' | 'tip', bypassReason?: string, options?: Partial<ExecutionTrace>): void;
55
+ /**
56
+ * 批量读取 traces
57
+ *
58
+ * 支持过滤条件:
59
+ * - 时间范围
60
+ * - 约束 ID
61
+ * - 结果类型
62
+ */
63
+ read(filter?: TraceFilter): ExecutionTrace[];
64
+ /**
65
+ * 读取最近 N 小时的 traces
66
+ */
67
+ readRecent(hours: number): ExecutionTrace[];
68
+ /**
69
+ * 读取特定约束的 traces
70
+ */
71
+ readByConstraint(constraintId: string): ExecutionTrace[];
72
+ /**
73
+ * 应用过滤条件
74
+ */
75
+ private applyFilter;
76
+ /**
77
+ * 检查文件大小,必要时滚动
78
+ */
79
+ private checkFileSize;
80
+ /**
81
+ * 滚动文件
82
+ *
83
+ * 将当前文件重命名为带时间戳的备份
84
+ */
85
+ private rotateFile;
86
+ /**
87
+ * 清理旧备份文件
88
+ *
89
+ * 删除超过 maxAge 天的备份文件
90
+ */
91
+ cleanupOldFiles(maxAgeDays?: number): number;
92
+ /**
93
+ * 获取 trace 文件统计信息
94
+ */
95
+ getStats(): {
96
+ fileExists: boolean;
97
+ fileSize: number;
98
+ totalLines: number;
99
+ oldestTrace?: number;
100
+ newestTrace?: number;
101
+ };
102
+ }
103
+ /**
104
+ * 获取全局收集器
105
+ */
106
+ export declare function getTraceCollector(): TraceCollector;
107
+ /**
108
+ * 配置全局收集器
109
+ */
110
+ export declare function configureTraceCollector(config: Partial<TraceCollectorConfig>): void;
111
+ //# sourceMappingURL=traces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traces.d.ts","sourceRoot":"","sources":["../../src/monitoring/traces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAWxB;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC;IAMlD;;OAEG;IACH,OAAO,CAAC,eAAe;IAOvB;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAWnC;;OAEG;IACH,UAAU,CACR,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,KAAK,EACvC,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAChC,IAAI;IAUP;;OAEG;IACH,UAAU,CACR,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,KAAK,EACvC,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAChC,IAAI;IAUP;;OAEG;IACH,YAAY,CACV,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,KAAK,EACvC,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAChC,IAAI;IAYP;;;;;;;OAOG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,cAAc,EAAE;IAkB5C;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,EAAE;IAK3C;;OAEG;IACH,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,EAAE;IAIxD;;OAEG;IACH,OAAO,CAAC,WAAW;IAyCnB;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAWlB;;;;OAIG;IACH,eAAe,CAAC,UAAU,GAAE,MAAW,GAAG,MAAM;IAyBhD;;OAEG;IACH,QAAQ,IAAI;QACV,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB;CA2BF;AAOD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAEnF"}