@claude-flow/cli 3.0.0-alpha.79 → 3.0.0-alpha.80
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/dist/src/index.d.ts +10 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +2 -0
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-tools/claims-tools.d.ts +12 -0
- package/dist/src/mcp-tools/claims-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/claims-tools.js +732 -0
- package/dist/src/mcp-tools/claims-tools.js.map +1 -0
- package/dist/src/mcp-tools/index.d.ts +1 -0
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +1 -0
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/production/circuit-breaker.d.ts +101 -0
- package/dist/src/production/circuit-breaker.d.ts.map +1 -0
- package/dist/src/production/circuit-breaker.js +241 -0
- package/dist/src/production/circuit-breaker.js.map +1 -0
- package/dist/src/production/error-handler.d.ts +92 -0
- package/dist/src/production/error-handler.d.ts.map +1 -0
- package/dist/src/production/error-handler.js +299 -0
- package/dist/src/production/error-handler.js.map +1 -0
- package/dist/src/production/index.d.ts +23 -0
- package/dist/src/production/index.d.ts.map +1 -0
- package/dist/src/production/index.js +18 -0
- package/dist/src/production/index.js.map +1 -0
- package/dist/src/production/monitoring.d.ts +161 -0
- package/dist/src/production/monitoring.d.ts.map +1 -0
- package/dist/src/production/monitoring.js +356 -0
- package/dist/src/production/monitoring.js.map +1 -0
- package/dist/src/production/rate-limiter.d.ts +80 -0
- package/dist/src/production/rate-limiter.d.ts.map +1 -0
- package/dist/src/production/rate-limiter.js +201 -0
- package/dist/src/production/rate-limiter.js.map +1 -0
- package/dist/src/production/retry.d.ts +48 -0
- package/dist/src/production/retry.d.ts.map +1 -0
- package/dist/src/production/retry.js +179 -0
- package/dist/src/production/retry.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Production Error Handling
|
|
3
|
+
*
|
|
4
|
+
* Provides standardized error handling with:
|
|
5
|
+
* - Error classification
|
|
6
|
+
* - Sanitization (no sensitive data leak)
|
|
7
|
+
* - Structured error responses
|
|
8
|
+
* - Error aggregation and reporting
|
|
9
|
+
*
|
|
10
|
+
* @module @claude-flow/cli/production/error-handler
|
|
11
|
+
*/
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Error Classification
|
|
14
|
+
// ============================================================================
|
|
15
|
+
const ERROR_PATTERNS = {
|
|
16
|
+
validation: [
|
|
17
|
+
/invalid/i,
|
|
18
|
+
/required/i,
|
|
19
|
+
/missing/i,
|
|
20
|
+
/must be/i,
|
|
21
|
+
/cannot be/i,
|
|
22
|
+
/validation/i,
|
|
23
|
+
],
|
|
24
|
+
authentication: [
|
|
25
|
+
/unauthorized/i,
|
|
26
|
+
/unauthenticated/i,
|
|
27
|
+
/not authenticated/i,
|
|
28
|
+
/invalid token/i,
|
|
29
|
+
/expired token/i,
|
|
30
|
+
],
|
|
31
|
+
authorization: [
|
|
32
|
+
/forbidden/i,
|
|
33
|
+
/permission denied/i,
|
|
34
|
+
/access denied/i,
|
|
35
|
+
/not allowed/i,
|
|
36
|
+
],
|
|
37
|
+
not_found: [
|
|
38
|
+
/not found/i,
|
|
39
|
+
/does not exist/i,
|
|
40
|
+
/no such/i,
|
|
41
|
+
/unknown/i,
|
|
42
|
+
],
|
|
43
|
+
rate_limit: [
|
|
44
|
+
/rate limit/i,
|
|
45
|
+
/too many requests/i,
|
|
46
|
+
/throttled/i,
|
|
47
|
+
],
|
|
48
|
+
timeout: [
|
|
49
|
+
/timeout/i,
|
|
50
|
+
/timed out/i,
|
|
51
|
+
/deadline/i,
|
|
52
|
+
],
|
|
53
|
+
circuit_open: [
|
|
54
|
+
/circuit open/i,
|
|
55
|
+
/service unavailable/i,
|
|
56
|
+
/temporarily unavailable/i,
|
|
57
|
+
],
|
|
58
|
+
external_service: [
|
|
59
|
+
/ECONNREFUSED/i,
|
|
60
|
+
/ENOTFOUND/i,
|
|
61
|
+
/ETIMEDOUT/i,
|
|
62
|
+
/network/i,
|
|
63
|
+
/connection/i,
|
|
64
|
+
],
|
|
65
|
+
internal: [
|
|
66
|
+
/internal/i,
|
|
67
|
+
/unexpected/i,
|
|
68
|
+
],
|
|
69
|
+
unknown: [],
|
|
70
|
+
};
|
|
71
|
+
const RETRYABLE_CATEGORIES = [
|
|
72
|
+
'timeout',
|
|
73
|
+
'external_service',
|
|
74
|
+
'rate_limit',
|
|
75
|
+
'circuit_open',
|
|
76
|
+
];
|
|
77
|
+
// Sensitive keys to sanitize
|
|
78
|
+
const SENSITIVE_KEYS = [
|
|
79
|
+
'password',
|
|
80
|
+
'token',
|
|
81
|
+
'api_key',
|
|
82
|
+
'apiKey',
|
|
83
|
+
'secret',
|
|
84
|
+
'authorization',
|
|
85
|
+
'bearer',
|
|
86
|
+
'credential',
|
|
87
|
+
'private',
|
|
88
|
+
];
|
|
89
|
+
// ============================================================================
|
|
90
|
+
// Error Handler
|
|
91
|
+
// ============================================================================
|
|
92
|
+
const DEFAULT_CONFIG = {
|
|
93
|
+
includeStack: process.env.NODE_ENV !== 'production',
|
|
94
|
+
sanitize: true,
|
|
95
|
+
reportToMonitoring: true,
|
|
96
|
+
maxErrorsPerMinute: 100,
|
|
97
|
+
errorCategories: {},
|
|
98
|
+
};
|
|
99
|
+
export class ErrorHandler {
|
|
100
|
+
config;
|
|
101
|
+
errorCounts = new Map();
|
|
102
|
+
errorLog = [];
|
|
103
|
+
maxLogSize = 1000;
|
|
104
|
+
constructor(config = {}) {
|
|
105
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Classify an error into a category
|
|
109
|
+
*/
|
|
110
|
+
classifyError(error) {
|
|
111
|
+
const message = typeof error === 'string' ? error : error.message;
|
|
112
|
+
for (const [category, patterns] of Object.entries(ERROR_PATTERNS)) {
|
|
113
|
+
for (const pattern of patterns) {
|
|
114
|
+
if (pattern.test(message)) {
|
|
115
|
+
return category;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return 'unknown';
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Check if an error category is retryable
|
|
123
|
+
*/
|
|
124
|
+
isRetryable(category) {
|
|
125
|
+
return RETRYABLE_CATEGORIES.includes(category);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Sanitize input to remove sensitive data
|
|
129
|
+
*/
|
|
130
|
+
sanitize(input) {
|
|
131
|
+
if (!this.config.sanitize)
|
|
132
|
+
return input;
|
|
133
|
+
const sanitized = {};
|
|
134
|
+
for (const [key, value] of Object.entries(input)) {
|
|
135
|
+
const lowerKey = key.toLowerCase();
|
|
136
|
+
const isSensitive = SENSITIVE_KEYS.some(sk => lowerKey.includes(sk));
|
|
137
|
+
if (isSensitive) {
|
|
138
|
+
sanitized[key] = '[REDACTED]';
|
|
139
|
+
}
|
|
140
|
+
else if (typeof value === 'object' && value !== null) {
|
|
141
|
+
sanitized[key] = this.sanitize(value);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
sanitized[key] = value;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return sanitized;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Handle an error and return a structured response
|
|
151
|
+
*/
|
|
152
|
+
handle(error, context = {}) {
|
|
153
|
+
const message = typeof error === 'string' ? error : error.message;
|
|
154
|
+
const category = this.classifyError(error);
|
|
155
|
+
const retryable = this.isRetryable(category);
|
|
156
|
+
const now = new Date().toISOString();
|
|
157
|
+
// Track error counts for rate limiting
|
|
158
|
+
this.trackError(category);
|
|
159
|
+
// Build structured error
|
|
160
|
+
const structured = {
|
|
161
|
+
success: false,
|
|
162
|
+
error: {
|
|
163
|
+
code: this.getErrorCode(category),
|
|
164
|
+
message: this.sanitizeMessage(message),
|
|
165
|
+
category,
|
|
166
|
+
retryable,
|
|
167
|
+
retryAfterMs: retryable ? this.getRetryDelay(category) : undefined,
|
|
168
|
+
},
|
|
169
|
+
context: context.input
|
|
170
|
+
? { ...context, input: this.sanitize(context.input) }
|
|
171
|
+
: context,
|
|
172
|
+
timestamp: now,
|
|
173
|
+
};
|
|
174
|
+
// Include stack trace in non-production
|
|
175
|
+
if (this.config.includeStack && error instanceof Error && error.stack) {
|
|
176
|
+
structured.error.details = { stack: error.stack };
|
|
177
|
+
}
|
|
178
|
+
// Log error
|
|
179
|
+
this.logError(structured);
|
|
180
|
+
return structured;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Wrap a handler with error handling
|
|
184
|
+
*/
|
|
185
|
+
wrap(handler, context) {
|
|
186
|
+
return (async (...args) => {
|
|
187
|
+
try {
|
|
188
|
+
return await handler(...args);
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
return this.handle(error, {
|
|
192
|
+
...context,
|
|
193
|
+
input: args[0],
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get error statistics
|
|
200
|
+
*/
|
|
201
|
+
getStats() {
|
|
202
|
+
const byCategory = {};
|
|
203
|
+
for (const error of this.errorLog) {
|
|
204
|
+
const cat = error.error.category;
|
|
205
|
+
byCategory[cat] = (byCategory[cat] || 0) + 1;
|
|
206
|
+
}
|
|
207
|
+
// Calculate error rate (errors per minute in last 5 minutes)
|
|
208
|
+
const fiveMinutesAgo = Date.now() - 5 * 60 * 1000;
|
|
209
|
+
const recentCount = this.errorLog.filter(e => new Date(e.timestamp).getTime() > fiveMinutesAgo).length;
|
|
210
|
+
const errorRate = recentCount / 5;
|
|
211
|
+
return {
|
|
212
|
+
totalErrors: this.errorLog.length,
|
|
213
|
+
byCategory,
|
|
214
|
+
recentErrors: this.errorLog.slice(-10),
|
|
215
|
+
errorRate,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Clear error log
|
|
220
|
+
*/
|
|
221
|
+
clearLog() {
|
|
222
|
+
this.errorLog = [];
|
|
223
|
+
this.errorCounts.clear();
|
|
224
|
+
}
|
|
225
|
+
// ============================================================================
|
|
226
|
+
// Private Methods
|
|
227
|
+
// ============================================================================
|
|
228
|
+
getErrorCode(category) {
|
|
229
|
+
const codes = {
|
|
230
|
+
validation: 'ERR_VALIDATION',
|
|
231
|
+
authentication: 'ERR_AUTHENTICATION',
|
|
232
|
+
authorization: 'ERR_AUTHORIZATION',
|
|
233
|
+
not_found: 'ERR_NOT_FOUND',
|
|
234
|
+
rate_limit: 'ERR_RATE_LIMIT',
|
|
235
|
+
timeout: 'ERR_TIMEOUT',
|
|
236
|
+
circuit_open: 'ERR_CIRCUIT_OPEN',
|
|
237
|
+
external_service: 'ERR_EXTERNAL_SERVICE',
|
|
238
|
+
internal: 'ERR_INTERNAL',
|
|
239
|
+
unknown: 'ERR_UNKNOWN',
|
|
240
|
+
};
|
|
241
|
+
return codes[category];
|
|
242
|
+
}
|
|
243
|
+
getRetryDelay(category) {
|
|
244
|
+
const delays = {
|
|
245
|
+
timeout: 1000,
|
|
246
|
+
external_service: 2000,
|
|
247
|
+
rate_limit: 5000,
|
|
248
|
+
circuit_open: 30000,
|
|
249
|
+
validation: 0,
|
|
250
|
+
authentication: 0,
|
|
251
|
+
authorization: 0,
|
|
252
|
+
not_found: 0,
|
|
253
|
+
internal: 0,
|
|
254
|
+
unknown: 0,
|
|
255
|
+
};
|
|
256
|
+
return delays[category];
|
|
257
|
+
}
|
|
258
|
+
sanitizeMessage(message) {
|
|
259
|
+
if (!this.config.sanitize)
|
|
260
|
+
return message;
|
|
261
|
+
// Remove potential sensitive data from message
|
|
262
|
+
let sanitized = message;
|
|
263
|
+
for (const key of SENSITIVE_KEYS) {
|
|
264
|
+
const pattern = new RegExp(`${key}[=:]?\\s*["']?[^\\s"']+["']?`, 'gi');
|
|
265
|
+
sanitized = sanitized.replace(pattern, `${key}=[REDACTED]`);
|
|
266
|
+
}
|
|
267
|
+
return sanitized;
|
|
268
|
+
}
|
|
269
|
+
trackError(category) {
|
|
270
|
+
const now = Date.now();
|
|
271
|
+
const key = category;
|
|
272
|
+
const entry = this.errorCounts.get(key);
|
|
273
|
+
if (!entry || now > entry.resetAt) {
|
|
274
|
+
this.errorCounts.set(key, { count: 1, resetAt: now + 60000 });
|
|
275
|
+
}
|
|
276
|
+
else {
|
|
277
|
+
entry.count++;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
logError(error) {
|
|
281
|
+
this.errorLog.push(error);
|
|
282
|
+
// Trim log if too large
|
|
283
|
+
if (this.errorLog.length > this.maxLogSize) {
|
|
284
|
+
this.errorLog = this.errorLog.slice(-this.maxLogSize / 2);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
// ============================================================================
|
|
289
|
+
// Convenience Functions
|
|
290
|
+
// ============================================================================
|
|
291
|
+
const defaultHandler = new ErrorHandler();
|
|
292
|
+
/**
|
|
293
|
+
* Wrap a handler with error handling (convenience function)
|
|
294
|
+
*/
|
|
295
|
+
export function withErrorHandling(handler, context = {}) {
|
|
296
|
+
return defaultHandler.wrap(handler, context);
|
|
297
|
+
}
|
|
298
|
+
export default ErrorHandler;
|
|
299
|
+
//# sourceMappingURL=error-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../../src/production/error-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Production Hardening Module
|
|
3
|
+
*
|
|
4
|
+
* Provides production-grade utilities:
|
|
5
|
+
* - Error handling middleware
|
|
6
|
+
* - Rate limiting
|
|
7
|
+
* - Retry mechanisms with exponential backoff
|
|
8
|
+
* - Circuit breaker pattern
|
|
9
|
+
* - Monitoring and observability hooks
|
|
10
|
+
*
|
|
11
|
+
* @module @claude-flow/cli/production
|
|
12
|
+
*/
|
|
13
|
+
export { ErrorHandler, withErrorHandling } from './error-handler.js';
|
|
14
|
+
export type { ErrorContext, ErrorHandlerConfig } from './error-handler.js';
|
|
15
|
+
export { RateLimiter, createRateLimiter } from './rate-limiter.js';
|
|
16
|
+
export type { RateLimiterConfig, RateLimitResult } from './rate-limiter.js';
|
|
17
|
+
export { withRetry } from './retry.js';
|
|
18
|
+
export type { RetryConfig, RetryResult, RetryStrategy } from './retry.js';
|
|
19
|
+
export { CircuitBreaker } from './circuit-breaker.js';
|
|
20
|
+
export type { CircuitBreakerConfig, CircuitState } from './circuit-breaker.js';
|
|
21
|
+
export { MonitoringHooks, createMonitor } from './monitoring.js';
|
|
22
|
+
export type { MonitorConfig, MetricEvent } from './monitoring.js';
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/production/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACrE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACnE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACjE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Production Hardening Module
|
|
3
|
+
*
|
|
4
|
+
* Provides production-grade utilities:
|
|
5
|
+
* - Error handling middleware
|
|
6
|
+
* - Rate limiting
|
|
7
|
+
* - Retry mechanisms with exponential backoff
|
|
8
|
+
* - Circuit breaker pattern
|
|
9
|
+
* - Monitoring and observability hooks
|
|
10
|
+
*
|
|
11
|
+
* @module @claude-flow/cli/production
|
|
12
|
+
*/
|
|
13
|
+
export { ErrorHandler, withErrorHandling } from './error-handler.js';
|
|
14
|
+
export { RateLimiter, createRateLimiter } from './rate-limiter.js';
|
|
15
|
+
export { withRetry } from './retry.js';
|
|
16
|
+
export { CircuitBreaker } from './circuit-breaker.js';
|
|
17
|
+
export { MonitoringHooks, createMonitor } from './monitoring.js';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/production/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Production Monitoring and Observability
|
|
3
|
+
*
|
|
4
|
+
* Provides monitoring hooks for:
|
|
5
|
+
* - Request/response metrics
|
|
6
|
+
* - Error tracking
|
|
7
|
+
* - Performance monitoring
|
|
8
|
+
* - Health checks
|
|
9
|
+
* - Alerting
|
|
10
|
+
*
|
|
11
|
+
* @module @claude-flow/cli/production/monitoring
|
|
12
|
+
*/
|
|
13
|
+
export type MetricType = 'counter' | 'gauge' | 'histogram' | 'summary';
|
|
14
|
+
export interface MetricEvent {
|
|
15
|
+
name: string;
|
|
16
|
+
type: MetricType;
|
|
17
|
+
value: number;
|
|
18
|
+
labels: Record<string, string>;
|
|
19
|
+
timestamp: number;
|
|
20
|
+
}
|
|
21
|
+
export interface MonitorConfig {
|
|
22
|
+
enabled: boolean;
|
|
23
|
+
retentionMs: number;
|
|
24
|
+
maxMetrics: number;
|
|
25
|
+
samplingRate: number;
|
|
26
|
+
alertThresholds: Record<string, {
|
|
27
|
+
warning: number;
|
|
28
|
+
critical: number;
|
|
29
|
+
}>;
|
|
30
|
+
healthCheckIntervalMs: number;
|
|
31
|
+
reportingEndpoint?: string;
|
|
32
|
+
globalLabels: Record<string, string>;
|
|
33
|
+
}
|
|
34
|
+
export interface HealthStatus {
|
|
35
|
+
healthy: boolean;
|
|
36
|
+
checks: Record<string, {
|
|
37
|
+
status: 'healthy' | 'degraded' | 'unhealthy';
|
|
38
|
+
message?: string;
|
|
39
|
+
lastCheck: number;
|
|
40
|
+
responseTimeMs?: number;
|
|
41
|
+
}>;
|
|
42
|
+
timestamp: number;
|
|
43
|
+
}
|
|
44
|
+
export interface PerformanceMetrics {
|
|
45
|
+
requestCount: number;
|
|
46
|
+
errorCount: number;
|
|
47
|
+
errorRate: number;
|
|
48
|
+
avgResponseTimeMs: number;
|
|
49
|
+
p50ResponseTimeMs: number;
|
|
50
|
+
p95ResponseTimeMs: number;
|
|
51
|
+
p99ResponseTimeMs: number;
|
|
52
|
+
activeRequests: number;
|
|
53
|
+
uptime: number;
|
|
54
|
+
}
|
|
55
|
+
type AlertLevel = 'info' | 'warning' | 'critical';
|
|
56
|
+
interface Alert {
|
|
57
|
+
id: string;
|
|
58
|
+
level: AlertLevel;
|
|
59
|
+
metric: string;
|
|
60
|
+
message: string;
|
|
61
|
+
value: number;
|
|
62
|
+
threshold: number;
|
|
63
|
+
timestamp: number;
|
|
64
|
+
acknowledged: boolean;
|
|
65
|
+
}
|
|
66
|
+
export declare class MonitoringHooks {
|
|
67
|
+
private config;
|
|
68
|
+
private metrics;
|
|
69
|
+
private responseTimes;
|
|
70
|
+
private alerts;
|
|
71
|
+
private healthStatus;
|
|
72
|
+
private startTime;
|
|
73
|
+
private activeRequests;
|
|
74
|
+
private requestCount;
|
|
75
|
+
private errorCount;
|
|
76
|
+
private healthChecks;
|
|
77
|
+
constructor(config?: Partial<MonitorConfig>);
|
|
78
|
+
/**
|
|
79
|
+
* Record a counter metric
|
|
80
|
+
*/
|
|
81
|
+
counter(name: string, value?: number, labels?: Record<string, string>): void;
|
|
82
|
+
/**
|
|
83
|
+
* Record a gauge metric
|
|
84
|
+
*/
|
|
85
|
+
gauge(name: string, value: number, labels?: Record<string, string>): void;
|
|
86
|
+
/**
|
|
87
|
+
* Record a histogram metric
|
|
88
|
+
*/
|
|
89
|
+
histogram(name: string, value: number, labels?: Record<string, string>): void;
|
|
90
|
+
/**
|
|
91
|
+
* Record a metric event
|
|
92
|
+
*/
|
|
93
|
+
private recordMetric;
|
|
94
|
+
/**
|
|
95
|
+
* Start tracking a request
|
|
96
|
+
*/
|
|
97
|
+
startRequest(requestId: string): () => void;
|
|
98
|
+
/**
|
|
99
|
+
* Record an error
|
|
100
|
+
*/
|
|
101
|
+
recordError(error: Error, labels?: Record<string, string>): void;
|
|
102
|
+
/**
|
|
103
|
+
* Register a health check
|
|
104
|
+
*/
|
|
105
|
+
registerHealthCheck(name: string, check: () => Promise<{
|
|
106
|
+
healthy: boolean;
|
|
107
|
+
message?: string;
|
|
108
|
+
}>): void;
|
|
109
|
+
/**
|
|
110
|
+
* Run all health checks
|
|
111
|
+
*/
|
|
112
|
+
runHealthChecks(): Promise<HealthStatus>;
|
|
113
|
+
/**
|
|
114
|
+
* Get current health status
|
|
115
|
+
*/
|
|
116
|
+
getHealthStatus(): HealthStatus;
|
|
117
|
+
/**
|
|
118
|
+
* Get performance metrics
|
|
119
|
+
*/
|
|
120
|
+
getPerformanceMetrics(): PerformanceMetrics;
|
|
121
|
+
/**
|
|
122
|
+
* Get active alerts
|
|
123
|
+
*/
|
|
124
|
+
getAlerts(level?: AlertLevel): Alert[];
|
|
125
|
+
/**
|
|
126
|
+
* Acknowledge an alert
|
|
127
|
+
*/
|
|
128
|
+
acknowledgeAlert(alertId: string): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Clear all alerts
|
|
131
|
+
*/
|
|
132
|
+
clearAlerts(): void;
|
|
133
|
+
/**
|
|
134
|
+
* Get metrics for a specific name
|
|
135
|
+
*/
|
|
136
|
+
getMetrics(name: string, since?: number): MetricEvent[];
|
|
137
|
+
/**
|
|
138
|
+
* Get all metrics summary
|
|
139
|
+
*/
|
|
140
|
+
getMetricsSummary(): Record<string, {
|
|
141
|
+
count: number;
|
|
142
|
+
lastValue: number;
|
|
143
|
+
avgValue: number;
|
|
144
|
+
}>;
|
|
145
|
+
/**
|
|
146
|
+
* Reset all metrics
|
|
147
|
+
*/
|
|
148
|
+
reset(): void;
|
|
149
|
+
private checkAlerts;
|
|
150
|
+
private cleanupMetrics;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Create or get the default monitor
|
|
154
|
+
*/
|
|
155
|
+
export declare function createMonitor(config?: Partial<MonitorConfig>): MonitoringHooks;
|
|
156
|
+
/**
|
|
157
|
+
* Get the default monitor
|
|
158
|
+
*/
|
|
159
|
+
export declare function getMonitor(): MonitoringHooks;
|
|
160
|
+
export default MonitoringHooks;
|
|
161
|
+
//# sourceMappingURL=monitoring.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"monitoring.d.ts","sourceRoot":"","sources":["../../../src/production/monitoring.ts"],"names":[],"mappings":"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"}
|