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,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @fileoverview Agent event emitter for visualization
|
|
4
|
+
* @module visualization/emit-event
|
|
5
|
+
*
|
|
6
|
+
* This module provides a simple API to emit agent events to the EventStore
|
|
7
|
+
* and broadcast them via WebSocket for real-time visualization.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.emitEvent = emitEvent;
|
|
11
|
+
exports.emitAgentSpawn = emitAgentSpawn;
|
|
12
|
+
exports.emitAgentStart = emitAgentStart;
|
|
13
|
+
exports.emitAgentComplete = emitAgentComplete;
|
|
14
|
+
exports.emitAgentError = emitAgentError;
|
|
15
|
+
const event_store_1 = require("../persistence/event-store");
|
|
16
|
+
const ws_1 = require("ws");
|
|
17
|
+
const DEFAULT_DB_PATH = './data/agentic-qe.db';
|
|
18
|
+
const DEFAULT_WS_URL = 'ws://localhost:8080';
|
|
19
|
+
/**
|
|
20
|
+
* Map visualization event types to persistence EventType
|
|
21
|
+
*/
|
|
22
|
+
function mapToEventType(eventType) {
|
|
23
|
+
const mapping = {
|
|
24
|
+
'agent:spawned': 'agent_started',
|
|
25
|
+
'agent:started': 'agent_started',
|
|
26
|
+
'agent:completed': 'agent_completed',
|
|
27
|
+
'agent:error': 'agent_error',
|
|
28
|
+
'test:generated': 'test_generated',
|
|
29
|
+
'test:executed': 'test_executed',
|
|
30
|
+
'coverage:analyzed': 'coverage_analyzed',
|
|
31
|
+
'quality:passed': 'quality_gate_passed',
|
|
32
|
+
'quality:failed': 'quality_gate_failed',
|
|
33
|
+
'pattern:matched': 'pattern_matched',
|
|
34
|
+
'learning:completed': 'learning_completed',
|
|
35
|
+
};
|
|
36
|
+
return mapping[eventType] || 'custom';
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Emit an agent event to the EventStore and broadcast via WebSocket
|
|
40
|
+
*
|
|
41
|
+
* @param eventType - Type of event (e.g., 'agent:spawned', 'agent:started')
|
|
42
|
+
* @param data - Event data including agentId, status, etc.
|
|
43
|
+
* @param config - Optional configuration for db path and ws url
|
|
44
|
+
* @returns EmitResult with success status and details
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* import { emitEvent } from './visualization/emit-event';
|
|
49
|
+
*
|
|
50
|
+
* // Emit spawn event
|
|
51
|
+
* await emitEvent('agent:spawned', {
|
|
52
|
+
* agentId: 'qe-test-generator',
|
|
53
|
+
* agentType: 'researcher',
|
|
54
|
+
* status: 'idle'
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
async function emitEvent(eventType, data, config = {}) {
|
|
59
|
+
const dbPath = config.dbPath || DEFAULT_DB_PATH;
|
|
60
|
+
const wsUrl = config.wsUrl || DEFAULT_WS_URL;
|
|
61
|
+
const sessionId = config.sessionId || data.sessionId || `session-${Date.now()}`;
|
|
62
|
+
const timestamp = data.timestamp || new Date().toISOString();
|
|
63
|
+
const result = {
|
|
64
|
+
success: false,
|
|
65
|
+
dbRecorded: false,
|
|
66
|
+
wsBroadcast: false,
|
|
67
|
+
};
|
|
68
|
+
let eventStore = null;
|
|
69
|
+
try {
|
|
70
|
+
// Record event to database
|
|
71
|
+
eventStore = new event_store_1.EventStore({ dbPath });
|
|
72
|
+
const event = eventStore.recordEvent({
|
|
73
|
+
agent_id: data.agentId,
|
|
74
|
+
event_type: mapToEventType(eventType),
|
|
75
|
+
payload: {
|
|
76
|
+
agentType: data.agentType,
|
|
77
|
+
status: data.status,
|
|
78
|
+
duration: data.duration,
|
|
79
|
+
error: data.error,
|
|
80
|
+
originalEventType: eventType,
|
|
81
|
+
},
|
|
82
|
+
session_id: sessionId,
|
|
83
|
+
});
|
|
84
|
+
result.eventId = event.id;
|
|
85
|
+
result.dbRecorded = true;
|
|
86
|
+
// Try to broadcast via WebSocket
|
|
87
|
+
try {
|
|
88
|
+
await broadcastEvent(wsUrl, {
|
|
89
|
+
id: event.id,
|
|
90
|
+
agentId: data.agentId,
|
|
91
|
+
agentType: data.agentType,
|
|
92
|
+
eventType,
|
|
93
|
+
status: data.status,
|
|
94
|
+
timestamp,
|
|
95
|
+
duration: data.duration,
|
|
96
|
+
error: data.error,
|
|
97
|
+
});
|
|
98
|
+
result.wsBroadcast = true;
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// WebSocket broadcast is optional - service may not be running
|
|
102
|
+
}
|
|
103
|
+
result.success = true;
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
result.error = err instanceof Error ? err.message : String(err);
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
if (eventStore) {
|
|
110
|
+
eventStore.close();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Broadcast event to WebSocket server
|
|
117
|
+
*/
|
|
118
|
+
async function broadcastEvent(wsUrl, eventData) {
|
|
119
|
+
return new Promise((resolve, _reject) => {
|
|
120
|
+
const ws = new ws_1.WebSocket(wsUrl);
|
|
121
|
+
const timeout = setTimeout(() => {
|
|
122
|
+
ws.close();
|
|
123
|
+
resolve(); // Don't fail if WS not available
|
|
124
|
+
}, 2000);
|
|
125
|
+
ws.on('open', () => {
|
|
126
|
+
clearTimeout(timeout);
|
|
127
|
+
// Send lifecycle event
|
|
128
|
+
ws.send(JSON.stringify({
|
|
129
|
+
type: 'lifecycle-event',
|
|
130
|
+
timestamp: new Date().toISOString(),
|
|
131
|
+
data: {
|
|
132
|
+
id: eventData.id,
|
|
133
|
+
agentId: eventData.agentId,
|
|
134
|
+
type: eventData.eventType,
|
|
135
|
+
status: eventData.status,
|
|
136
|
+
timestamp: eventData.timestamp,
|
|
137
|
+
duration: eventData.duration,
|
|
138
|
+
details: {
|
|
139
|
+
agentType: eventData.agentType,
|
|
140
|
+
error: eventData.error,
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
}));
|
|
144
|
+
// Send graph update with node
|
|
145
|
+
ws.send(JSON.stringify({
|
|
146
|
+
type: 'graph-update',
|
|
147
|
+
timestamp: new Date().toISOString(),
|
|
148
|
+
data: {
|
|
149
|
+
nodes: [
|
|
150
|
+
{
|
|
151
|
+
id: eventData.agentId,
|
|
152
|
+
label: eventData.agentId,
|
|
153
|
+
type: eventData.agentType || 'coder',
|
|
154
|
+
status: eventData.status,
|
|
155
|
+
metrics: {
|
|
156
|
+
tasksCompleted: 0,
|
|
157
|
+
successRate: 100,
|
|
158
|
+
avgDuration: eventData.duration || 0,
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
],
|
|
162
|
+
edges: [],
|
|
163
|
+
},
|
|
164
|
+
}));
|
|
165
|
+
ws.close();
|
|
166
|
+
resolve();
|
|
167
|
+
});
|
|
168
|
+
ws.on('error', () => {
|
|
169
|
+
clearTimeout(timeout);
|
|
170
|
+
resolve(); // Don't fail if WS not available
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Convenience function to emit agent spawn event
|
|
176
|
+
*/
|
|
177
|
+
async function emitAgentSpawn(agentId, agentType, config) {
|
|
178
|
+
return emitEvent('agent:spawned', {
|
|
179
|
+
agentId,
|
|
180
|
+
agentType,
|
|
181
|
+
status: 'idle',
|
|
182
|
+
}, config);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Convenience function to emit agent start event
|
|
186
|
+
*/
|
|
187
|
+
async function emitAgentStart(agentId, config) {
|
|
188
|
+
return emitEvent('agent:started', {
|
|
189
|
+
agentId,
|
|
190
|
+
status: 'running',
|
|
191
|
+
}, config);
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Convenience function to emit agent completion event
|
|
195
|
+
*/
|
|
196
|
+
async function emitAgentComplete(agentId, duration, config) {
|
|
197
|
+
return emitEvent('agent:completed', {
|
|
198
|
+
agentId,
|
|
199
|
+
status: 'completed',
|
|
200
|
+
duration,
|
|
201
|
+
}, config);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Convenience function to emit agent error event
|
|
205
|
+
*/
|
|
206
|
+
async function emitAgentError(agentId, errorMessage, config) {
|
|
207
|
+
return emitEvent('agent:error', {
|
|
208
|
+
agentId,
|
|
209
|
+
status: 'error',
|
|
210
|
+
error: errorMessage,
|
|
211
|
+
}, config);
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=emit-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-event.js","sourceRoot":"","sources":["../../src/visualization/emit-event.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ export * from './types';
|
|
|
6
6
|
export { DataTransformer } from './core/DataTransformer';
|
|
7
7
|
export { WebSocketServer, WebSocketServerConfig } from './api/WebSocketServer';
|
|
8
8
|
export { RestApiServer, RestApiConfig } from './api/RestEndpoints';
|
|
9
|
+
export { emitEvent, emitAgentSpawn, emitAgentStart, emitAgentComplete, emitAgentError, type AgentEventData, type EventEmitterConfig, type EmitResult, } from './emit-event';
|
|
9
10
|
import { EventStore } from '../persistence/event-store';
|
|
10
11
|
import { ReasoningStore } from '../persistence/reasoning-store';
|
|
11
12
|
import { DataTransformer } from './core/DataTransformer';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/visualization/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/visualization/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EACL,SAAS,EACT,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,UAAU,GAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,2BAA2B;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,+BAA+B;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,6BAA6B;IAC7B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,qCAAqC;IACrC,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,sBAAsB;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8BAA8B;IAC9B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,OAAO,CAAC,CAAgB;IAChC,OAAO,CAAC,SAAS,CAAC,CAAkB;IACpC,OAAO,CAAC,MAAM,CAA6B;gBAE/B,MAAM,EAAE,0BAA0B;IAyB9C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAc3B;;OAEG;IACH,cAAc,IAAI,eAAe;IAIjC;;OAEG;IACH,UAAU,IAAI,aAAa,GAAG,SAAS;IAIvC;;OAEG;IACH,YAAY,IAAI,eAAe,GAAG,SAAS;IAI3C;;OAEG;IACH,SAAS,IAAI;QACX,OAAO,CAAC,EAAE;YAAE,SAAS,EAAE,OAAO,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/C,SAAS,CAAC,EAAE;YAAE,SAAS,EAAE,OAAO,CAAC;YAAC,gBAAgB,EAAE,MAAM,CAAA;SAAE,CAAC;KAC9D;CAMF"}
|
|
@@ -18,7 +18,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
18
18
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
19
19
|
};
|
|
20
20
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
-
exports.VisualizationService = exports.RestApiServer = exports.WebSocketServer = exports.DataTransformer = void 0;
|
|
21
|
+
exports.VisualizationService = exports.emitAgentError = exports.emitAgentComplete = exports.emitAgentStart = exports.emitAgentSpawn = exports.emitEvent = exports.RestApiServer = exports.WebSocketServer = exports.DataTransformer = void 0;
|
|
22
22
|
__exportStar(require("./types"), exports);
|
|
23
23
|
var DataTransformer_1 = require("./core/DataTransformer");
|
|
24
24
|
Object.defineProperty(exports, "DataTransformer", { enumerable: true, get: function () { return DataTransformer_1.DataTransformer; } });
|
|
@@ -26,6 +26,12 @@ var WebSocketServer_1 = require("./api/WebSocketServer");
|
|
|
26
26
|
Object.defineProperty(exports, "WebSocketServer", { enumerable: true, get: function () { return WebSocketServer_1.WebSocketServer; } });
|
|
27
27
|
var RestEndpoints_1 = require("./api/RestEndpoints");
|
|
28
28
|
Object.defineProperty(exports, "RestApiServer", { enumerable: true, get: function () { return RestEndpoints_1.RestApiServer; } });
|
|
29
|
+
var emit_event_1 = require("./emit-event");
|
|
30
|
+
Object.defineProperty(exports, "emitEvent", { enumerable: true, get: function () { return emit_event_1.emitEvent; } });
|
|
31
|
+
Object.defineProperty(exports, "emitAgentSpawn", { enumerable: true, get: function () { return emit_event_1.emitAgentSpawn; } });
|
|
32
|
+
Object.defineProperty(exports, "emitAgentStart", { enumerable: true, get: function () { return emit_event_1.emitAgentStart; } });
|
|
33
|
+
Object.defineProperty(exports, "emitAgentComplete", { enumerable: true, get: function () { return emit_event_1.emitAgentComplete; } });
|
|
34
|
+
Object.defineProperty(exports, "emitAgentError", { enumerable: true, get: function () { return emit_event_1.emitAgentError; } });
|
|
29
35
|
const DataTransformer_2 = require("./core/DataTransformer");
|
|
30
36
|
const WebSocketServer_2 = require("./api/WebSocketServer");
|
|
31
37
|
const RestEndpoints_2 = require("./api/RestEndpoints");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/visualization/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,0DAAyD;AAAhD,kHAAA,eAAe,OAAA;AACxB,yDAA+E;AAAtE,kHAAA,eAAe,OAAA;AACxB,qDAAmE;AAA1D,8GAAA,aAAa,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/visualization/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,0DAAyD;AAAhD,kHAAA,eAAe,OAAA;AACxB,yDAA+E;AAAtE,kHAAA,eAAe,OAAA;AACxB,qDAAmE;AAA1D,8GAAA,aAAa,OAAA;AACtB,2CASsB;AARpB,uGAAA,SAAS,OAAA;AACT,4GAAA,cAAc,OAAA;AACd,4GAAA,cAAc,OAAA;AACd,+GAAA,iBAAiB,OAAA;AACjB,4GAAA,cAAc,OAAA;AAQhB,4DAAyD;AACzD,2DAA+E;AAC/E,uDAAmE;AAoBnE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAa,oBAAoB;IAQ/B,YAAY,MAAkC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,iCAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAE7E,iCAAiC;QACjC,IAAI,MAAM,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,GAAG,IAAI,6BAAa,CAC9B,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,cAAc,EACnB,MAAM,CAAC,OAAO,CACf,CAAC;QACJ,CAAC;QAED,yCAAyC;QACzC,IAAI,MAAM,CAAC,eAAe,KAAK,KAAK,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,IAAI,iCAAe,CAClC,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,cAAc,EACnB,MAAM,CAAC,SAAS,CACjB,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QACxC,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,QAAQ,GAAoB,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,SAAS;QAIP,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE;YAClC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,aAAa,EAAE;SAC3C,CAAC;IACJ,CAAC;CACF;AApGD,oDAoGC"}
|
package/docs/reference/skills.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Agentic QE Fleet - Skills Reference
|
|
2
2
|
|
|
3
|
-
This document provides comprehensive reference for all
|
|
3
|
+
This document provides comprehensive reference for all 39 specialized QE skills available to agents.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
@@ -749,6 +749,68 @@ Skill("cicd-pipeline-qe-orchestrator")
|
|
|
749
749
|
|
|
750
750
|
---
|
|
751
751
|
|
|
752
|
+
## Phase 4: Community Contributed Skills (1 skill)
|
|
753
|
+
|
|
754
|
+
### Testability Assessment
|
|
755
|
+
|
|
756
|
+
#### testability-scoring
|
|
757
|
+
**Automated testability assessment using 10 principles of intrinsic testability**
|
|
758
|
+
|
|
759
|
+
Evaluates software testability through automated analysis of 10 intrinsic principles, providing actionable scores (0-100) with letter grades, AI-powered recommendations, and visual HTML reports with Chart.js radar visualizations.
|
|
760
|
+
|
|
761
|
+
*Contributed by [@fndlalit](https://github.com/fndlalit)* - Based on [testability-scorer](https://github.com/fndlalit/testability-scorer)
|
|
762
|
+
|
|
763
|
+
**Key Topics:**
|
|
764
|
+
- Observability & Controllability assessment
|
|
765
|
+
- Algorithmic simplicity & transparency
|
|
766
|
+
- Explainability & similarity analysis
|
|
767
|
+
- Stability & unbugginess metrics
|
|
768
|
+
- Smallness & decomposability evaluation
|
|
769
|
+
- HTML reports with radar charts
|
|
770
|
+
- AI-powered improvement recommendations
|
|
771
|
+
|
|
772
|
+
**The 10 Principles:**
|
|
773
|
+
1. **Observability** (15%) - State transparency and monitoring
|
|
774
|
+
2. **Controllability** (15%) - State manipulation and test data injection
|
|
775
|
+
3. **Algorithmic Simplicity** (10%) - Clear input-output relationships
|
|
776
|
+
4. **Algorithmic Transparency** (10%) - Understandable logic flow
|
|
777
|
+
5. **Explainability** (10%) - Documentation and clarity
|
|
778
|
+
6. **Similarity** (5%) - Standard patterns and familiar architecture
|
|
779
|
+
7. **Algorithmic Stability** (10%) - API versioning and compatibility
|
|
780
|
+
8. **Unbugginess** (10%) - Low defect rate
|
|
781
|
+
9. **Smallness** (10%) - Manageable size and modularity
|
|
782
|
+
10. **Decomposability** (5%) - Component isolation
|
|
783
|
+
|
|
784
|
+
**Usage:**
|
|
785
|
+
```javascript
|
|
786
|
+
Skill("testability-scoring")
|
|
787
|
+
```
|
|
788
|
+
|
|
789
|
+
**Quick Start:**
|
|
790
|
+
```bash
|
|
791
|
+
# Run full assessment (10 principles)
|
|
792
|
+
.claude/skills/testability-scoring/scripts/run-assessment.sh https://your-app.com chromium
|
|
793
|
+
|
|
794
|
+
# Generate HTML report from JSON
|
|
795
|
+
AUTO_OPEN=false node .claude/skills/testability-scoring/scripts/generate-html-report.js tests/reports/testability-results-*.json
|
|
796
|
+
```
|
|
797
|
+
|
|
798
|
+
**Use Cases:**
|
|
799
|
+
- Assessing application testability before test automation
|
|
800
|
+
- Identifying testability gaps and improvements
|
|
801
|
+
- Generating visual testability reports
|
|
802
|
+
- Tracking testability improvements over time
|
|
803
|
+
- CI/CD quality gate integration
|
|
804
|
+
|
|
805
|
+
**Scoring Scale:**
|
|
806
|
+
- **A (90-100)**: Excellent testability
|
|
807
|
+
- **B (80-89)**: Good testability
|
|
808
|
+
- **C (70-79)**: Acceptable testability
|
|
809
|
+
- **D (60-69)**: Below average
|
|
810
|
+
- **F (0-59)**: Poor testability
|
|
811
|
+
|
|
812
|
+
---
|
|
813
|
+
|
|
752
814
|
## Using Skills
|
|
753
815
|
|
|
754
816
|
### Via CLI
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-qe",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Agentic Quality Engineering Fleet System - AI-driven quality management platform with
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"description": "Agentic Quality Engineering Fleet System - AI-driven quality management platform with 41 QE skills, learning, pattern reuse, ML-based flaky detection, Multi-Model Router (70-81% cost savings), streaming progress updates, 102 MCP tools, and native TypeScript hooks",
|
|
5
5
|
"main": "dist/cli/index.js",
|
|
6
6
|
"types": "dist/cli/index.d.ts",
|
|
7
7
|
"bin": {
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
"@ruvector/core": "^0.1.15",
|
|
153
153
|
"@types/ws": "^8.18.1",
|
|
154
154
|
"@xenova/transformers": "^2.6.0",
|
|
155
|
-
"agentdb": "^1.
|
|
155
|
+
"agentdb": "^1.6.1",
|
|
156
156
|
"agentic-flow": "^1.10.2",
|
|
157
157
|
"ajv": "^8.17.1",
|
|
158
158
|
"ajv-formats": "^3.0.1",
|
|
@@ -162,7 +162,7 @@
|
|
|
162
162
|
"cli-table3": "^0.6.5",
|
|
163
163
|
"commander": "^14.0.1",
|
|
164
164
|
"cors": "^2.8.5",
|
|
165
|
-
"express": "^5.1
|
|
165
|
+
"express": "^5.2.1",
|
|
166
166
|
"fs-extra": "^11.1.1",
|
|
167
167
|
"graphql": "^16.11.0",
|
|
168
168
|
"inquirer": "^8.2.6",
|