agentic-qe 2.0.0 → 2.1.1
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/.claude/agents/qx-partner.md +17 -4
- package/.claude/skills/accessibility-testing/SKILL.md +144 -692
- package/.claude/skills/agentic-quality-engineering/SKILL.md +176 -529
- package/.claude/skills/api-testing-patterns/SKILL.md +180 -560
- package/.claude/skills/brutal-honesty-review/SKILL.md +113 -603
- package/.claude/skills/bug-reporting-excellence/SKILL.md +116 -517
- package/.claude/skills/chaos-engineering-resilience/SKILL.md +127 -72
- package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +209 -404
- package/.claude/skills/code-review-quality/SKILL.md +158 -608
- package/.claude/skills/compatibility-testing/SKILL.md +148 -38
- package/.claude/skills/compliance-testing/SKILL.md +132 -63
- package/.claude/skills/consultancy-practices/SKILL.md +114 -446
- package/.claude/skills/context-driven-testing/SKILL.md +117 -381
- package/.claude/skills/contract-testing/SKILL.md +176 -141
- package/.claude/skills/database-testing/SKILL.md +137 -130
- package/.claude/skills/exploratory-testing-advanced/SKILL.md +160 -629
- package/.claude/skills/holistic-testing-pact/SKILL.md +140 -188
- package/.claude/skills/localization-testing/SKILL.md +145 -33
- package/.claude/skills/mobile-testing/SKILL.md +132 -448
- package/.claude/skills/mutation-testing/SKILL.md +147 -41
- package/.claude/skills/performance-testing/SKILL.md +200 -546
- package/.claude/skills/quality-metrics/SKILL.md +164 -519
- package/.claude/skills/refactoring-patterns/SKILL.md +132 -699
- package/.claude/skills/regression-testing/SKILL.md +120 -926
- package/.claude/skills/risk-based-testing/SKILL.md +157 -660
- package/.claude/skills/security-testing/SKILL.md +199 -538
- package/.claude/skills/sherlock-review/SKILL.md +163 -699
- package/.claude/skills/shift-left-testing/SKILL.md +161 -465
- package/.claude/skills/shift-right-testing/SKILL.md +161 -519
- package/.claude/skills/six-thinking-hats/SKILL.md +175 -1110
- package/.claude/skills/skills-manifest.json +71 -20
- package/.claude/skills/tdd-london-chicago/SKILL.md +131 -448
- package/.claude/skills/technical-writing/SKILL.md +103 -154
- package/.claude/skills/test-automation-strategy/SKILL.md +166 -772
- package/.claude/skills/test-data-management/SKILL.md +126 -910
- package/.claude/skills/test-design-techniques/SKILL.md +179 -89
- package/.claude/skills/test-environment-management/SKILL.md +136 -91
- package/.claude/skills/test-reporting-analytics/SKILL.md +169 -92
- package/.claude/skills/testability-scoring/SKILL.md +172 -538
- package/.claude/skills/testability-scoring/scripts/generate-html-report.js +0 -0
- package/.claude/skills/visual-testing-advanced/SKILL.md +155 -78
- package/.claude/skills/xp-practices/SKILL.md +151 -587
- package/CHANGELOG.md +86 -0
- package/README.md +23 -16
- package/dist/agents/QXPartnerAgent.d.ts +47 -1
- package/dist/agents/QXPartnerAgent.d.ts.map +1 -1
- package/dist/agents/QXPartnerAgent.js +2086 -125
- package/dist/agents/QXPartnerAgent.js.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +34 -31
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
- package/dist/cli/commands/init-claude-md-template.js +14 -0
- package/dist/cli/commands/init-claude-md-template.js.map +1 -1
- package/dist/core/SwarmCoordinator.d.ts +180 -0
- package/dist/core/SwarmCoordinator.d.ts.map +1 -0
- package/dist/core/SwarmCoordinator.js +473 -0
- package/dist/core/SwarmCoordinator.js.map +1 -0
- package/dist/core/memory/ReflexionMemoryAdapter.d.ts +109 -0
- package/dist/core/memory/ReflexionMemoryAdapter.d.ts.map +1 -0
- package/dist/core/memory/ReflexionMemoryAdapter.js +306 -0
- package/dist/core/memory/ReflexionMemoryAdapter.js.map +1 -0
- package/dist/core/memory/RuVectorPatternStore.d.ts +28 -0
- package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -1
- package/dist/core/memory/RuVectorPatternStore.js +70 -0
- package/dist/core/memory/RuVectorPatternStore.js.map +1 -1
- package/dist/core/memory/SparseVectorSearch.d.ts +55 -0
- package/dist/core/memory/SparseVectorSearch.d.ts.map +1 -0
- package/dist/core/memory/SparseVectorSearch.js +130 -0
- package/dist/core/memory/SparseVectorSearch.js.map +1 -0
- package/dist/core/memory/TieredCompression.d.ts +81 -0
- package/dist/core/memory/TieredCompression.d.ts.map +1 -0
- package/dist/core/memory/TieredCompression.js +270 -0
- package/dist/core/memory/TieredCompression.js.map +1 -0
- package/dist/core/memory/index.d.ts +6 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +29 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/metrics/MetricsAggregator.d.ts +228 -0
- package/dist/core/metrics/MetricsAggregator.d.ts.map +1 -0
- package/dist/core/metrics/MetricsAggregator.js +482 -0
- package/dist/core/metrics/MetricsAggregator.js.map +1 -0
- package/dist/core/metrics/index.d.ts +5 -0
- package/dist/core/metrics/index.d.ts.map +1 -0
- package/dist/core/metrics/index.js +11 -0
- package/dist/core/metrics/index.js.map +1 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts +5 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -1
- package/dist/core/optimization/SwarmOptimizer.js +17 -0
- package/dist/core/optimization/SwarmOptimizer.js.map +1 -1
- package/dist/core/orchestration/AdaptiveScheduler.d.ts +190 -0
- package/dist/core/orchestration/AdaptiveScheduler.d.ts.map +1 -0
- package/dist/core/orchestration/AdaptiveScheduler.js +460 -0
- package/dist/core/orchestration/AdaptiveScheduler.js.map +1 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts +13 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -1
- package/dist/core/orchestration/WorkflowOrchestrator.js +32 -0
- package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -1
- package/dist/core/recovery/CircuitBreaker.d.ts +176 -0
- package/dist/core/recovery/CircuitBreaker.d.ts.map +1 -0
- package/dist/core/recovery/CircuitBreaker.js +382 -0
- package/dist/core/recovery/CircuitBreaker.js.map +1 -0
- package/dist/core/recovery/RecoveryOrchestrator.d.ts +186 -0
- package/dist/core/recovery/RecoveryOrchestrator.d.ts.map +1 -0
- package/dist/core/recovery/RecoveryOrchestrator.js +476 -0
- package/dist/core/recovery/RecoveryOrchestrator.js.map +1 -0
- package/dist/core/recovery/RetryStrategy.d.ts +127 -0
- package/dist/core/recovery/RetryStrategy.d.ts.map +1 -0
- package/dist/core/recovery/RetryStrategy.js +314 -0
- package/dist/core/recovery/RetryStrategy.js.map +1 -0
- package/dist/core/recovery/index.d.ts +8 -0
- package/dist/core/recovery/index.d.ts.map +1 -0
- package/dist/core/recovery/index.js +27 -0
- package/dist/core/recovery/index.js.map +1 -0
- package/dist/core/skills/DependencyResolver.d.ts +99 -0
- package/dist/core/skills/DependencyResolver.d.ts.map +1 -0
- package/dist/core/skills/DependencyResolver.js +260 -0
- package/dist/core/skills/DependencyResolver.js.map +1 -0
- package/dist/core/skills/ManifestGenerator.d.ts +114 -0
- package/dist/core/skills/ManifestGenerator.d.ts.map +1 -0
- package/dist/core/skills/ManifestGenerator.js +449 -0
- package/dist/core/skills/ManifestGenerator.js.map +1 -0
- package/dist/core/skills/index.d.ts +9 -0
- package/dist/core/skills/index.d.ts.map +1 -0
- package/dist/core/skills/index.js +24 -0
- package/dist/core/skills/index.js.map +1 -0
- package/dist/mcp/handlers/chaos/chaos-inject-failure.d.ts +5 -0
- package/dist/mcp/handlers/chaos/chaos-inject-failure.d.ts.map +1 -1
- package/dist/mcp/handlers/chaos/chaos-inject-failure.js +36 -2
- package/dist/mcp/handlers/chaos/chaos-inject-failure.js.map +1 -1
- package/dist/mcp/handlers/chaos/chaos-inject-latency.d.ts +5 -0
- package/dist/mcp/handlers/chaos/chaos-inject-latency.d.ts.map +1 -1
- package/dist/mcp/handlers/chaos/chaos-inject-latency.js +36 -2
- package/dist/mcp/handlers/chaos/chaos-inject-latency.js.map +1 -1
- package/dist/mcp/server.d.ts +9 -9
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +1 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/types/qx.d.ts +113 -7
- package/dist/types/qx.d.ts.map +1 -1
- package/dist/types/qx.js.map +1 -1
- package/dist/visualization/api/RestEndpoints.js +1 -1
- package/dist/visualization/api/RestEndpoints.js.map +1 -1
- package/package.json +15 -54
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecoveryOrchestrator.js","sourceRoot":"","sources":["../../../src/core/recovery/RecoveryOrchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Retry Strategy with Multiple Backoff Algorithms
|
|
3
|
+
* Provides configurable retry logic for transient failures
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Backoff strategy types
|
|
7
|
+
*/
|
|
8
|
+
export type BackoffType = 'exponential' | 'linear' | 'constant' | 'fibonacci' | 'decorrelated-jitter';
|
|
9
|
+
/**
|
|
10
|
+
* Retry configuration
|
|
11
|
+
*/
|
|
12
|
+
export interface RetryConfig {
|
|
13
|
+
/** Maximum number of retry attempts */
|
|
14
|
+
maxAttempts: number;
|
|
15
|
+
/** Initial delay in milliseconds */
|
|
16
|
+
initialDelay: number;
|
|
17
|
+
/** Maximum delay in milliseconds */
|
|
18
|
+
maxDelay: number;
|
|
19
|
+
/** Backoff strategy */
|
|
20
|
+
backoffType: BackoffType;
|
|
21
|
+
/** Multiplier for exponential backoff */
|
|
22
|
+
multiplier: number;
|
|
23
|
+
/** Add randomization to delays */
|
|
24
|
+
jitter: boolean;
|
|
25
|
+
/** Jitter factor (0-1) */
|
|
26
|
+
jitterFactor: number;
|
|
27
|
+
/** Errors that should trigger retry */
|
|
28
|
+
retryableErrors?: string[];
|
|
29
|
+
/** Errors that should NOT trigger retry */
|
|
30
|
+
nonRetryableErrors?: string[];
|
|
31
|
+
/** Custom function to determine if error is retryable */
|
|
32
|
+
isRetryable?: (error: Error) => boolean;
|
|
33
|
+
/** Callback on each retry attempt */
|
|
34
|
+
onRetry?: (attempt: number, error: Error, delay: number) => void;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Retry result with metadata
|
|
38
|
+
*/
|
|
39
|
+
export interface RetryResult<T> {
|
|
40
|
+
success: boolean;
|
|
41
|
+
result?: T;
|
|
42
|
+
error?: Error;
|
|
43
|
+
attempts: number;
|
|
44
|
+
totalDelay: number;
|
|
45
|
+
retryHistory: {
|
|
46
|
+
attempt: number;
|
|
47
|
+
delay: number;
|
|
48
|
+
error: string;
|
|
49
|
+
}[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Retry context for tracking state
|
|
53
|
+
*/
|
|
54
|
+
export interface RetryContext {
|
|
55
|
+
attempt: number;
|
|
56
|
+
totalAttempts: number;
|
|
57
|
+
lastDelay: number;
|
|
58
|
+
totalDelay: number;
|
|
59
|
+
startTime: number;
|
|
60
|
+
errors: Error[];
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Retry Strategy Implementation
|
|
64
|
+
*/
|
|
65
|
+
export declare class RetryStrategy {
|
|
66
|
+
private config;
|
|
67
|
+
private fibonacciCache;
|
|
68
|
+
constructor(config?: Partial<RetryConfig>);
|
|
69
|
+
/**
|
|
70
|
+
* Execute operation with retry logic
|
|
71
|
+
*/
|
|
72
|
+
execute<T>(operation: () => Promise<T>): Promise<RetryResult<T>>;
|
|
73
|
+
/**
|
|
74
|
+
* Determine if error is retryable
|
|
75
|
+
*/
|
|
76
|
+
shouldRetry(error: Error, context: RetryContext): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Calculate delay for next retry attempt
|
|
79
|
+
*/
|
|
80
|
+
calculateDelay(context: RetryContext): number;
|
|
81
|
+
/**
|
|
82
|
+
* Apply jitter to delay
|
|
83
|
+
*/
|
|
84
|
+
private applyJitter;
|
|
85
|
+
/**
|
|
86
|
+
* Get fibonacci number (cached for performance)
|
|
87
|
+
*/
|
|
88
|
+
private getFibonacci;
|
|
89
|
+
/**
|
|
90
|
+
* Random number between min and max
|
|
91
|
+
*/
|
|
92
|
+
private randomBetween;
|
|
93
|
+
/**
|
|
94
|
+
* Sleep for specified milliseconds
|
|
95
|
+
*/
|
|
96
|
+
private sleep;
|
|
97
|
+
/**
|
|
98
|
+
* Get current configuration
|
|
99
|
+
*/
|
|
100
|
+
getConfig(): RetryConfig;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Retry decorator for async functions
|
|
104
|
+
*/
|
|
105
|
+
export declare function withRetry<T>(operation: () => Promise<T>, config?: Partial<RetryConfig>): Promise<T>;
|
|
106
|
+
/**
|
|
107
|
+
* Create a retryable wrapper for a function
|
|
108
|
+
*/
|
|
109
|
+
export declare function createRetryable<TArgs extends any[], TResult>(fn: (...args: TArgs) => Promise<TResult>, config?: Partial<RetryConfig>): (...args: TArgs) => Promise<RetryResult<TResult>>;
|
|
110
|
+
/**
|
|
111
|
+
* Predefined retry strategies for common use cases
|
|
112
|
+
*/
|
|
113
|
+
export declare const RetryStrategies: {
|
|
114
|
+
/** Fast retry for quick transient failures */
|
|
115
|
+
fast: RetryStrategy;
|
|
116
|
+
/** Standard retry for most operations */
|
|
117
|
+
standard: RetryStrategy;
|
|
118
|
+
/** Aggressive retry for critical operations */
|
|
119
|
+
aggressive: RetryStrategy;
|
|
120
|
+
/** Gentle retry for rate-limited APIs */
|
|
121
|
+
rateLimited: RetryStrategy;
|
|
122
|
+
/** Database retry for connection issues */
|
|
123
|
+
database: RetryStrategy;
|
|
124
|
+
/** Network retry for HTTP calls */
|
|
125
|
+
network: RetryStrategy;
|
|
126
|
+
};
|
|
127
|
+
//# sourceMappingURL=RetryStrategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RetryStrategy.d.ts","sourceRoot":"","sources":["../../../src/core/recovery/RetryStrategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Retry Strategy with Multiple Backoff Algorithms
|
|
4
|
+
* Provides configurable retry logic for transient failures
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.RetryStrategies = exports.RetryStrategy = void 0;
|
|
8
|
+
exports.withRetry = withRetry;
|
|
9
|
+
exports.createRetryable = createRetryable;
|
|
10
|
+
/**
|
|
11
|
+
* Default retryable error patterns (transient failures)
|
|
12
|
+
*/
|
|
13
|
+
const DEFAULT_RETRYABLE_PATTERNS = [
|
|
14
|
+
'ECONNRESET',
|
|
15
|
+
'ECONNREFUSED',
|
|
16
|
+
'ETIMEDOUT',
|
|
17
|
+
'ENOTFOUND',
|
|
18
|
+
'EAI_AGAIN',
|
|
19
|
+
'ENETUNREACH',
|
|
20
|
+
'EHOSTUNREACH',
|
|
21
|
+
'timeout',
|
|
22
|
+
'rate limit',
|
|
23
|
+
'too many requests',
|
|
24
|
+
'429',
|
|
25
|
+
'502',
|
|
26
|
+
'503',
|
|
27
|
+
'504',
|
|
28
|
+
];
|
|
29
|
+
/**
|
|
30
|
+
* Default non-retryable error patterns (permanent failures)
|
|
31
|
+
*/
|
|
32
|
+
const DEFAULT_NON_RETRYABLE_PATTERNS = [
|
|
33
|
+
'400',
|
|
34
|
+
'401',
|
|
35
|
+
'403',
|
|
36
|
+
'404',
|
|
37
|
+
'405',
|
|
38
|
+
'422',
|
|
39
|
+
'validation',
|
|
40
|
+
'invalid',
|
|
41
|
+
'unauthorized',
|
|
42
|
+
'forbidden',
|
|
43
|
+
'not found',
|
|
44
|
+
];
|
|
45
|
+
/**
|
|
46
|
+
* Retry Strategy Implementation
|
|
47
|
+
*/
|
|
48
|
+
class RetryStrategy {
|
|
49
|
+
constructor(config = {}) {
|
|
50
|
+
this.fibonacciCache = [1, 1];
|
|
51
|
+
this.config = {
|
|
52
|
+
maxAttempts: 3,
|
|
53
|
+
initialDelay: 1000,
|
|
54
|
+
maxDelay: 30000,
|
|
55
|
+
backoffType: 'exponential',
|
|
56
|
+
multiplier: 2,
|
|
57
|
+
jitter: true,
|
|
58
|
+
jitterFactor: 0.25,
|
|
59
|
+
retryableErrors: DEFAULT_RETRYABLE_PATTERNS,
|
|
60
|
+
nonRetryableErrors: DEFAULT_NON_RETRYABLE_PATTERNS,
|
|
61
|
+
...config,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Execute operation with retry logic
|
|
66
|
+
*/
|
|
67
|
+
async execute(operation) {
|
|
68
|
+
const context = {
|
|
69
|
+
attempt: 0,
|
|
70
|
+
totalAttempts: this.config.maxAttempts,
|
|
71
|
+
lastDelay: 0,
|
|
72
|
+
totalDelay: 0,
|
|
73
|
+
startTime: Date.now(),
|
|
74
|
+
errors: [],
|
|
75
|
+
};
|
|
76
|
+
const retryHistory = [];
|
|
77
|
+
while (context.attempt < this.config.maxAttempts) {
|
|
78
|
+
context.attempt++;
|
|
79
|
+
try {
|
|
80
|
+
const result = await operation();
|
|
81
|
+
return {
|
|
82
|
+
success: true,
|
|
83
|
+
result,
|
|
84
|
+
attempts: context.attempt,
|
|
85
|
+
totalDelay: context.totalDelay,
|
|
86
|
+
retryHistory,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
91
|
+
context.errors.push(err);
|
|
92
|
+
// Check if we should retry
|
|
93
|
+
if (!this.shouldRetry(err, context)) {
|
|
94
|
+
return {
|
|
95
|
+
success: false,
|
|
96
|
+
error: err,
|
|
97
|
+
attempts: context.attempt,
|
|
98
|
+
totalDelay: context.totalDelay,
|
|
99
|
+
retryHistory,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
// Check if we've exhausted attempts
|
|
103
|
+
if (context.attempt >= this.config.maxAttempts) {
|
|
104
|
+
return {
|
|
105
|
+
success: false,
|
|
106
|
+
error: err,
|
|
107
|
+
attempts: context.attempt,
|
|
108
|
+
totalDelay: context.totalDelay,
|
|
109
|
+
retryHistory,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
// Calculate delay
|
|
113
|
+
const delay = this.calculateDelay(context);
|
|
114
|
+
context.lastDelay = delay;
|
|
115
|
+
context.totalDelay += delay;
|
|
116
|
+
retryHistory.push({
|
|
117
|
+
attempt: context.attempt,
|
|
118
|
+
delay,
|
|
119
|
+
error: err.message,
|
|
120
|
+
});
|
|
121
|
+
// Notify callback
|
|
122
|
+
if (this.config.onRetry) {
|
|
123
|
+
this.config.onRetry(context.attempt, err, delay);
|
|
124
|
+
}
|
|
125
|
+
// Wait before retry
|
|
126
|
+
await this.sleep(delay);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Should not reach here, but just in case
|
|
130
|
+
return {
|
|
131
|
+
success: false,
|
|
132
|
+
error: context.errors[context.errors.length - 1],
|
|
133
|
+
attempts: context.attempt,
|
|
134
|
+
totalDelay: context.totalDelay,
|
|
135
|
+
retryHistory,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Determine if error is retryable
|
|
140
|
+
*/
|
|
141
|
+
shouldRetry(error, context) {
|
|
142
|
+
// Check custom function first
|
|
143
|
+
if (this.config.isRetryable) {
|
|
144
|
+
return this.config.isRetryable(error);
|
|
145
|
+
}
|
|
146
|
+
const errorStr = error.message.toLowerCase();
|
|
147
|
+
// Check non-retryable patterns (takes precedence)
|
|
148
|
+
if (this.config.nonRetryableErrors) {
|
|
149
|
+
for (const pattern of this.config.nonRetryableErrors) {
|
|
150
|
+
if (errorStr.includes(pattern.toLowerCase())) {
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Check retryable patterns
|
|
156
|
+
if (this.config.retryableErrors) {
|
|
157
|
+
for (const pattern of this.config.retryableErrors) {
|
|
158
|
+
if (errorStr.includes(pattern.toLowerCase())) {
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Default to retrying for unknown errors (safer for transient issues)
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Calculate delay for next retry attempt
|
|
168
|
+
*/
|
|
169
|
+
calculateDelay(context) {
|
|
170
|
+
let delay;
|
|
171
|
+
switch (this.config.backoffType) {
|
|
172
|
+
case 'constant':
|
|
173
|
+
delay = this.config.initialDelay;
|
|
174
|
+
break;
|
|
175
|
+
case 'linear':
|
|
176
|
+
delay = this.config.initialDelay * context.attempt;
|
|
177
|
+
break;
|
|
178
|
+
case 'exponential':
|
|
179
|
+
delay = this.config.initialDelay * Math.pow(this.config.multiplier, context.attempt - 1);
|
|
180
|
+
break;
|
|
181
|
+
case 'fibonacci':
|
|
182
|
+
delay = this.config.initialDelay * this.getFibonacci(context.attempt);
|
|
183
|
+
break;
|
|
184
|
+
case 'decorrelated-jitter':
|
|
185
|
+
// AWS-style decorrelated jitter
|
|
186
|
+
const prevDelay = context.lastDelay || this.config.initialDelay;
|
|
187
|
+
delay = Math.min(this.config.maxDelay, this.randomBetween(this.config.initialDelay, prevDelay * 3));
|
|
188
|
+
break;
|
|
189
|
+
default:
|
|
190
|
+
delay = this.config.initialDelay;
|
|
191
|
+
}
|
|
192
|
+
// Apply max delay cap
|
|
193
|
+
delay = Math.min(delay, this.config.maxDelay);
|
|
194
|
+
// Apply jitter if enabled (except for decorrelated-jitter which has built-in randomization)
|
|
195
|
+
if (this.config.jitter && this.config.backoffType !== 'decorrelated-jitter') {
|
|
196
|
+
delay = this.applyJitter(delay);
|
|
197
|
+
}
|
|
198
|
+
return Math.round(delay);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Apply jitter to delay
|
|
202
|
+
*/
|
|
203
|
+
applyJitter(delay) {
|
|
204
|
+
const jitterRange = delay * this.config.jitterFactor;
|
|
205
|
+
const jitter = this.randomBetween(-jitterRange, jitterRange);
|
|
206
|
+
return Math.max(0, delay + jitter);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Get fibonacci number (cached for performance)
|
|
210
|
+
*/
|
|
211
|
+
getFibonacci(n) {
|
|
212
|
+
while (this.fibonacciCache.length <= n) {
|
|
213
|
+
const len = this.fibonacciCache.length;
|
|
214
|
+
this.fibonacciCache.push(this.fibonacciCache[len - 1] + this.fibonacciCache[len - 2]);
|
|
215
|
+
}
|
|
216
|
+
return this.fibonacciCache[n - 1];
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Random number between min and max
|
|
220
|
+
*/
|
|
221
|
+
randomBetween(min, max) {
|
|
222
|
+
return min + Math.random() * (max - min);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Sleep for specified milliseconds
|
|
226
|
+
*/
|
|
227
|
+
sleep(ms) {
|
|
228
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Get current configuration
|
|
232
|
+
*/
|
|
233
|
+
getConfig() {
|
|
234
|
+
return { ...this.config };
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
exports.RetryStrategy = RetryStrategy;
|
|
238
|
+
/**
|
|
239
|
+
* Retry decorator for async functions
|
|
240
|
+
*/
|
|
241
|
+
function withRetry(operation, config) {
|
|
242
|
+
const strategy = new RetryStrategy(config);
|
|
243
|
+
return strategy.execute(operation).then(result => {
|
|
244
|
+
if (result.success) {
|
|
245
|
+
return result.result;
|
|
246
|
+
}
|
|
247
|
+
throw result.error;
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Create a retryable wrapper for a function
|
|
252
|
+
*/
|
|
253
|
+
function createRetryable(fn, config) {
|
|
254
|
+
const strategy = new RetryStrategy(config);
|
|
255
|
+
return (...args) => strategy.execute(() => fn(...args));
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Predefined retry strategies for common use cases
|
|
259
|
+
*/
|
|
260
|
+
exports.RetryStrategies = {
|
|
261
|
+
/** Fast retry for quick transient failures */
|
|
262
|
+
fast: new RetryStrategy({
|
|
263
|
+
maxAttempts: 3,
|
|
264
|
+
initialDelay: 100,
|
|
265
|
+
maxDelay: 1000,
|
|
266
|
+
backoffType: 'exponential',
|
|
267
|
+
multiplier: 2,
|
|
268
|
+
}),
|
|
269
|
+
/** Standard retry for most operations */
|
|
270
|
+
standard: new RetryStrategy({
|
|
271
|
+
maxAttempts: 5,
|
|
272
|
+
initialDelay: 1000,
|
|
273
|
+
maxDelay: 30000,
|
|
274
|
+
backoffType: 'exponential',
|
|
275
|
+
multiplier: 2,
|
|
276
|
+
jitter: true,
|
|
277
|
+
}),
|
|
278
|
+
/** Aggressive retry for critical operations */
|
|
279
|
+
aggressive: new RetryStrategy({
|
|
280
|
+
maxAttempts: 10,
|
|
281
|
+
initialDelay: 500,
|
|
282
|
+
maxDelay: 60000,
|
|
283
|
+
backoffType: 'decorrelated-jitter',
|
|
284
|
+
jitter: true,
|
|
285
|
+
}),
|
|
286
|
+
/** Gentle retry for rate-limited APIs */
|
|
287
|
+
rateLimited: new RetryStrategy({
|
|
288
|
+
maxAttempts: 5,
|
|
289
|
+
initialDelay: 5000,
|
|
290
|
+
maxDelay: 120000,
|
|
291
|
+
backoffType: 'fibonacci',
|
|
292
|
+
jitter: true,
|
|
293
|
+
}),
|
|
294
|
+
/** Database retry for connection issues */
|
|
295
|
+
database: new RetryStrategy({
|
|
296
|
+
maxAttempts: 3,
|
|
297
|
+
initialDelay: 500,
|
|
298
|
+
maxDelay: 5000,
|
|
299
|
+
backoffType: 'exponential',
|
|
300
|
+
multiplier: 1.5,
|
|
301
|
+
jitter: true,
|
|
302
|
+
retryableErrors: ['SQLITE_BUSY', 'SQLITE_LOCKED', 'connection', 'timeout'],
|
|
303
|
+
}),
|
|
304
|
+
/** Network retry for HTTP calls */
|
|
305
|
+
network: new RetryStrategy({
|
|
306
|
+
maxAttempts: 4,
|
|
307
|
+
initialDelay: 1000,
|
|
308
|
+
maxDelay: 15000,
|
|
309
|
+
backoffType: 'exponential',
|
|
310
|
+
multiplier: 2,
|
|
311
|
+
jitter: true,
|
|
312
|
+
}),
|
|
313
|
+
};
|
|
314
|
+
//# sourceMappingURL=RetryStrategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RetryStrategy.js","sourceRoot":"","sources":["../../../src/core/recovery/RetryStrategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recovery Module - Error Recovery and Resilience
|
|
3
|
+
* Provides circuit breakers, retry strategies, and coordinated recovery
|
|
4
|
+
*/
|
|
5
|
+
export { CircuitBreaker, CircuitBreakerManager, CircuitState, CircuitBreakerConfig, CircuitBreakerMetrics, CircuitBreakerOpenError, getCircuitBreakerManager, resetCircuitBreakerManager, } from './CircuitBreaker.js';
|
|
6
|
+
export { RetryStrategy, RetryConfig, RetryResult, RetryContext, BackoffType, withRetry, createRetryable, RetryStrategies, } from './RetryStrategy.js';
|
|
7
|
+
export { RecoveryOrchestrator, RecoveryStrategyType, RecoverableComponent, HealthStatus, RecoveryActionResult, ComponentHealth, RecoveryPolicy, RecoveryEvent, getRecoveryOrchestrator, resetRecoveryOrchestrator, } from './RecoveryOrchestrator.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/recovery/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,YAAY,EACZ,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,EACX,YAAY,EACZ,WAAW,EACX,SAAS,EACT,eAAe,EACf,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Recovery Module - Error Recovery and Resilience
|
|
4
|
+
* Provides circuit breakers, retry strategies, and coordinated recovery
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.resetRecoveryOrchestrator = exports.getRecoveryOrchestrator = exports.RecoveryOrchestrator = exports.RetryStrategies = exports.createRetryable = exports.withRetry = exports.RetryStrategy = exports.resetCircuitBreakerManager = exports.getCircuitBreakerManager = exports.CircuitBreakerOpenError = exports.CircuitState = exports.CircuitBreakerManager = exports.CircuitBreaker = void 0;
|
|
8
|
+
// Circuit Breaker
|
|
9
|
+
var CircuitBreaker_js_1 = require("./CircuitBreaker.js");
|
|
10
|
+
Object.defineProperty(exports, "CircuitBreaker", { enumerable: true, get: function () { return CircuitBreaker_js_1.CircuitBreaker; } });
|
|
11
|
+
Object.defineProperty(exports, "CircuitBreakerManager", { enumerable: true, get: function () { return CircuitBreaker_js_1.CircuitBreakerManager; } });
|
|
12
|
+
Object.defineProperty(exports, "CircuitState", { enumerable: true, get: function () { return CircuitBreaker_js_1.CircuitState; } });
|
|
13
|
+
Object.defineProperty(exports, "CircuitBreakerOpenError", { enumerable: true, get: function () { return CircuitBreaker_js_1.CircuitBreakerOpenError; } });
|
|
14
|
+
Object.defineProperty(exports, "getCircuitBreakerManager", { enumerable: true, get: function () { return CircuitBreaker_js_1.getCircuitBreakerManager; } });
|
|
15
|
+
Object.defineProperty(exports, "resetCircuitBreakerManager", { enumerable: true, get: function () { return CircuitBreaker_js_1.resetCircuitBreakerManager; } });
|
|
16
|
+
// Retry Strategy
|
|
17
|
+
var RetryStrategy_js_1 = require("./RetryStrategy.js");
|
|
18
|
+
Object.defineProperty(exports, "RetryStrategy", { enumerable: true, get: function () { return RetryStrategy_js_1.RetryStrategy; } });
|
|
19
|
+
Object.defineProperty(exports, "withRetry", { enumerable: true, get: function () { return RetryStrategy_js_1.withRetry; } });
|
|
20
|
+
Object.defineProperty(exports, "createRetryable", { enumerable: true, get: function () { return RetryStrategy_js_1.createRetryable; } });
|
|
21
|
+
Object.defineProperty(exports, "RetryStrategies", { enumerable: true, get: function () { return RetryStrategy_js_1.RetryStrategies; } });
|
|
22
|
+
// Recovery Orchestrator
|
|
23
|
+
var RecoveryOrchestrator_js_1 = require("./RecoveryOrchestrator.js");
|
|
24
|
+
Object.defineProperty(exports, "RecoveryOrchestrator", { enumerable: true, get: function () { return RecoveryOrchestrator_js_1.RecoveryOrchestrator; } });
|
|
25
|
+
Object.defineProperty(exports, "getRecoveryOrchestrator", { enumerable: true, get: function () { return RecoveryOrchestrator_js_1.getRecoveryOrchestrator; } });
|
|
26
|
+
Object.defineProperty(exports, "resetRecoveryOrchestrator", { enumerable: true, get: function () { return RecoveryOrchestrator_js_1.resetRecoveryOrchestrator; } });
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/recovery/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,kBAAkB;AAClB,yDAS6B;AAR3B,mHAAA,cAAc,OAAA;AACd,0HAAA,qBAAqB,OAAA;AACrB,iHAAA,YAAY,OAAA;AAGZ,4HAAA,uBAAuB,OAAA;AACvB,6HAAA,wBAAwB,OAAA;AACxB,+HAAA,0BAA0B,OAAA;AAG5B,iBAAiB;AACjB,uDAS4B;AAR1B,iHAAA,aAAa,OAAA;AAKb,6GAAA,SAAS,OAAA;AACT,mHAAA,eAAe,OAAA;AACf,mHAAA,eAAe,OAAA;AAGjB,wBAAwB;AACxB,qEAWmC;AAVjC,+HAAA,oBAAoB,OAAA;AAQpB,kIAAA,uBAAuB,OAAA;AACvB,oIAAA,yBAAyB,OAAA"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency Resolver for Skill Loading
|
|
3
|
+
* Handles skill dependency graphs with cycle detection and optimal load ordering
|
|
4
|
+
*/
|
|
5
|
+
import { SkillManifest } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Dependency resolution result
|
|
8
|
+
*/
|
|
9
|
+
export interface DependencyResolution {
|
|
10
|
+
/** Skills in optimal load order (dependencies first) */
|
|
11
|
+
loadOrder: string[];
|
|
12
|
+
/** Dependency tree for visualization */
|
|
13
|
+
tree: DependencyNode;
|
|
14
|
+
/** Any circular dependencies detected */
|
|
15
|
+
cycles: string[][];
|
|
16
|
+
/** Skills that couldn't be resolved (missing dependencies) */
|
|
17
|
+
unresolved: {
|
|
18
|
+
skillId: string;
|
|
19
|
+
missing: string[];
|
|
20
|
+
}[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Dependency tree node
|
|
24
|
+
*/
|
|
25
|
+
export interface DependencyNode {
|
|
26
|
+
id: string;
|
|
27
|
+
depth: number;
|
|
28
|
+
dependencies: DependencyNode[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Resolution options
|
|
32
|
+
*/
|
|
33
|
+
export interface ResolverOptions {
|
|
34
|
+
/** Maximum dependency depth to prevent infinite recursion */
|
|
35
|
+
maxDepth: number;
|
|
36
|
+
/** Include optional dependencies */
|
|
37
|
+
includeOptional: boolean;
|
|
38
|
+
/** Strategy for handling cycles */
|
|
39
|
+
cycleStrategy: 'error' | 'warn' | 'break';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Skill Dependency Resolver
|
|
43
|
+
* Resolves skill dependencies with cycle detection and optimal ordering
|
|
44
|
+
*/
|
|
45
|
+
export declare class DependencyResolver {
|
|
46
|
+
private manifest;
|
|
47
|
+
private skillMap;
|
|
48
|
+
private options;
|
|
49
|
+
constructor(manifest: SkillManifest, options?: Partial<ResolverOptions>);
|
|
50
|
+
/**
|
|
51
|
+
* Resolve dependencies for a single skill
|
|
52
|
+
*/
|
|
53
|
+
resolve(skillId: string): DependencyResolution;
|
|
54
|
+
/**
|
|
55
|
+
* Resolve dependencies for multiple skills
|
|
56
|
+
*/
|
|
57
|
+
resolveMultiple(skillIds: string[]): DependencyResolution;
|
|
58
|
+
/**
|
|
59
|
+
* Get all skills that depend on a given skill (reverse dependencies)
|
|
60
|
+
*/
|
|
61
|
+
getDependents(skillId: string): string[];
|
|
62
|
+
/**
|
|
63
|
+
* Get direct dependencies of a skill
|
|
64
|
+
*/
|
|
65
|
+
getDirectDependencies(skillId: string): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Get all transitive dependencies (full dependency closure)
|
|
68
|
+
*/
|
|
69
|
+
getTransitiveDependencies(skillId: string): string[];
|
|
70
|
+
/**
|
|
71
|
+
* Check if adding a dependency would create a cycle
|
|
72
|
+
*/
|
|
73
|
+
wouldCreateCycle(fromSkillId: string, toSkillId: string): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Build dependency tree recursively
|
|
76
|
+
*/
|
|
77
|
+
private buildDependencyTree;
|
|
78
|
+
/**
|
|
79
|
+
* Topological sort for optimal load order (dependencies first)
|
|
80
|
+
*/
|
|
81
|
+
private topologicalSort;
|
|
82
|
+
/**
|
|
83
|
+
* Deduplicate cycle arrays (same cycle may be detected from different starting points)
|
|
84
|
+
*/
|
|
85
|
+
private deduplicateCycles;
|
|
86
|
+
/**
|
|
87
|
+
* Normalize cycle to start from smallest element for deduplication
|
|
88
|
+
*/
|
|
89
|
+
private normalizeCycle;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Create a dependency resolver from manifest
|
|
93
|
+
*/
|
|
94
|
+
export declare function createDependencyResolver(manifest: SkillManifest, options?: Partial<ResolverOptions>): DependencyResolver;
|
|
95
|
+
/**
|
|
96
|
+
* Visualize dependency tree as ASCII art
|
|
97
|
+
*/
|
|
98
|
+
export declare function visualizeDependencyTree(node: DependencyNode, prefix?: string): string;
|
|
99
|
+
//# sourceMappingURL=DependencyResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DependencyResolver.d.ts","sourceRoot":"","sources":["../../../src/core/skills/DependencyResolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,wCAAwC;IACxC,IAAI,EAAE,cAAc,CAAC;IACrB,yCAAyC;IACzC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC;IACnB,8DAA8D;IAC9D,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,cAAc,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,eAAe,EAAE,OAAO,CAAC;IACzB,mCAAmC;IACnC,aAAa,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;CAC3C;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,OAAO,CAAkB;gBAErB,QAAQ,EAAE,aAAa,EAAE,OAAO,GAAE,OAAO,CAAC,eAAe,CAAM;IAW3E;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB;IAI9C;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,oBAAoB;IAmCzD;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAYxC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAKhD;;OAEG;IACH,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAKpD;;OAEG;IACH,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAMjE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8E3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAiCvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkBzB;;OAEG;IACH,OAAO,CAAC,cAAc;CAmBvB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACjC,kBAAkB,CAEpB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,GAAE,MAAW,GAAG,MAAM,CAuBzF"}
|