agentic-qe 1.9.3 → 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.
Files changed (271) 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 +235 -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/skills-manifest.json +632 -0
  32. package/.claude/skills/testability-scoring/README.md +71 -0
  33. package/.claude/skills/testability-scoring/SKILL.md +611 -0
  34. package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -0
  35. package/.claude/skills/testability-scoring/resources/templates/testability-scoring.spec.template.js +532 -0
  36. package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -0
  37. package/.claude/skills/testability-scoring/scripts/run-assessment.sh +70 -0
  38. package/CHANGELOG.md +116 -0
  39. package/README.md +59 -7
  40. package/config/.env.otel.example +25 -0
  41. package/config/OTEL-QUICK-REFERENCE.md +137 -0
  42. package/config/README-OTEL.md +222 -0
  43. package/config/alerting-rules.yml +518 -0
  44. package/config/docker-compose.otel.yml +187 -0
  45. package/config/grafana/dashboards/agentic-qe-overview.json +286 -0
  46. package/config/grafana/provisioning/dashboards/dashboards.yml +19 -0
  47. package/config/grafana/provisioning/datasources/datasources.yml +53 -0
  48. package/config/otel-collector-config.yaml.example +145 -0
  49. package/config/prometheus.yml.example +106 -0
  50. package/dist/agents/QXPartnerAgent.d.ts +139 -0
  51. package/dist/agents/QXPartnerAgent.d.ts.map +1 -0
  52. package/dist/agents/QXPartnerAgent.js +769 -0
  53. package/dist/agents/QXPartnerAgent.js.map +1 -0
  54. package/dist/agents/index.d.ts +1 -0
  55. package/dist/agents/index.d.ts.map +1 -1
  56. package/dist/agents/index.js +82 -2
  57. package/dist/agents/index.js.map +1 -1
  58. package/dist/alerting/AlertManager.d.ts +120 -0
  59. package/dist/alerting/AlertManager.d.ts.map +1 -0
  60. package/dist/alerting/AlertManager.js +345 -0
  61. package/dist/alerting/AlertManager.js.map +1 -0
  62. package/dist/alerting/FeedbackRouter.d.ts +98 -0
  63. package/dist/alerting/FeedbackRouter.d.ts.map +1 -0
  64. package/dist/alerting/FeedbackRouter.js +331 -0
  65. package/dist/alerting/FeedbackRouter.js.map +1 -0
  66. package/dist/alerting/StrategyApplicator.d.ts +120 -0
  67. package/dist/alerting/StrategyApplicator.d.ts.map +1 -0
  68. package/dist/alerting/StrategyApplicator.js +299 -0
  69. package/dist/alerting/StrategyApplicator.js.map +1 -0
  70. package/dist/alerting/index.d.ts +68 -0
  71. package/dist/alerting/index.d.ts.map +1 -0
  72. package/dist/alerting/index.js +112 -0
  73. package/dist/alerting/index.js.map +1 -0
  74. package/dist/alerting/types.d.ts +118 -0
  75. package/dist/alerting/types.d.ts.map +1 -0
  76. package/dist/alerting/types.js +11 -0
  77. package/dist/alerting/types.js.map +1 -0
  78. package/dist/cli/commands/debug/agent.d.ts.map +1 -1
  79. package/dist/cli/commands/debug/agent.js +19 -6
  80. package/dist/cli/commands/debug/agent.js.map +1 -1
  81. package/dist/cli/commands/debug/health-check.js +20 -7
  82. package/dist/cli/commands/debug/health-check.js.map +1 -1
  83. package/dist/cli/commands/init-claude-md-template.d.ts +1 -0
  84. package/dist/cli/commands/init-claude-md-template.d.ts.map +1 -1
  85. package/dist/cli/commands/init-claude-md-template.js +4 -3
  86. package/dist/cli/commands/init-claude-md-template.js.map +1 -1
  87. package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
  88. package/dist/cli/commands/workflow/cancel.js +4 -3
  89. package/dist/cli/commands/workflow/cancel.js.map +1 -1
  90. package/dist/cli/commands/workflow/list.d.ts.map +1 -1
  91. package/dist/cli/commands/workflow/list.js +4 -3
  92. package/dist/cli/commands/workflow/list.js.map +1 -1
  93. package/dist/cli/commands/workflow/pause.d.ts.map +1 -1
  94. package/dist/cli/commands/workflow/pause.js +4 -3
  95. package/dist/cli/commands/workflow/pause.js.map +1 -1
  96. package/dist/cli/init/claude-config.d.ts.map +1 -1
  97. package/dist/cli/init/claude-config.js +13 -13
  98. package/dist/cli/init/claude-config.js.map +1 -1
  99. package/dist/cli/init/claude-md.d.ts.map +1 -1
  100. package/dist/cli/init/claude-md.js +44 -2
  101. package/dist/cli/init/claude-md.js.map +1 -1
  102. package/dist/cli/init/database-init.js +1 -1
  103. package/dist/cli/init/index.d.ts.map +1 -1
  104. package/dist/cli/init/index.js +13 -6
  105. package/dist/cli/init/index.js.map +1 -1
  106. package/dist/cli/init/skills.d.ts.map +1 -1
  107. package/dist/cli/init/skills.js +2 -1
  108. package/dist/cli/init/skills.js.map +1 -1
  109. package/dist/core/memory/AgentDBIntegration.d.ts +24 -6
  110. package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -1
  111. package/dist/core/memory/AgentDBIntegration.js +66 -10
  112. package/dist/core/memory/AgentDBIntegration.js.map +1 -1
  113. package/dist/core/memory/IPatternStore.d.ts +209 -0
  114. package/dist/core/memory/IPatternStore.d.ts.map +1 -0
  115. package/dist/core/memory/IPatternStore.js +15 -0
  116. package/dist/core/memory/IPatternStore.js.map +1 -0
  117. package/dist/core/memory/MigrationTools.d.ts +192 -0
  118. package/dist/core/memory/MigrationTools.d.ts.map +1 -0
  119. package/dist/core/memory/MigrationTools.js +615 -0
  120. package/dist/core/memory/MigrationTools.js.map +1 -0
  121. package/dist/core/memory/NeuralEnhancement.d.ts +154 -0
  122. package/dist/core/memory/NeuralEnhancement.d.ts.map +1 -0
  123. package/dist/core/memory/NeuralEnhancement.js +598 -0
  124. package/dist/core/memory/NeuralEnhancement.js.map +1 -0
  125. package/dist/core/memory/PatternStoreFactory.d.ts +143 -0
  126. package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -0
  127. package/dist/core/memory/PatternStoreFactory.js +370 -0
  128. package/dist/core/memory/PatternStoreFactory.js.map +1 -0
  129. package/dist/core/memory/RealAgentDBAdapter.d.ts +1 -0
  130. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
  131. package/dist/core/memory/RealAgentDBAdapter.js +28 -20
  132. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
  133. package/dist/core/memory/RuVectorPatternStore.d.ts +198 -0
  134. package/dist/core/memory/RuVectorPatternStore.d.ts.map +1 -0
  135. package/dist/core/memory/RuVectorPatternStore.js +605 -0
  136. package/dist/core/memory/RuVectorPatternStore.js.map +1 -0
  137. package/dist/core/memory/SelfHealingMonitor.d.ts +186 -0
  138. package/dist/core/memory/SelfHealingMonitor.d.ts.map +1 -0
  139. package/dist/core/memory/SelfHealingMonitor.js +451 -0
  140. package/dist/core/memory/SelfHealingMonitor.js.map +1 -0
  141. package/dist/core/memory/SwarmMemoryManager.d.ts +62 -0
  142. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  143. package/dist/core/memory/SwarmMemoryManager.js +97 -0
  144. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  145. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts +341 -0
  146. package/dist/core/memory/UnifiedMemoryCoordinator.d.ts.map +1 -0
  147. package/dist/core/memory/UnifiedMemoryCoordinator.js +986 -0
  148. package/dist/core/memory/UnifiedMemoryCoordinator.js.map +1 -0
  149. package/dist/core/memory/index.d.ts +16 -0
  150. package/dist/core/memory/index.d.ts.map +1 -1
  151. package/dist/core/memory/index.js +58 -1
  152. package/dist/core/memory/index.js.map +1 -1
  153. package/dist/core/optimization/SwarmOptimizer.d.ts +185 -0
  154. package/dist/core/optimization/SwarmOptimizer.d.ts.map +1 -0
  155. package/dist/core/optimization/SwarmOptimizer.js +631 -0
  156. package/dist/core/optimization/SwarmOptimizer.js.map +1 -0
  157. package/dist/core/optimization/index.d.ts +9 -0
  158. package/dist/core/optimization/index.d.ts.map +1 -0
  159. package/dist/core/optimization/index.js +25 -0
  160. package/dist/core/optimization/index.js.map +1 -0
  161. package/dist/core/optimization/types.d.ts +53 -0
  162. package/dist/core/optimization/types.d.ts.map +1 -0
  163. package/dist/core/optimization/types.js +6 -0
  164. package/dist/core/optimization/types.js.map +1 -0
  165. package/dist/core/orchestration/PriorityQueue.d.ts +54 -0
  166. package/dist/core/orchestration/PriorityQueue.d.ts.map +1 -0
  167. package/dist/core/orchestration/PriorityQueue.js +122 -0
  168. package/dist/core/orchestration/PriorityQueue.js.map +1 -0
  169. package/dist/core/orchestration/WorkflowOrchestrator.d.ts +176 -0
  170. package/dist/core/orchestration/WorkflowOrchestrator.d.ts.map +1 -0
  171. package/dist/core/orchestration/WorkflowOrchestrator.js +813 -0
  172. package/dist/core/orchestration/WorkflowOrchestrator.js.map +1 -0
  173. package/dist/core/orchestration/index.d.ts +7 -0
  174. package/dist/core/orchestration/index.d.ts.map +1 -0
  175. package/dist/core/orchestration/index.js +11 -0
  176. package/dist/core/orchestration/index.js.map +1 -0
  177. package/dist/core/orchestration/types.d.ts +96 -0
  178. package/dist/core/orchestration/types.d.ts.map +1 -0
  179. package/dist/core/orchestration/types.js +6 -0
  180. package/dist/core/orchestration/types.js.map +1 -0
  181. package/dist/core/skills/DynamicSkillLoader.d.ts +96 -0
  182. package/dist/core/skills/DynamicSkillLoader.d.ts.map +1 -0
  183. package/dist/core/skills/DynamicSkillLoader.js +353 -0
  184. package/dist/core/skills/DynamicSkillLoader.js.map +1 -0
  185. package/dist/core/skills/types.d.ts +118 -0
  186. package/dist/core/skills/types.d.ts.map +1 -0
  187. package/dist/core/skills/types.js +7 -0
  188. package/dist/core/skills/types.js.map +1 -0
  189. package/dist/core/transport/QUICTransport.d.ts +320 -0
  190. package/dist/core/transport/QUICTransport.d.ts.map +1 -0
  191. package/dist/core/transport/QUICTransport.js +711 -0
  192. package/dist/core/transport/QUICTransport.js.map +1 -0
  193. package/dist/core/transport/index.d.ts +40 -0
  194. package/dist/core/transport/index.d.ts.map +1 -0
  195. package/dist/core/transport/index.js +46 -0
  196. package/dist/core/transport/index.js.map +1 -0
  197. package/dist/core/transport/quic-loader.d.ts +123 -0
  198. package/dist/core/transport/quic-loader.d.ts.map +1 -0
  199. package/dist/core/transport/quic-loader.js +293 -0
  200. package/dist/core/transport/quic-loader.js.map +1 -0
  201. package/dist/core/transport/quic.d.ts +154 -0
  202. package/dist/core/transport/quic.d.ts.map +1 -0
  203. package/dist/core/transport/quic.js +214 -0
  204. package/dist/core/transport/quic.js.map +1 -0
  205. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  206. package/dist/mcp/services/AgentRegistry.js +4 -1
  207. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  208. package/dist/reasoning/RuVectorReasoningAdapter.d.ts +232 -0
  209. package/dist/reasoning/RuVectorReasoningAdapter.d.ts.map +1 -0
  210. package/dist/reasoning/RuVectorReasoningAdapter.js +585 -0
  211. package/dist/reasoning/RuVectorReasoningAdapter.js.map +1 -0
  212. package/dist/reasoning/index.d.ts +2 -0
  213. package/dist/reasoning/index.d.ts.map +1 -1
  214. package/dist/reasoning/index.js +6 -1
  215. package/dist/reasoning/index.js.map +1 -1
  216. package/dist/reporting/ResultAggregator.d.ts +107 -0
  217. package/dist/reporting/ResultAggregator.d.ts.map +1 -0
  218. package/dist/reporting/ResultAggregator.js +435 -0
  219. package/dist/reporting/ResultAggregator.js.map +1 -0
  220. package/dist/reporting/index.d.ts +48 -0
  221. package/dist/reporting/index.d.ts.map +1 -0
  222. package/dist/reporting/index.js +154 -0
  223. package/dist/reporting/index.js.map +1 -0
  224. package/dist/reporting/reporters/ControlLoopReporter.d.ts +128 -0
  225. package/dist/reporting/reporters/ControlLoopReporter.d.ts.map +1 -0
  226. package/dist/reporting/reporters/ControlLoopReporter.js +417 -0
  227. package/dist/reporting/reporters/ControlLoopReporter.js.map +1 -0
  228. package/dist/reporting/reporters/HumanReadableReporter.d.ts +140 -0
  229. package/dist/reporting/reporters/HumanReadableReporter.d.ts.map +1 -0
  230. package/dist/reporting/reporters/HumanReadableReporter.js +524 -0
  231. package/dist/reporting/reporters/HumanReadableReporter.js.map +1 -0
  232. package/dist/reporting/reporters/JSONReporter.d.ts +193 -0
  233. package/dist/reporting/reporters/JSONReporter.d.ts.map +1 -0
  234. package/dist/reporting/reporters/JSONReporter.js +324 -0
  235. package/dist/reporting/reporters/JSONReporter.js.map +1 -0
  236. package/dist/reporting/reporters/index.d.ts +14 -0
  237. package/dist/reporting/reporters/index.d.ts.map +1 -0
  238. package/dist/reporting/reporters/index.js +19 -0
  239. package/dist/reporting/reporters/index.js.map +1 -0
  240. package/dist/reporting/types.d.ts +427 -0
  241. package/dist/reporting/types.d.ts.map +1 -0
  242. package/dist/reporting/types.js +12 -0
  243. package/dist/reporting/types.js.map +1 -0
  244. package/dist/types/index.d.ts +2 -1
  245. package/dist/types/index.d.ts.map +1 -1
  246. package/dist/types/index.js +2 -0
  247. package/dist/types/index.js.map +1 -1
  248. package/dist/types/qx.d.ts +397 -0
  249. package/dist/types/qx.d.ts.map +1 -0
  250. package/dist/types/qx.js +71 -0
  251. package/dist/types/qx.js.map +1 -0
  252. package/dist/visualization/api/RestEndpoints.js +1 -1
  253. package/dist/visualization/api/RestEndpoints.js.map +1 -1
  254. package/dist/visualization/api/WebSocketServer.d.ts +44 -0
  255. package/dist/visualization/api/WebSocketServer.d.ts.map +1 -1
  256. package/dist/visualization/api/WebSocketServer.js +144 -23
  257. package/dist/visualization/api/WebSocketServer.js.map +1 -1
  258. package/dist/visualization/core/DataTransformer.d.ts +10 -0
  259. package/dist/visualization/core/DataTransformer.d.ts.map +1 -1
  260. package/dist/visualization/core/DataTransformer.js +60 -5
  261. package/dist/visualization/core/DataTransformer.js.map +1 -1
  262. package/dist/visualization/emit-event.d.ts +75 -0
  263. package/dist/visualization/emit-event.d.ts.map +1 -0
  264. package/dist/visualization/emit-event.js +213 -0
  265. package/dist/visualization/emit-event.js.map +1 -0
  266. package/dist/visualization/index.d.ts +1 -0
  267. package/dist/visualization/index.d.ts.map +1 -1
  268. package/dist/visualization/index.js +7 -1
  269. package/dist/visualization/index.js.map +1 -1
  270. package/docs/reference/skills.md +63 -1
  271. package/package.json +12 -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;AAEnE,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"}
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;AAItB,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"}
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"}
@@ -1,6 +1,6 @@
1
1
  # Agentic QE Fleet - Skills Reference
2
2
 
3
- This document provides comprehensive reference for all 38 specialized QE skills available to agents.
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": "1.9.3",
4
- "description": "Agentic Quality Engineering Fleet System - AI-driven quality management platform with 38 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",
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": {
@@ -149,9 +149,10 @@
149
149
  "@opentelemetry/sdk-trace-base": "^1.28.0",
150
150
  "@opentelemetry/sdk-trace-node": "^1.28.0",
151
151
  "@opentelemetry/semantic-conventions": "^1.28.0",
152
+ "@ruvector/core": "^0.1.15",
152
153
  "@types/ws": "^8.18.1",
153
154
  "@xenova/transformers": "^2.6.0",
154
- "agentdb": "^1.0.0",
155
+ "agentdb": "^1.6.1",
155
156
  "agentic-flow": "^1.10.2",
156
157
  "ajv": "^8.17.1",
157
158
  "ajv-formats": "^3.0.1",
@@ -161,16 +162,23 @@
161
162
  "cli-table3": "^0.6.5",
162
163
  "commander": "^14.0.1",
163
164
  "cors": "^2.8.5",
164
- "express": "^5.1.0",
165
+ "express": "^5.2.1",
165
166
  "fs-extra": "^11.1.1",
166
167
  "graphql": "^16.11.0",
167
168
  "inquirer": "^8.2.6",
168
169
  "ora": "^5.4.1",
170
+ "ruvector": "^0.1.24",
169
171
  "uuid": "^11.0.5",
170
172
  "winston": "^3.18.3",
171
173
  "ws": "^8.18.3",
172
174
  "yaml": "^2.8.1"
173
175
  },
176
+ "optionalDependencies": {
177
+ "@ruvector/node-linux-arm64-gnu": "^0.1.16",
178
+ "@ruvector/node-linux-x64-gnu": "^0.1.16",
179
+ "ruvector-core-linux-arm64-gnu": "^0.1.15",
180
+ "ruvector-core-linux-x64-gnu": "^0.1.15"
181
+ },
174
182
  "resolutions": {
175
183
  "graceful-fs": "^4.2.11",
176
184
  "stack-utils": "^2.0.6"