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,460 @@
1
+ "use strict";
2
+ /**
3
+ * AdaptiveScheduler - Intelligent Task Scheduling
4
+ *
5
+ * Provides dynamic scheduling with optimization feedback, backpressure handling,
6
+ * and predictive queue management for QE agent swarms.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AdaptiveScheduler = void 0;
10
+ const events_1 = require("events");
11
+ const Logger_js_1 = require("../../utils/Logger.js");
12
+ const PriorityQueue_js_1 = require("./PriorityQueue.js");
13
+ /**
14
+ * Adaptive Scheduler Implementation
15
+ */
16
+ class AdaptiveScheduler extends events_1.EventEmitter {
17
+ constructor(config) {
18
+ super();
19
+ this.agents = new Map();
20
+ this.pendingTasks = new Map();
21
+ this.completedTasks = new Map();
22
+ this.metrics = {
23
+ scheduled: 0,
24
+ completed: 0,
25
+ failed: 0,
26
+ totalWaitTime: 0,
27
+ totalSchedulingTime: 0,
28
+ };
29
+ this.roundRobinIndex = 0;
30
+ this.isRunning = false;
31
+ this.logger = Logger_js_1.Logger.getInstance();
32
+ this.config = {
33
+ strategy: 'adaptive',
34
+ maxQueueDepth: 1000,
35
+ highPressureThreshold: 0.7,
36
+ criticalPressureThreshold: 0.9,
37
+ enablePrediction: true,
38
+ predictionWindow: 60000, // 1 minute
39
+ enableWorkStealing: true,
40
+ workStealingThreshold: 0.3,
41
+ ...config,
42
+ };
43
+ this.taskQueue = new PriorityQueue_js_1.PriorityQueue();
44
+ }
45
+ /**
46
+ * Start the scheduler
47
+ */
48
+ start() {
49
+ if (this.isRunning)
50
+ return;
51
+ this.isRunning = true;
52
+ this.schedulerLoop = setInterval(() => this.processQueue(), 100);
53
+ this.emit('started');
54
+ this.logger.info('AdaptiveScheduler started');
55
+ }
56
+ /**
57
+ * Stop the scheduler
58
+ */
59
+ stop() {
60
+ this.isRunning = false;
61
+ if (this.schedulerLoop) {
62
+ clearInterval(this.schedulerLoop);
63
+ this.schedulerLoop = undefined;
64
+ }
65
+ this.emit('stopped');
66
+ this.logger.info('AdaptiveScheduler stopped');
67
+ }
68
+ /**
69
+ * Enqueue a task for scheduling
70
+ */
71
+ enqueue(task) {
72
+ // Check backpressure
73
+ const pressure = this.getPressureLevel();
74
+ if (pressure === 'critical' && task.priority !== 'critical') {
75
+ throw new Error('Queue at critical pressure, only critical tasks accepted');
76
+ }
77
+ const scheduledTask = {
78
+ ...task,
79
+ scheduledAt: new Date(),
80
+ retryCount: 0,
81
+ schedulingScore: this.calculateSchedulingScore(task),
82
+ };
83
+ // Calculate priority value for queue
84
+ const priorityValue = this.calculatePriorityValue(scheduledTask);
85
+ this.taskQueue.enqueue(scheduledTask, priorityValue);
86
+ this.pendingTasks.set(task.id, scheduledTask);
87
+ this.emit('task:enqueued', { taskId: task.id, priority: task.priority, queueDepth: this.taskQueue.size() });
88
+ return scheduledTask;
89
+ }
90
+ /**
91
+ * Register an agent
92
+ */
93
+ registerAgent(agent) {
94
+ const trackedAgent = {
95
+ ...agent,
96
+ assignedTasks: [],
97
+ completedTasks: 0,
98
+ failedTasks: 0,
99
+ averageTaskDuration: 0,
100
+ };
101
+ this.agents.set(agent.id, trackedAgent);
102
+ this.emit('agent:registered', { agentId: agent.id });
103
+ }
104
+ /**
105
+ * Unregister an agent
106
+ */
107
+ unregisterAgent(agentId) {
108
+ const agent = this.agents.get(agentId);
109
+ if (agent) {
110
+ // Re-queue any assigned tasks
111
+ for (const taskId of agent.assignedTasks) {
112
+ const task = this.pendingTasks.get(taskId);
113
+ if (task) {
114
+ task.assignedAgent = undefined;
115
+ task.retryCount++;
116
+ this.taskQueue.enqueue(task, this.calculatePriorityValue(task));
117
+ }
118
+ }
119
+ this.agents.delete(agentId);
120
+ this.emit('agent:unregistered', { agentId });
121
+ }
122
+ }
123
+ /**
124
+ * Mark task as completed
125
+ */
126
+ completeTask(taskId, duration) {
127
+ const task = this.pendingTasks.get(taskId);
128
+ if (!task)
129
+ return;
130
+ this.pendingTasks.delete(taskId);
131
+ this.completedTasks.set(taskId, task);
132
+ this.metrics.completed++;
133
+ // Update agent stats
134
+ if (task.assignedAgent) {
135
+ const agent = this.agents.get(task.assignedAgent);
136
+ if (agent) {
137
+ agent.assignedTasks = agent.assignedTasks.filter(id => id !== taskId);
138
+ agent.completedTasks++;
139
+ agent.lastTaskTime = new Date();
140
+ agent.currentLoad = Math.max(0, agent.currentLoad - 0.1);
141
+ // Update average duration
142
+ const prevTotal = agent.averageTaskDuration * (agent.completedTasks - 1);
143
+ agent.averageTaskDuration = (prevTotal + duration) / agent.completedTasks;
144
+ }
145
+ }
146
+ const waitTime = task.actualStartTime
147
+ ? task.actualStartTime.getTime() - task.scheduledAt.getTime()
148
+ : 0;
149
+ this.metrics.totalWaitTime += waitTime;
150
+ this.emit('task:completed', { taskId, duration, waitTime });
151
+ }
152
+ /**
153
+ * Mark task as failed
154
+ */
155
+ failTask(taskId, error) {
156
+ const task = this.pendingTasks.get(taskId);
157
+ if (!task)
158
+ return;
159
+ // Update agent stats
160
+ if (task.assignedAgent) {
161
+ const agent = this.agents.get(task.assignedAgent);
162
+ if (agent) {
163
+ agent.assignedTasks = agent.assignedTasks.filter(id => id !== taskId);
164
+ agent.failedTasks++;
165
+ agent.currentLoad = Math.max(0, agent.currentLoad - 0.1);
166
+ agent.performanceScore = Math.max(0, agent.performanceScore - 0.05);
167
+ }
168
+ }
169
+ // Retry if possible
170
+ if (task.retryCount < 3) {
171
+ task.retryCount++;
172
+ task.assignedAgent = undefined;
173
+ this.taskQueue.enqueue(task, this.calculatePriorityValue(task));
174
+ this.emit('task:retrying', { taskId, retryCount: task.retryCount });
175
+ }
176
+ else {
177
+ this.pendingTasks.delete(taskId);
178
+ this.metrics.failed++;
179
+ this.emit('task:failed', { taskId, error, retryCount: task.retryCount });
180
+ }
181
+ }
182
+ /**
183
+ * Get current metrics
184
+ */
185
+ getMetrics() {
186
+ const agentUtilization = new Map();
187
+ for (const [id, agent] of this.agents) {
188
+ agentUtilization.set(id, agent.currentLoad);
189
+ }
190
+ const elapsed = Date.now() - (this.completedTasks.values().next().value?.scheduledAt?.getTime() || Date.now());
191
+ const throughput = elapsed > 0 ? (this.metrics.completed / (elapsed / 1000)) : 0;
192
+ return {
193
+ queueDepth: this.taskQueue.size(),
194
+ queueCapacity: this.config.maxQueueDepth,
195
+ pressureLevel: this.getPressureLevel(),
196
+ scheduledCount: this.metrics.scheduled,
197
+ completedCount: this.metrics.completed,
198
+ failedCount: this.metrics.failed,
199
+ averageWaitTime: this.metrics.completed > 0
200
+ ? this.metrics.totalWaitTime / this.metrics.completed
201
+ : 0,
202
+ averageSchedulingTime: this.metrics.scheduled > 0
203
+ ? this.metrics.totalSchedulingTime / this.metrics.scheduled
204
+ : 0,
205
+ throughput,
206
+ agentUtilization,
207
+ };
208
+ }
209
+ /**
210
+ * Get queue pressure level
211
+ */
212
+ getPressureLevel() {
213
+ const ratio = this.taskQueue.size() / this.config.maxQueueDepth;
214
+ if (ratio >= this.config.criticalPressureThreshold)
215
+ return 'critical';
216
+ if (ratio >= this.config.highPressureThreshold)
217
+ return 'high';
218
+ if (ratio >= 0.4)
219
+ return 'medium';
220
+ return 'low';
221
+ }
222
+ /**
223
+ * Get available agents
224
+ */
225
+ getAvailableAgents() {
226
+ return Array.from(this.agents.values())
227
+ .filter(a => a.isAvailable && a.currentLoad < 0.9);
228
+ }
229
+ /**
230
+ * Process queue and assign tasks
231
+ */
232
+ processQueue() {
233
+ if (!this.isRunning)
234
+ return;
235
+ const availableAgents = this.getAvailableAgents();
236
+ if (availableAgents.length === 0 || this.taskQueue.isEmpty())
237
+ return;
238
+ // Work stealing if enabled
239
+ if (this.config.enableWorkStealing) {
240
+ this.performWorkStealing(availableAgents);
241
+ }
242
+ // Assign tasks to available agents
243
+ while (!this.taskQueue.isEmpty() && availableAgents.length > 0) {
244
+ const task = this.taskQueue.peek();
245
+ if (!task)
246
+ break;
247
+ const decision = this.makeSchedulingDecision(task, availableAgents);
248
+ if (!decision)
249
+ break;
250
+ // Dequeue and assign
251
+ this.taskQueue.dequeue();
252
+ this.assignTask(task, decision);
253
+ // Update agent availability
254
+ const agentIndex = availableAgents.findIndex(a => a.id === decision.agentId);
255
+ if (agentIndex >= 0) {
256
+ const agent = availableAgents[agentIndex];
257
+ if (agent.currentLoad >= 0.9) {
258
+ availableAgents.splice(agentIndex, 1);
259
+ }
260
+ }
261
+ }
262
+ }
263
+ /**
264
+ * Make scheduling decision for a task
265
+ */
266
+ makeSchedulingDecision(task, availableAgents) {
267
+ if (availableAgents.length === 0)
268
+ return null;
269
+ const startTime = Date.now();
270
+ let decision;
271
+ switch (this.config.strategy) {
272
+ case 'round-robin':
273
+ decision = this.roundRobinSchedule(task, availableAgents);
274
+ break;
275
+ case 'least-loaded':
276
+ decision = this.leastLoadedSchedule(task, availableAgents);
277
+ break;
278
+ case 'capability-match':
279
+ decision = this.capabilityMatchSchedule(task, availableAgents);
280
+ break;
281
+ case 'performance-based':
282
+ decision = this.performanceBasedSchedule(task, availableAgents);
283
+ break;
284
+ case 'adaptive':
285
+ default:
286
+ decision = this.adaptiveSchedule(task, availableAgents);
287
+ }
288
+ this.metrics.totalSchedulingTime += Date.now() - startTime;
289
+ return decision;
290
+ }
291
+ /**
292
+ * Round-robin scheduling
293
+ */
294
+ roundRobinSchedule(task, agents) {
295
+ const agent = agents[this.roundRobinIndex % agents.length];
296
+ this.roundRobinIndex++;
297
+ return {
298
+ taskId: task.id,
299
+ agentId: agent.id,
300
+ strategy: 'round-robin',
301
+ score: 0.5,
302
+ reason: 'Round-robin selection',
303
+ estimatedDuration: task.estimatedDuration,
304
+ };
305
+ }
306
+ /**
307
+ * Least-loaded scheduling
308
+ */
309
+ leastLoadedSchedule(task, agents) {
310
+ const agent = agents.reduce((min, a) => a.currentLoad < min.currentLoad ? a : min);
311
+ return {
312
+ taskId: task.id,
313
+ agentId: agent.id,
314
+ strategy: 'least-loaded',
315
+ score: 1 - agent.currentLoad,
316
+ reason: `Lowest load: ${(agent.currentLoad * 100).toFixed(1)}%`,
317
+ estimatedDuration: task.estimatedDuration,
318
+ };
319
+ }
320
+ /**
321
+ * Capability-match scheduling
322
+ */
323
+ capabilityMatchSchedule(task, agents) {
324
+ // Score agents by capability match
325
+ const scored = agents.map(agent => {
326
+ const requiredCaps = task.requiredCapabilities || [];
327
+ const matchCount = requiredCaps.filter(cap => agent.capabilities.includes(cap)).length;
328
+ const score = requiredCaps.length > 0
329
+ ? matchCount / requiredCaps.length
330
+ : 0.5;
331
+ return { agent, score };
332
+ });
333
+ scored.sort((a, b) => b.score - a.score);
334
+ const best = scored[0];
335
+ return {
336
+ taskId: task.id,
337
+ agentId: best.agent.id,
338
+ strategy: 'capability-match',
339
+ score: best.score,
340
+ reason: `Capability match: ${(best.score * 100).toFixed(1)}%`,
341
+ estimatedDuration: task.estimatedDuration,
342
+ };
343
+ }
344
+ /**
345
+ * Performance-based scheduling
346
+ */
347
+ performanceBasedSchedule(task, agents) {
348
+ const agent = agents.reduce((best, a) => a.performanceScore > best.performanceScore ? a : best);
349
+ return {
350
+ taskId: task.id,
351
+ agentId: agent.id,
352
+ strategy: 'performance-based',
353
+ score: agent.performanceScore,
354
+ reason: `Best performance: ${(agent.performanceScore * 100).toFixed(1)}%`,
355
+ estimatedDuration: task.estimatedDuration / agent.performanceScore,
356
+ };
357
+ }
358
+ /**
359
+ * Adaptive scheduling (combines all strategies)
360
+ */
361
+ adaptiveSchedule(task, agents) {
362
+ const pressure = this.getPressureLevel();
363
+ // Under high pressure, prefer fastest agents
364
+ if (pressure === 'critical' || pressure === 'high') {
365
+ return this.performanceBasedSchedule(task, agents);
366
+ }
367
+ // For capability-heavy tasks, match capabilities
368
+ if (task.requiredCapabilities && task.requiredCapabilities.length > 2) {
369
+ return this.capabilityMatchSchedule(task, agents);
370
+ }
371
+ // Default to least-loaded
372
+ return this.leastLoadedSchedule(task, agents);
373
+ }
374
+ /**
375
+ * Assign task to agent
376
+ */
377
+ assignTask(task, decision) {
378
+ const agent = this.agents.get(decision.agentId);
379
+ if (!agent)
380
+ return;
381
+ task.assignedAgent = decision.agentId;
382
+ task.actualStartTime = new Date();
383
+ task.estimatedEndTime = new Date(Date.now() + decision.estimatedDuration);
384
+ agent.assignedTasks.push(task.id);
385
+ agent.currentLoad = Math.min(1, agent.currentLoad + 0.1 + (task.complexity * 0.1));
386
+ this.metrics.scheduled++;
387
+ this.emit('task:assigned', {
388
+ taskId: task.id,
389
+ agentId: agent.id,
390
+ strategy: decision.strategy,
391
+ score: decision.score,
392
+ });
393
+ }
394
+ /**
395
+ * Perform work stealing
396
+ */
397
+ performWorkStealing(availableAgents) {
398
+ // Find overloaded and underloaded agents
399
+ const underloaded = availableAgents.filter(a => a.currentLoad < 0.3);
400
+ const overloaded = Array.from(this.agents.values()).filter(a => a.currentLoad > 0.8 && a.assignedTasks.length > 1);
401
+ if (underloaded.length === 0 || overloaded.length === 0)
402
+ return;
403
+ for (const heavy of overloaded) {
404
+ const light = underloaded.find(a => heavy.currentLoad - a.currentLoad > this.config.workStealingThreshold);
405
+ if (light && heavy.assignedTasks.length > 1) {
406
+ // Steal one task
407
+ const taskId = heavy.assignedTasks[heavy.assignedTasks.length - 1];
408
+ const task = this.pendingTasks.get(taskId);
409
+ if (task && !task.actualStartTime) {
410
+ // Task hasn't started, can be stolen
411
+ heavy.assignedTasks.pop();
412
+ heavy.currentLoad = Math.max(0, heavy.currentLoad - 0.15);
413
+ task.assignedAgent = light.id;
414
+ light.assignedTasks.push(taskId);
415
+ light.currentLoad = Math.min(1, light.currentLoad + 0.15);
416
+ this.emit('task:stolen', {
417
+ taskId,
418
+ fromAgent: heavy.id,
419
+ toAgent: light.id,
420
+ });
421
+ }
422
+ }
423
+ }
424
+ }
425
+ /**
426
+ * Calculate scheduling score for a task
427
+ */
428
+ calculateSchedulingScore(task) {
429
+ const priorityScores = { critical: 1.0, high: 0.75, medium: 0.5, low: 0.25 };
430
+ const priorityScore = priorityScores[task.priority] || 0.5;
431
+ const complexityScore = 1 - task.complexity;
432
+ const dependencyScore = task.dependencies.length === 0 ? 1 : 0.5;
433
+ return (priorityScore * 0.5) + (complexityScore * 0.3) + (dependencyScore * 0.2);
434
+ }
435
+ /**
436
+ * Calculate priority value for queue ordering
437
+ */
438
+ calculatePriorityValue(task) {
439
+ const priorityValues = { critical: 100, high: 75, medium: 50, low: 25 };
440
+ const basePriority = priorityValues[task.priority] || 50;
441
+ // Boost priority for retries
442
+ const retryBoost = task.retryCount * 10;
443
+ // Boost priority based on wait time (age)
444
+ const waitTime = Date.now() - task.scheduledAt.getTime();
445
+ const ageBoost = Math.min(20, waitTime / 60000); // Max 20 point boost for waiting
446
+ return basePriority + retryBoost + ageBoost;
447
+ }
448
+ /**
449
+ * Cleanup
450
+ */
451
+ destroy() {
452
+ this.stop();
453
+ this.removeAllListeners();
454
+ this.agents.clear();
455
+ this.pendingTasks.clear();
456
+ this.completedTasks.clear();
457
+ }
458
+ }
459
+ exports.AdaptiveScheduler = AdaptiveScheduler;
460
+ //# sourceMappingURL=AdaptiveScheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdaptiveScheduler.js","sourceRoot":"","sources":["../../../src/core/orchestration/AdaptiveScheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * PriorityQueue - Heap-based priority queue implementation
3
+ *
4
+ * Uses a binary min-heap for O(log n) enqueue/dequeue operations.
5
+ * Higher priority values indicate higher priority (will be dequeued first).
6
+ */
7
+ export declare class PriorityQueue<T> {
8
+ private heap;
9
+ /**
10
+ * Add an item to the queue with the given priority
11
+ * @param item Item to add
12
+ * @param priority Priority value (higher = higher priority)
13
+ */
14
+ enqueue(item: T, priority: number): void;
15
+ /**
16
+ * Remove and return the highest priority item
17
+ * @returns The item with highest priority, or undefined if empty
18
+ */
19
+ dequeue(): T | undefined;
20
+ /**
21
+ * View the highest priority item without removing it
22
+ * @returns The item with highest priority, or undefined if empty
23
+ */
24
+ peek(): T | undefined;
25
+ /**
26
+ * Check if the queue is empty
27
+ */
28
+ isEmpty(): boolean;
29
+ /**
30
+ * Get the number of items in the queue
31
+ */
32
+ size(): number;
33
+ /**
34
+ * Clear all items from the queue
35
+ */
36
+ clear(): void;
37
+ /**
38
+ * Convert queue to array (ordered by priority)
39
+ */
40
+ toArray(): T[];
41
+ /**
42
+ * Bubble up an element to maintain heap property
43
+ */
44
+ private bubbleUp;
45
+ /**
46
+ * Bubble down an element to maintain heap property
47
+ */
48
+ private bubbleDown;
49
+ /**
50
+ * Swap two elements in the heap
51
+ */
52
+ private swap;
53
+ }
54
+ //# sourceMappingURL=PriorityQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PriorityQueue.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/PriorityQueue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,qBAAa,aAAa,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAsB;IAElC;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKxC;;;OAGG;IACH,OAAO,IAAI,CAAC,GAAG,SAAS;IAgBxB;;;OAGG;IACH,IAAI,IAAI,CAAC,GAAG,SAAS;IAIrB;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,IAAI,IAAI,MAAM;IAId;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,IAAI,CAAC,EAAE;IASd;;OAEG;IACH,OAAO,CAAC,QAAQ;IAchB;;OAEG;IACH,OAAO,CAAC,UAAU;IA8BlB;;OAEG;IACH,OAAO,CAAC,IAAI;CAKb"}
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ /**
3
+ * PriorityQueue - Heap-based priority queue implementation
4
+ *
5
+ * Uses a binary min-heap for O(log n) enqueue/dequeue operations.
6
+ * Higher priority values indicate higher priority (will be dequeued first).
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PriorityQueue = void 0;
10
+ class PriorityQueue {
11
+ constructor() {
12
+ this.heap = [];
13
+ }
14
+ /**
15
+ * Add an item to the queue with the given priority
16
+ * @param item Item to add
17
+ * @param priority Priority value (higher = higher priority)
18
+ */
19
+ enqueue(item, priority) {
20
+ this.heap.push({ item, priority });
21
+ this.bubbleUp(this.heap.length - 1);
22
+ }
23
+ /**
24
+ * Remove and return the highest priority item
25
+ * @returns The item with highest priority, or undefined if empty
26
+ */
27
+ dequeue() {
28
+ if (this.heap.length === 0) {
29
+ return undefined;
30
+ }
31
+ if (this.heap.length === 1) {
32
+ return this.heap.pop().item;
33
+ }
34
+ const result = this.heap[0].item;
35
+ this.heap[0] = this.heap.pop();
36
+ this.bubbleDown(0);
37
+ return result;
38
+ }
39
+ /**
40
+ * View the highest priority item without removing it
41
+ * @returns The item with highest priority, or undefined if empty
42
+ */
43
+ peek() {
44
+ return this.heap.length > 0 ? this.heap[0].item : undefined;
45
+ }
46
+ /**
47
+ * Check if the queue is empty
48
+ */
49
+ isEmpty() {
50
+ return this.heap.length === 0;
51
+ }
52
+ /**
53
+ * Get the number of items in the queue
54
+ */
55
+ size() {
56
+ return this.heap.length;
57
+ }
58
+ /**
59
+ * Clear all items from the queue
60
+ */
61
+ clear() {
62
+ this.heap = [];
63
+ }
64
+ /**
65
+ * Convert queue to array (ordered by priority)
66
+ */
67
+ toArray() {
68
+ // Create a copy and sort by priority (highest first)
69
+ return [...this.heap]
70
+ .sort((a, b) => b.priority - a.priority)
71
+ .map(item => item.item);
72
+ }
73
+ // ============= PRIVATE HEAP OPERATIONS =============
74
+ /**
75
+ * Bubble up an element to maintain heap property
76
+ */
77
+ bubbleUp(index) {
78
+ while (index > 0) {
79
+ const parentIndex = Math.floor((index - 1) / 2);
80
+ // Max heap: parent should have higher priority
81
+ if (this.heap[parentIndex].priority >= this.heap[index].priority) {
82
+ break;
83
+ }
84
+ this.swap(index, parentIndex);
85
+ index = parentIndex;
86
+ }
87
+ }
88
+ /**
89
+ * Bubble down an element to maintain heap property
90
+ */
91
+ bubbleDown(index) {
92
+ while (true) {
93
+ const leftChild = 2 * index + 1;
94
+ const rightChild = 2 * index + 2;
95
+ let largest = index;
96
+ // Find largest among node and its children
97
+ if (leftChild < this.heap.length &&
98
+ this.heap[leftChild].priority > this.heap[largest].priority) {
99
+ largest = leftChild;
100
+ }
101
+ if (rightChild < this.heap.length &&
102
+ this.heap[rightChild].priority > this.heap[largest].priority) {
103
+ largest = rightChild;
104
+ }
105
+ if (largest === index) {
106
+ break;
107
+ }
108
+ this.swap(index, largest);
109
+ index = largest;
110
+ }
111
+ }
112
+ /**
113
+ * Swap two elements in the heap
114
+ */
115
+ swap(i, j) {
116
+ const temp = this.heap[i];
117
+ this.heap[i] = this.heap[j];
118
+ this.heap[j] = temp;
119
+ }
120
+ }
121
+ exports.PriorityQueue = PriorityQueue;
122
+ //# sourceMappingURL=PriorityQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PriorityQueue.js","sourceRoot":"","sources":["../../../src/core/orchestration/PriorityQueue.ts"],"names":[],"mappings":"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"}