agentic-qe 1.9.4 → 2.1.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 (262) hide show
  1. package/.claude/agents/qe-api-contract-validator.md +95 -1336
  2. package/.claude/agents/qe-chaos-engineer.md +152 -1211
  3. package/.claude/agents/qe-code-complexity.md +144 -707
  4. package/.claude/agents/qe-coverage-analyzer.md +147 -743
  5. package/.claude/agents/qe-deployment-readiness.md +143 -1496
  6. package/.claude/agents/qe-flaky-test-hunter.md +132 -1529
  7. package/.claude/agents/qe-fleet-commander.md +12 -12
  8. package/.claude/agents/qe-performance-tester.md +150 -886
  9. package/.claude/agents/qe-production-intelligence.md +155 -1396
  10. package/.claude/agents/qe-quality-analyzer.md +6 -6
  11. package/.claude/agents/qe-quality-gate.md +151 -648
  12. package/.claude/agents/qe-regression-risk-analyzer.md +132 -1150
  13. package/.claude/agents/qe-requirements-validator.md +149 -932
  14. package/.claude/agents/qe-security-scanner.md +157 -797
  15. package/.claude/agents/qe-test-data-architect.md +96 -1365
  16. package/.claude/agents/qe-test-executor.md +8 -8
  17. package/.claude/agents/qe-test-generator.md +145 -1540
  18. package/.claude/agents/qe-visual-tester.md +153 -1257
  19. package/.claude/agents/qx-partner.md +248 -0
  20. package/.claude/agents/subagents/qe-code-reviewer.md +40 -136
  21. package/.claude/agents/subagents/qe-coverage-gap-analyzer.md +40 -480
  22. package/.claude/agents/subagents/qe-data-generator.md +41 -125
  23. package/.claude/agents/subagents/qe-flaky-investigator.md +55 -411
  24. package/.claude/agents/subagents/qe-integration-tester.md +53 -141
  25. package/.claude/agents/subagents/qe-performance-validator.md +54 -130
  26. package/.claude/agents/subagents/qe-security-auditor.md +56 -114
  27. package/.claude/agents/subagents/qe-test-data-architect-sub.md +57 -548
  28. package/.claude/agents/subagents/qe-test-implementer.md +58 -551
  29. package/.claude/agents/subagents/qe-test-refactorer.md +65 -722
  30. package/.claude/agents/subagents/qe-test-writer.md +63 -726
  31. package/.claude/skills/accessibility-testing/SKILL.md +144 -692
  32. package/.claude/skills/agentic-quality-engineering/SKILL.md +176 -529
  33. package/.claude/skills/api-testing-patterns/SKILL.md +180 -560
  34. package/.claude/skills/brutal-honesty-review/SKILL.md +113 -603
  35. package/.claude/skills/bug-reporting-excellence/SKILL.md +116 -517
  36. package/.claude/skills/chaos-engineering-resilience/SKILL.md +127 -72
  37. package/.claude/skills/cicd-pipeline-qe-orchestrator/SKILL.md +209 -404
  38. package/.claude/skills/code-review-quality/SKILL.md +158 -608
  39. package/.claude/skills/compatibility-testing/SKILL.md +148 -38
  40. package/.claude/skills/compliance-testing/SKILL.md +132 -63
  41. package/.claude/skills/consultancy-practices/SKILL.md +114 -446
  42. package/.claude/skills/context-driven-testing/SKILL.md +117 -381
  43. package/.claude/skills/contract-testing/SKILL.md +176 -141
  44. package/.claude/skills/database-testing/SKILL.md +137 -130
  45. package/.claude/skills/exploratory-testing-advanced/SKILL.md +160 -629
  46. package/.claude/skills/holistic-testing-pact/SKILL.md +140 -188
  47. package/.claude/skills/localization-testing/SKILL.md +145 -33
  48. package/.claude/skills/mobile-testing/SKILL.md +132 -448
  49. package/.claude/skills/mutation-testing/SKILL.md +147 -41
  50. package/.claude/skills/performance-testing/SKILL.md +200 -546
  51. package/.claude/skills/quality-metrics/SKILL.md +164 -519
  52. package/.claude/skills/refactoring-patterns/SKILL.md +132 -699
  53. package/.claude/skills/regression-testing/SKILL.md +120 -926
  54. package/.claude/skills/risk-based-testing/SKILL.md +157 -660
  55. package/.claude/skills/security-testing/SKILL.md +199 -538
  56. package/.claude/skills/sherlock-review/SKILL.md +163 -699
  57. package/.claude/skills/shift-left-testing/SKILL.md +161 -465
  58. package/.claude/skills/shift-right-testing/SKILL.md +161 -519
  59. package/.claude/skills/six-thinking-hats/SKILL.md +175 -1110
  60. package/.claude/skills/skills-manifest.json +683 -0
  61. package/.claude/skills/tdd-london-chicago/SKILL.md +131 -448
  62. package/.claude/skills/technical-writing/SKILL.md +103 -154
  63. package/.claude/skills/test-automation-strategy/SKILL.md +166 -772
  64. package/.claude/skills/test-data-management/SKILL.md +126 -910
  65. package/.claude/skills/test-design-techniques/SKILL.md +179 -89
  66. package/.claude/skills/test-environment-management/SKILL.md +136 -91
  67. package/.claude/skills/test-reporting-analytics/SKILL.md +169 -92
  68. package/.claude/skills/testability-scoring/README.md +71 -0
  69. package/.claude/skills/testability-scoring/SKILL.md +245 -0
  70. package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -0
  71. package/.claude/skills/testability-scoring/resources/templates/testability-scoring.spec.template.js +532 -0
  72. package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -0
  73. package/.claude/skills/testability-scoring/scripts/run-assessment.sh +70 -0
  74. package/.claude/skills/visual-testing-advanced/SKILL.md +155 -78
  75. package/.claude/skills/xp-practices/SKILL.md +151 -587
  76. package/CHANGELOG.md +110 -0
  77. package/README.md +55 -21
  78. package/dist/agents/QXPartnerAgent.d.ts +146 -0
  79. package/dist/agents/QXPartnerAgent.d.ts.map +1 -0
  80. package/dist/agents/QXPartnerAgent.js +1831 -0
  81. package/dist/agents/QXPartnerAgent.js.map +1 -0
  82. package/dist/agents/index.d.ts +1 -0
  83. package/dist/agents/index.d.ts.map +1 -1
  84. package/dist/agents/index.js +82 -2
  85. package/dist/agents/index.js.map +1 -1
  86. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  87. package/dist/agents/lifecycle/AgentLifecycleManager.js +34 -31
  88. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  89. package/dist/cli/commands/debug/agent.d.ts.map +1 -1
  90. package/dist/cli/commands/debug/agent.js +19 -6
  91. package/dist/cli/commands/debug/agent.js.map +1 -1
  92. package/dist/cli/commands/debug/health-check.js +20 -7
  93. package/dist/cli/commands/debug/health-check.js.map +1 -1
  94. package/dist/cli/commands/init-claude-md-template.d.ts +1 -0
  95. package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
  96. package/dist/cli/commands/init-claude-md-template.js +18 -3
  97. package/dist/cli/commands/init-claude-md-template.js.map +1 -1
  98. package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
  99. package/dist/cli/commands/workflow/cancel.js +4 -3
  100. package/dist/cli/commands/workflow/cancel.js.map +1 -1
  101. package/dist/cli/commands/workflow/list.d.ts.map +1 -1
  102. package/dist/cli/commands/workflow/list.js +4 -3
  103. package/dist/cli/commands/workflow/list.js.map +1 -1
  104. package/dist/cli/commands/workflow/pause.d.ts.map +1 -1
  105. package/dist/cli/commands/workflow/pause.js +4 -3
  106. package/dist/cli/commands/workflow/pause.js.map +1 -1
  107. package/dist/cli/init/claude-config.d.ts.map +1 -1
  108. package/dist/cli/init/claude-config.js +3 -8
  109. package/dist/cli/init/claude-config.js.map +1 -1
  110. package/dist/cli/init/claude-md.d.ts.map +1 -1
  111. package/dist/cli/init/claude-md.js +44 -2
  112. package/dist/cli/init/claude-md.js.map +1 -1
  113. package/dist/cli/init/database-init.js +1 -1
  114. package/dist/cli/init/index.d.ts.map +1 -1
  115. package/dist/cli/init/index.js +13 -6
  116. package/dist/cli/init/index.js.map +1 -1
  117. package/dist/cli/init/skills.d.ts.map +1 -1
  118. package/dist/cli/init/skills.js +2 -1
  119. package/dist/cli/init/skills.js.map +1 -1
  120. package/dist/core/SwarmCoordinator.d.ts +180 -0
  121. package/dist/core/SwarmCoordinator.d.ts.map +1 -0
  122. package/dist/core/SwarmCoordinator.js +473 -0
  123. package/dist/core/SwarmCoordinator.js.map +1 -0
  124. package/dist/core/memory/AgentDBIntegration.d.ts +24 -6
  125. package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -1
  126. package/dist/core/memory/AgentDBIntegration.js +66 -10
  127. package/dist/core/memory/AgentDBIntegration.js.map +1 -1
  128. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +341 -0
  129. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -0
  130. package/dist/core/memory/UnifiedMemoryCoordinator.js +986 -0
  131. package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -0
  132. package/dist/core/memory/index.d.ts +5 -0
  133. package/dist/core/memory/index.d.ts.map +1 -1
  134. package/dist/core/memory/index.js +23 -1
  135. package/dist/core/memory/index.js.map +1 -1
  136. package/dist/core/metrics/MetricsAggregator.d.ts +228 -0
  137. package/dist/core/metrics/MetricsAggregator.d.ts.map +1 -0
  138. package/dist/core/metrics/MetricsAggregator.js +482 -0
  139. package/dist/core/metrics/MetricsAggregator.js.map +1 -0
  140. package/dist/core/metrics/index.d.ts +5 -0
  141. package/dist/core/metrics/index.d.ts.map +1 -0
  142. package/dist/core/metrics/index.js +11 -0
  143. package/dist/core/metrics/index.js.map +1 -0
  144. package/dist/core/optimization/SwarmOptimizer.d.ts +190 -0
  145. package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -0
  146. package/dist/core/optimization/SwarmOptimizer.js +648 -0
  147. package/dist/core/optimization/SwarmOptimizer.js.map +1 -0
  148. package/dist/core/optimization/index.d.ts +9 -0
  149. package/dist/core/optimization/index.d.ts.map +1 -0
  150. package/dist/core/optimization/index.js +25 -0
  151. package/dist/core/optimization/index.js.map +1 -0
  152. package/dist/core/optimization/types.d.ts +53 -0
  153. package/dist/core/optimization/types.d.ts.map +1 -0
  154. package/dist/core/optimization/types.js +6 -0
  155. package/dist/core/optimization/types.js.map +1 -0
  156. package/dist/core/orchestration/AdaptiveScheduler.d.ts +190 -0
  157. package/dist/core/orchestration/AdaptiveScheduler.d.ts.map +1 -0
  158. package/dist/core/orchestration/AdaptiveScheduler.js +460 -0
  159. package/dist/core/orchestration/AdaptiveScheduler.js.map +1 -0
  160. package/dist/core/orchestration/PriorityQueue.d.ts +54 -0
  161. package/dist/core/orchestration/PriorityQueue.d.ts.map +1 -0
  162. package/dist/core/orchestration/PriorityQueue.js +122 -0
  163. package/dist/core/orchestration/PriorityQueue.js.map +1 -0
  164. package/dist/core/orchestration/WorkflowOrchestrator.d.ts +189 -0
  165. package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -0
  166. package/dist/core/orchestration/WorkflowOrchestrator.js +845 -0
  167. package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -0
  168. package/dist/core/orchestration/index.d.ts +7 -0
  169. package/dist/core/orchestration/index.d.ts.map +1 -0
  170. package/dist/core/orchestration/index.js +11 -0
  171. package/dist/core/orchestration/index.js.map +1 -0
  172. package/dist/core/orchestration/types.d.ts +96 -0
  173. package/dist/core/orchestration/types.d.ts.map +1 -0
  174. package/dist/core/orchestration/types.js +6 -0
  175. package/dist/core/orchestration/types.js.map +1 -0
  176. package/dist/core/recovery/CircuitBreaker.d.ts +176 -0
  177. package/dist/core/recovery/CircuitBreaker.d.ts.map +1 -0
  178. package/dist/core/recovery/CircuitBreaker.js +382 -0
  179. package/dist/core/recovery/CircuitBreaker.js.map +1 -0
  180. package/dist/core/recovery/RecoveryOrchestrator.d.ts +186 -0
  181. package/dist/core/recovery/RecoveryOrchestrator.d.ts.map +1 -0
  182. package/dist/core/recovery/RecoveryOrchestrator.js +476 -0
  183. package/dist/core/recovery/RecoveryOrchestrator.js.map +1 -0
  184. package/dist/core/recovery/RetryStrategy.d.ts +127 -0
  185. package/dist/core/recovery/RetryStrategy.d.ts.map +1 -0
  186. package/dist/core/recovery/RetryStrategy.js +314 -0
  187. package/dist/core/recovery/RetryStrategy.js.map +1 -0
  188. package/dist/core/recovery/index.d.ts +8 -0
  189. package/dist/core/recovery/index.d.ts.map +1 -0
  190. package/dist/core/recovery/index.js +27 -0
  191. package/dist/core/recovery/index.js.map +1 -0
  192. package/dist/core/skills/DependencyResolver.d.ts +99 -0
  193. package/dist/core/skills/DependencyResolver.d.ts.map +1 -0
  194. package/dist/core/skills/DependencyResolver.js +260 -0
  195. package/dist/core/skills/DependencyResolver.js.map +1 -0
  196. package/dist/core/skills/DynamicSkillLoader.d.ts +96 -0
  197. package/dist/core/skills/DynamicSkillLoader.d.ts.map +1 -0
  198. package/dist/core/skills/DynamicSkillLoader.js +353 -0
  199. package/dist/core/skills/DynamicSkillLoader.js.map +1 -0
  200. package/dist/core/skills/ManifestGenerator.d.ts +114 -0
  201. package/dist/core/skills/ManifestGenerator.d.ts.map +1 -0
  202. package/dist/core/skills/ManifestGenerator.js +449 -0
  203. package/dist/core/skills/ManifestGenerator.js.map +1 -0
  204. package/dist/core/skills/index.d.ts +9 -0
  205. package/dist/core/skills/index.d.ts.map +1 -0
  206. package/dist/core/skills/index.js +24 -0
  207. package/dist/core/skills/index.js.map +1 -0
  208. package/dist/core/skills/types.d.ts +118 -0
  209. package/dist/core/skills/types.d.ts.map +1 -0
  210. package/dist/core/skills/types.js +7 -0
  211. package/dist/core/skills/types.js.map +1 -0
  212. package/dist/core/transport/QUICTransport.d.ts +320 -0
  213. package/dist/core/transport/QUICTransport.d.ts.map +1 -0
  214. package/dist/core/transport/QUICTransport.js +711 -0
  215. package/dist/core/transport/QUICTransport.js.map +1 -0
  216. package/dist/core/transport/index.d.ts +40 -0
  217. package/dist/core/transport/index.d.ts.map +1 -0
  218. package/dist/core/transport/index.js +46 -0
  219. package/dist/core/transport/index.js.map +1 -0
  220. package/dist/core/transport/quic-loader.d.ts +123 -0
  221. package/dist/core/transport/quic-loader.d.ts.map +1 -0
  222. package/dist/core/transport/quic-loader.js +293 -0
  223. package/dist/core/transport/quic-loader.js.map +1 -0
  224. package/dist/core/transport/quic.d.ts +154 -0
  225. package/dist/core/transport/quic.d.ts.map +1 -0
  226. package/dist/core/transport/quic.js +214 -0
  227. package/dist/core/transport/quic.js.map +1 -0
  228. package/dist/mcp/server.d.ts +9 -9
  229. package/dist/mcp/server.d.ts.map +1 -1
  230. package/dist/mcp/server.js +1 -2
  231. package/dist/mcp/server.js.map +1 -1
  232. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  233. package/dist/mcp/services/AgentRegistry.js +4 -1
  234. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  235. package/dist/types/index.d.ts +2 -1
  236. package/dist/types/index.d.ts.map +1 -1
  237. package/dist/types/index.js +2 -0
  238. package/dist/types/index.js.map +1 -1
  239. package/dist/types/qx.d.ts +429 -0
  240. package/dist/types/qx.d.ts.map +1 -0
  241. package/dist/types/qx.js +71 -0
  242. package/dist/types/qx.js.map +1 -0
  243. package/dist/visualization/api/RestEndpoints.js +2 -2
  244. package/dist/visualization/api/RestEndpoints.js.map +1 -1
  245. package/dist/visualization/api/WebSocketServer.d.ts +44 -0
  246. package/dist/visualization/api/WebSocketServer.d.ts.map +1 -1
  247. package/dist/visualization/api/WebSocketServer.js +144 -23
  248. package/dist/visualization/api/WebSocketServer.js.map +1 -1
  249. package/dist/visualization/core/DataTransformer.d.ts +10 -0
  250. package/dist/visualization/core/DataTransformer.d.ts.map +1 -1
  251. package/dist/visualization/core/DataTransformer.js +60 -5
  252. package/dist/visualization/core/DataTransformer.js.map +1 -1
  253. package/dist/visualization/emit-event.d.ts +75 -0
  254. package/dist/visualization/emit-event.d.ts.map +1 -0
  255. package/dist/visualization/emit-event.js +213 -0
  256. package/dist/visualization/emit-event.js.map +1 -0
  257. package/dist/visualization/index.d.ts +1 -0
  258. package/dist/visualization/index.d.ts.map +1 -1
  259. package/dist/visualization/index.js +7 -1
  260. package/dist/visualization/index.js.map +1 -1
  261. package/docs/reference/skills.md +63 -1
  262. package/package.json +16 -58
@@ -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"}