@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.
Files changed (41) hide show
  1. package/dist/src/index.d.ts +10 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +6 -0
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/mcp-client.d.ts.map +1 -1
  6. package/dist/src/mcp-client.js +2 -0
  7. package/dist/src/mcp-client.js.map +1 -1
  8. package/dist/src/mcp-tools/claims-tools.d.ts +12 -0
  9. package/dist/src/mcp-tools/claims-tools.d.ts.map +1 -0
  10. package/dist/src/mcp-tools/claims-tools.js +732 -0
  11. package/dist/src/mcp-tools/claims-tools.js.map +1 -0
  12. package/dist/src/mcp-tools/index.d.ts +1 -0
  13. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  14. package/dist/src/mcp-tools/index.js +1 -0
  15. package/dist/src/mcp-tools/index.js.map +1 -1
  16. package/dist/src/production/circuit-breaker.d.ts +101 -0
  17. package/dist/src/production/circuit-breaker.d.ts.map +1 -0
  18. package/dist/src/production/circuit-breaker.js +241 -0
  19. package/dist/src/production/circuit-breaker.js.map +1 -0
  20. package/dist/src/production/error-handler.d.ts +92 -0
  21. package/dist/src/production/error-handler.d.ts.map +1 -0
  22. package/dist/src/production/error-handler.js +299 -0
  23. package/dist/src/production/error-handler.js.map +1 -0
  24. package/dist/src/production/index.d.ts +23 -0
  25. package/dist/src/production/index.d.ts.map +1 -0
  26. package/dist/src/production/index.js +18 -0
  27. package/dist/src/production/index.js.map +1 -0
  28. package/dist/src/production/monitoring.d.ts +161 -0
  29. package/dist/src/production/monitoring.d.ts.map +1 -0
  30. package/dist/src/production/monitoring.js +356 -0
  31. package/dist/src/production/monitoring.js.map +1 -0
  32. package/dist/src/production/rate-limiter.d.ts +80 -0
  33. package/dist/src/production/rate-limiter.d.ts.map +1 -0
  34. package/dist/src/production/rate-limiter.js +201 -0
  35. package/dist/src/production/rate-limiter.js.map +1 -0
  36. package/dist/src/production/retry.d.ts +48 -0
  37. package/dist/src/production/retry.d.ts.map +1 -0
  38. package/dist/src/production/retry.js +179 -0
  39. package/dist/src/production/retry.js.map +1 -0
  40. package/dist/tsconfig.tsbuildinfo +1 -1
  41. 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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"}