agentic-qe 1.9.4 → 2.0.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.
- package/.claude/agents/qe-api-contract-validator.md +95 -1336
- package/.claude/agents/qe-chaos-engineer.md +152 -1211
- package/.claude/agents/qe-code-complexity.md +144 -707
- package/.claude/agents/qe-coverage-analyzer.md +147 -743
- package/.claude/agents/qe-deployment-readiness.md +143 -1496
- package/.claude/agents/qe-flaky-test-hunter.md +132 -1529
- package/.claude/agents/qe-fleet-commander.md +12 -12
- package/.claude/agents/qe-performance-tester.md +150 -886
- package/.claude/agents/qe-production-intelligence.md +155 -1396
- package/.claude/agents/qe-quality-analyzer.md +6 -6
- package/.claude/agents/qe-quality-gate.md +151 -648
- package/.claude/agents/qe-regression-risk-analyzer.md +132 -1150
- package/.claude/agents/qe-requirements-validator.md +149 -932
- package/.claude/agents/qe-security-scanner.md +157 -797
- package/.claude/agents/qe-test-data-architect.md +96 -1365
- package/.claude/agents/qe-test-executor.md +8 -8
- package/.claude/agents/qe-test-generator.md +145 -1540
- package/.claude/agents/qe-visual-tester.md +153 -1257
- package/.claude/agents/qx-partner.md +235 -0
- package/.claude/agents/subagents/qe-code-reviewer.md +40 -136
- package/.claude/agents/subagents/qe-coverage-gap-analyzer.md +40 -480
- package/.claude/agents/subagents/qe-data-generator.md +41 -125
- package/.claude/agents/subagents/qe-flaky-investigator.md +55 -411
- package/.claude/agents/subagents/qe-integration-tester.md +53 -141
- package/.claude/agents/subagents/qe-performance-validator.md +54 -130
- package/.claude/agents/subagents/qe-security-auditor.md +56 -114
- package/.claude/agents/subagents/qe-test-data-architect-sub.md +57 -548
- package/.claude/agents/subagents/qe-test-implementer.md +58 -551
- package/.claude/agents/subagents/qe-test-refactorer.md +65 -722
- package/.claude/agents/subagents/qe-test-writer.md +63 -726
- package/.claude/skills/skills-manifest.json +632 -0
- package/.claude/skills/testability-scoring/README.md +71 -0
- package/.claude/skills/testability-scoring/SKILL.md +611 -0
- package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -0
- package/.claude/skills/testability-scoring/resources/templates/testability-scoring.spec.template.js +532 -0
- package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -0
- package/.claude/skills/testability-scoring/scripts/run-assessment.sh +70 -0
- package/CHANGELOG.md +62 -0
- package/README.md +33 -6
- package/dist/agents/QXPartnerAgent.d.ts +139 -0
- package/dist/agents/QXPartnerAgent.d.ts.map +1 -0
- package/dist/agents/QXPartnerAgent.js +769 -0
- package/dist/agents/QXPartnerAgent.js.map +1 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +82 -2
- package/dist/agents/index.js.map +1 -1
- package/dist/cli/commands/debug/agent.d.ts.map +1 -1
- package/dist/cli/commands/debug/agent.js +19 -6
- package/dist/cli/commands/debug/agent.js.map +1 -1
- package/dist/cli/commands/debug/health-check.js +20 -7
- package/dist/cli/commands/debug/health-check.js.map +1 -1
- package/dist/cli/commands/init-claude-md-template.d.ts +1 -0
- package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
- package/dist/cli/commands/init-claude-md-template.js +4 -3
- package/dist/cli/commands/init-claude-md-template.js.map +1 -1
- package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
- package/dist/cli/commands/workflow/cancel.js +4 -3
- package/dist/cli/commands/workflow/cancel.js.map +1 -1
- package/dist/cli/commands/workflow/list.d.ts.map +1 -1
- package/dist/cli/commands/workflow/list.js +4 -3
- package/dist/cli/commands/workflow/list.js.map +1 -1
- package/dist/cli/commands/workflow/pause.d.ts.map +1 -1
- package/dist/cli/commands/workflow/pause.js +4 -3
- package/dist/cli/commands/workflow/pause.js.map +1 -1
- package/dist/cli/init/claude-config.d.ts.map +1 -1
- package/dist/cli/init/claude-config.js +3 -8
- package/dist/cli/init/claude-config.js.map +1 -1
- package/dist/cli/init/claude-md.d.ts.map +1 -1
- package/dist/cli/init/claude-md.js +44 -2
- package/dist/cli/init/claude-md.js.map +1 -1
- package/dist/cli/init/database-init.js +1 -1
- package/dist/cli/init/index.d.ts.map +1 -1
- package/dist/cli/init/index.js +13 -6
- package/dist/cli/init/index.js.map +1 -1
- package/dist/cli/init/skills.d.ts.map +1 -1
- package/dist/cli/init/skills.js +2 -1
- package/dist/cli/init/skills.js.map +1 -1
- package/dist/core/memory/AgentDBIntegration.d.ts +24 -6
- package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -1
- package/dist/core/memory/AgentDBIntegration.js +66 -10
- package/dist/core/memory/AgentDBIntegration.js.map +1 -1
- package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +341 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.js +986 -0
- package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -0
- package/dist/core/memory/index.d.ts +5 -0
- package/dist/core/memory/index.d.ts.map +1 -1
- package/dist/core/memory/index.js +23 -1
- package/dist/core/memory/index.js.map +1 -1
- package/dist/core/optimization/SwarmOptimizer.d.ts +185 -0
- package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -0
- package/dist/core/optimization/SwarmOptimizer.js +631 -0
- package/dist/core/optimization/SwarmOptimizer.js.map +1 -0
- package/dist/core/optimization/index.d.ts +9 -0
- package/dist/core/optimization/index.d.ts.map +1 -0
- package/dist/core/optimization/index.js +25 -0
- package/dist/core/optimization/index.js.map +1 -0
- package/dist/core/optimization/types.d.ts +53 -0
- package/dist/core/optimization/types.d.ts.map +1 -0
- package/dist/core/optimization/types.js +6 -0
- package/dist/core/optimization/types.js.map +1 -0
- package/dist/core/orchestration/PriorityQueue.d.ts +54 -0
- package/dist/core/orchestration/PriorityQueue.d.ts.map +1 -0
- package/dist/core/orchestration/PriorityQueue.js +122 -0
- package/dist/core/orchestration/PriorityQueue.js.map +1 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts +176 -0
- package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -0
- package/dist/core/orchestration/WorkflowOrchestrator.js +813 -0
- package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -0
- package/dist/core/orchestration/index.d.ts +7 -0
- package/dist/core/orchestration/index.d.ts.map +1 -0
- package/dist/core/orchestration/index.js +11 -0
- package/dist/core/orchestration/index.js.map +1 -0
- package/dist/core/orchestration/types.d.ts +96 -0
- package/dist/core/orchestration/types.d.ts.map +1 -0
- package/dist/core/orchestration/types.js +6 -0
- package/dist/core/orchestration/types.js.map +1 -0
- package/dist/core/skills/DynamicSkillLoader.d.ts +96 -0
- package/dist/core/skills/DynamicSkillLoader.d.ts.map +1 -0
- package/dist/core/skills/DynamicSkillLoader.js +353 -0
- package/dist/core/skills/DynamicSkillLoader.js.map +1 -0
- package/dist/core/skills/types.d.ts +118 -0
- package/dist/core/skills/types.d.ts.map +1 -0
- package/dist/core/skills/types.js +7 -0
- package/dist/core/skills/types.js.map +1 -0
- package/dist/core/transport/QUICTransport.d.ts +320 -0
- package/dist/core/transport/QUICTransport.d.ts.map +1 -0
- package/dist/core/transport/QUICTransport.js +711 -0
- package/dist/core/transport/QUICTransport.js.map +1 -0
- package/dist/core/transport/index.d.ts +40 -0
- package/dist/core/transport/index.d.ts.map +1 -0
- package/dist/core/transport/index.js +46 -0
- package/dist/core/transport/index.js.map +1 -0
- package/dist/core/transport/quic-loader.d.ts +123 -0
- package/dist/core/transport/quic-loader.d.ts.map +1 -0
- package/dist/core/transport/quic-loader.js +293 -0
- package/dist/core/transport/quic-loader.js.map +1 -0
- package/dist/core/transport/quic.d.ts +154 -0
- package/dist/core/transport/quic.d.ts.map +1 -0
- package/dist/core/transport/quic.js +214 -0
- package/dist/core/transport/quic.js.map +1 -0
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +4 -1
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/qx.d.ts +397 -0
- package/dist/types/qx.d.ts.map +1 -0
- package/dist/types/qx.js +71 -0
- package/dist/types/qx.js.map +1 -0
- package/dist/visualization/api/RestEndpoints.js +1 -1
- package/dist/visualization/api/RestEndpoints.js.map +1 -1
- package/dist/visualization/api/WebSocketServer.d.ts +44 -0
- package/dist/visualization/api/WebSocketServer.d.ts.map +1 -1
- package/dist/visualization/api/WebSocketServer.js +144 -23
- package/dist/visualization/api/WebSocketServer.js.map +1 -1
- package/dist/visualization/core/DataTransformer.d.ts +10 -0
- package/dist/visualization/core/DataTransformer.d.ts.map +1 -1
- package/dist/visualization/core/DataTransformer.js +60 -5
- package/dist/visualization/core/DataTransformer.js.map +1 -1
- package/dist/visualization/emit-event.d.ts +75 -0
- package/dist/visualization/emit-event.d.ts.map +1 -0
- package/dist/visualization/emit-event.js +213 -0
- package/dist/visualization/emit-event.js.map +1 -0
- package/dist/visualization/index.d.ts +1 -0
- package/dist/visualization/index.d.ts.map +1 -1
- package/dist/visualization/index.js +7 -1
- package/dist/visualization/index.js.map +1 -1
- package/docs/reference/skills.md +63 -1
- package/package.json +4 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/optimization/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Optimization Module
|
|
4
|
+
*
|
|
5
|
+
* Provides swarm optimization, topology recommendation,
|
|
6
|
+
* agent allocation, and bottleneck detection.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
__exportStar(require("./types"), exports);
|
|
24
|
+
__exportStar(require("./SwarmOptimizer"), exports);
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/optimization/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,mDAAiC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for SwarmOptimizer and related components
|
|
3
|
+
*/
|
|
4
|
+
export interface OptimizationConfig {
|
|
5
|
+
targetSpeedup: number;
|
|
6
|
+
maxAgents: number;
|
|
7
|
+
enableAutoTuning: boolean;
|
|
8
|
+
enableBottleneckDetection?: boolean;
|
|
9
|
+
enableAdaptiveScaling?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface TopologyRecommendation {
|
|
12
|
+
topology: 'hierarchical' | 'mesh' | 'ring' | 'star';
|
|
13
|
+
reasoning: string;
|
|
14
|
+
expectedSpeedup: number;
|
|
15
|
+
agentAllocation: Map<string, number>;
|
|
16
|
+
confidence: number;
|
|
17
|
+
}
|
|
18
|
+
export interface WorkloadProfile {
|
|
19
|
+
taskCount: number;
|
|
20
|
+
taskTypes: Map<string, number>;
|
|
21
|
+
averageComplexity: number;
|
|
22
|
+
parallelizability: number;
|
|
23
|
+
resourceIntensity: number;
|
|
24
|
+
interdependencies: number;
|
|
25
|
+
}
|
|
26
|
+
export interface AgentAllocation {
|
|
27
|
+
allocations: Map<string, string[]>;
|
|
28
|
+
reasoning: string;
|
|
29
|
+
loadBalance: number;
|
|
30
|
+
expectedDuration: number;
|
|
31
|
+
}
|
|
32
|
+
export interface PerformanceMetrics {
|
|
33
|
+
taskThroughput: number;
|
|
34
|
+
averageLatency: number;
|
|
35
|
+
resourceUtilization: number;
|
|
36
|
+
bottlenecks: Bottleneck[];
|
|
37
|
+
timestamp: Date;
|
|
38
|
+
}
|
|
39
|
+
export interface Bottleneck {
|
|
40
|
+
type: 'agent' | 'memory' | 'coordination' | 'io';
|
|
41
|
+
location: string;
|
|
42
|
+
severity: number;
|
|
43
|
+
impact: string;
|
|
44
|
+
recommendation: string;
|
|
45
|
+
}
|
|
46
|
+
export interface OptimizationResult {
|
|
47
|
+
success: boolean;
|
|
48
|
+
improvements: Map<string, number>;
|
|
49
|
+
topology?: TopologyRecommendation;
|
|
50
|
+
allocation?: AgentAllocation;
|
|
51
|
+
timestamp: Date;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/optimization/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,cAAc,GAAG,IAAI,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,SAAS,EAAE,IAAI,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/optimization/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -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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"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WorkflowOrchestrator - Adaptive workflow execution for QE agent swarms
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Adaptive strategy selection (parallel/sequential/hybrid)
|
|
6
|
+
* - Priority-based task queue with dependency resolution
|
|
7
|
+
* - Workflow checkpointing for recovery
|
|
8
|
+
* - Integration with SwarmOptimizer and FleetManager
|
|
9
|
+
*/
|
|
10
|
+
import { SwarmMemoryManager } from '../memory/SwarmMemoryManager';
|
|
11
|
+
import { QEEventBus } from '../events/QEEventBus';
|
|
12
|
+
import { SwarmOptimizer } from '../optimization/SwarmOptimizer';
|
|
13
|
+
import { Workflow, WorkflowExecution, WorkflowCheckpoint, ExecutionMetrics } from './types';
|
|
14
|
+
export declare class WorkflowOrchestrator {
|
|
15
|
+
private readonly logger;
|
|
16
|
+
private readonly memoryStore;
|
|
17
|
+
private readonly eventBus;
|
|
18
|
+
private readonly optimizer?;
|
|
19
|
+
private workflows;
|
|
20
|
+
private executions;
|
|
21
|
+
private taskQueue;
|
|
22
|
+
private isShutdown;
|
|
23
|
+
private readonly PRIORITY_VALUES;
|
|
24
|
+
constructor(memoryStore: SwarmMemoryManager, eventBus: QEEventBus, optimizer?: SwarmOptimizer);
|
|
25
|
+
/**
|
|
26
|
+
* Initialize the orchestrator
|
|
27
|
+
*/
|
|
28
|
+
initialize(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Register a new workflow
|
|
31
|
+
*/
|
|
32
|
+
registerWorkflow(workflow: Workflow): void;
|
|
33
|
+
/**
|
|
34
|
+
* Get a workflow by ID
|
|
35
|
+
*/
|
|
36
|
+
getWorkflow(id: string): Workflow | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* List all registered workflows
|
|
39
|
+
*/
|
|
40
|
+
listWorkflows(): Workflow[];
|
|
41
|
+
/**
|
|
42
|
+
* Execute a workflow
|
|
43
|
+
*/
|
|
44
|
+
executeWorkflow(workflowId: string, inputs?: Record<string, any>): Promise<WorkflowExecution>;
|
|
45
|
+
/**
|
|
46
|
+
* Pause a running execution
|
|
47
|
+
*/
|
|
48
|
+
pauseExecution(executionId: string): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Resume a paused execution
|
|
51
|
+
*/
|
|
52
|
+
resumeExecution(executionId: string): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Cancel a running or paused execution
|
|
55
|
+
*/
|
|
56
|
+
cancelExecution(executionId: string): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Select optimal execution strategy based on workflow characteristics
|
|
59
|
+
*/
|
|
60
|
+
private selectStrategy;
|
|
61
|
+
/**
|
|
62
|
+
* Analyze workload characteristics
|
|
63
|
+
*/
|
|
64
|
+
private analyzeWorkloadCharacteristics;
|
|
65
|
+
/**
|
|
66
|
+
* Resolve dependencies and create execution plan
|
|
67
|
+
*/
|
|
68
|
+
private resolveDependencies;
|
|
69
|
+
/**
|
|
70
|
+
* Topological sort using Kahn's algorithm
|
|
71
|
+
*/
|
|
72
|
+
private topologicalSort;
|
|
73
|
+
/**
|
|
74
|
+
* Detect circular dependencies using DFS
|
|
75
|
+
*/
|
|
76
|
+
private detectCycles;
|
|
77
|
+
/**
|
|
78
|
+
* Group steps into parallel execution phases
|
|
79
|
+
*/
|
|
80
|
+
private groupIntoPhases;
|
|
81
|
+
/**
|
|
82
|
+
* Calculate critical path (longest dependency chain)
|
|
83
|
+
*/
|
|
84
|
+
private calculateCriticalPath;
|
|
85
|
+
/**
|
|
86
|
+
* Execute a single step
|
|
87
|
+
*/
|
|
88
|
+
private executeStep;
|
|
89
|
+
/**
|
|
90
|
+
* Execute step with timeout
|
|
91
|
+
*/
|
|
92
|
+
private executeStepWithTimeout;
|
|
93
|
+
/**
|
|
94
|
+
* Execute step action (placeholder for agent invocation)
|
|
95
|
+
*/
|
|
96
|
+
private executeStepAction;
|
|
97
|
+
/**
|
|
98
|
+
* Resolve step inputs from previous results
|
|
99
|
+
*/
|
|
100
|
+
private resolveStepInputs;
|
|
101
|
+
/**
|
|
102
|
+
* Execute steps in parallel
|
|
103
|
+
*/
|
|
104
|
+
private executeParallel;
|
|
105
|
+
/**
|
|
106
|
+
* Execute steps sequentially
|
|
107
|
+
*/
|
|
108
|
+
private executeSequential;
|
|
109
|
+
/**
|
|
110
|
+
* Execute in hybrid mode (phases sequential, steps within phase parallel)
|
|
111
|
+
*/
|
|
112
|
+
private executeHybrid;
|
|
113
|
+
/**
|
|
114
|
+
* Create a checkpoint for an execution
|
|
115
|
+
*/
|
|
116
|
+
createCheckpoint(executionId: string): Promise<WorkflowCheckpoint>;
|
|
117
|
+
/**
|
|
118
|
+
* Restore execution from checkpoint
|
|
119
|
+
*/
|
|
120
|
+
restoreFromCheckpoint(checkpoint: WorkflowCheckpoint): Promise<WorkflowExecution>;
|
|
121
|
+
/**
|
|
122
|
+
* Enqueue a task with priority
|
|
123
|
+
*/
|
|
124
|
+
private enqueueTask;
|
|
125
|
+
/**
|
|
126
|
+
* Dequeue highest priority task
|
|
127
|
+
*/
|
|
128
|
+
private dequeueTask;
|
|
129
|
+
/**
|
|
130
|
+
* Get execution metrics
|
|
131
|
+
*/
|
|
132
|
+
getExecutionMetrics(executionId: string): ExecutionMetrics;
|
|
133
|
+
/**
|
|
134
|
+
* Get execution by ID
|
|
135
|
+
*/
|
|
136
|
+
getExecution(executionId: string): WorkflowExecution | undefined;
|
|
137
|
+
/**
|
|
138
|
+
* List all executions
|
|
139
|
+
*/
|
|
140
|
+
listExecutions(): WorkflowExecution[];
|
|
141
|
+
/**
|
|
142
|
+
* Validate workflow structure
|
|
143
|
+
*/
|
|
144
|
+
private validateWorkflow;
|
|
145
|
+
/**
|
|
146
|
+
* Generate unique execution ID
|
|
147
|
+
*/
|
|
148
|
+
private generateExecutionId;
|
|
149
|
+
/**
|
|
150
|
+
* Serialize checkpoint for storage
|
|
151
|
+
*/
|
|
152
|
+
private serializeCheckpoint;
|
|
153
|
+
/**
|
|
154
|
+
* Persist execution to memory
|
|
155
|
+
*/
|
|
156
|
+
private persistExecution;
|
|
157
|
+
/**
|
|
158
|
+
* Load workflows from memory
|
|
159
|
+
*/
|
|
160
|
+
private loadWorkflowsFromMemory;
|
|
161
|
+
/**
|
|
162
|
+
* Delay helper
|
|
163
|
+
*/
|
|
164
|
+
private delay;
|
|
165
|
+
/**
|
|
166
|
+
* Event handlers
|
|
167
|
+
*/
|
|
168
|
+
private handleStepCompleted;
|
|
169
|
+
private handleStepFailed;
|
|
170
|
+
private handleAgentAvailable;
|
|
171
|
+
/**
|
|
172
|
+
* Shutdown orchestrator
|
|
173
|
+
*/
|
|
174
|
+
shutdown(): Promise<void>;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=WorkflowOrchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowOrchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/WorkflowOrchestrator.ts"],"names":[],"mappings":"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"}
|