agentic-qe 2.3.3 → 2.3.5

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 (255) hide show
  1. package/CHANGELOG.md +122 -0
  2. package/README.md +1 -1
  3. package/dist/agents/ApiContractValidatorAgent.d.ts +5 -0
  4. package/dist/agents/ApiContractValidatorAgent.d.ts.map +1 -1
  5. package/dist/agents/ApiContractValidatorAgent.js +41 -0
  6. package/dist/agents/ApiContractValidatorAgent.js.map +1 -1
  7. package/dist/agents/BaseAgent.d.ts +10 -0
  8. package/dist/agents/BaseAgent.d.ts.map +1 -1
  9. package/dist/agents/BaseAgent.js +113 -0
  10. package/dist/agents/BaseAgent.js.map +1 -1
  11. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +5 -0
  12. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -1
  13. package/dist/agents/CodeComplexityAnalyzerAgent.js +47 -0
  14. package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -1
  15. package/dist/agents/CoverageAnalyzerAgent.d.ts +26 -0
  16. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  17. package/dist/agents/CoverageAnalyzerAgent.js +149 -1
  18. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  19. package/dist/agents/DeploymentReadinessAgent.d.ts +5 -0
  20. package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
  21. package/dist/agents/DeploymentReadinessAgent.js +41 -0
  22. package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
  23. package/dist/agents/FlakyTestHunterAgent.d.ts +5 -0
  24. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  25. package/dist/agents/FlakyTestHunterAgent.js +40 -0
  26. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  27. package/dist/agents/FleetCommanderAgent.d.ts +5 -0
  28. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  29. package/dist/agents/FleetCommanderAgent.js +51 -0
  30. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  31. package/dist/agents/PerformanceTesterAgent.d.ts +5 -0
  32. package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
  33. package/dist/agents/PerformanceTesterAgent.js +44 -0
  34. package/dist/agents/PerformanceTesterAgent.js.map +1 -1
  35. package/dist/agents/ProductionIntelligenceAgent.d.ts +5 -0
  36. package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
  37. package/dist/agents/ProductionIntelligenceAgent.js +46 -0
  38. package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
  39. package/dist/agents/QXPartnerAgent.js +52 -0
  40. package/dist/agents/QXPartnerAgent.js.map +1 -1
  41. package/dist/agents/QualityAnalyzerAgent.d.ts +5 -0
  42. package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
  43. package/dist/agents/QualityAnalyzerAgent.js +45 -0
  44. package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
  45. package/dist/agents/QualityGateAgent.d.ts +40 -0
  46. package/dist/agents/QualityGateAgent.d.ts.map +1 -1
  47. package/dist/agents/QualityGateAgent.js +227 -1
  48. package/dist/agents/QualityGateAgent.js.map +1 -1
  49. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts +5 -0
  50. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
  51. package/dist/agents/RegressionRiskAnalyzerAgent.js +46 -0
  52. package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
  53. package/dist/agents/RequirementsValidatorAgent.d.ts +5 -0
  54. package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
  55. package/dist/agents/RequirementsValidatorAgent.js +42 -0
  56. package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
  57. package/dist/agents/SecurityScannerAgent.d.ts +5 -0
  58. package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
  59. package/dist/agents/SecurityScannerAgent.js +39 -0
  60. package/dist/agents/SecurityScannerAgent.js.map +1 -1
  61. package/dist/agents/TestDataArchitectAgent.d.ts +5 -0
  62. package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
  63. package/dist/agents/TestDataArchitectAgent.js +46 -0
  64. package/dist/agents/TestDataArchitectAgent.js.map +1 -1
  65. package/dist/agents/TestExecutorAgent.d.ts +5 -0
  66. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  67. package/dist/agents/TestExecutorAgent.js +48 -0
  68. package/dist/agents/TestExecutorAgent.js.map +1 -1
  69. package/dist/agents/TestGeneratorAgent.d.ts +5 -0
  70. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  71. package/dist/agents/TestGeneratorAgent.js +36 -0
  72. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  73. package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
  74. package/dist/agents/lifecycle/AgentLifecycleManager.js +5 -2
  75. package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
  76. package/dist/cli/commands/dream/index.d.ts +50 -0
  77. package/dist/cli/commands/dream/index.d.ts.map +1 -0
  78. package/dist/cli/commands/dream/index.js +282 -0
  79. package/dist/cli/commands/dream/index.js.map +1 -0
  80. package/dist/cli/commands/learn/index.d.ts +31 -5
  81. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  82. package/dist/cli/commands/learn/index.js +183 -50
  83. package/dist/cli/commands/learn/index.js.map +1 -1
  84. package/dist/cli/commands/transfer/index.d.ts +55 -0
  85. package/dist/cli/commands/transfer/index.d.ts.map +1 -0
  86. package/dist/cli/commands/transfer/index.js +317 -0
  87. package/dist/cli/commands/transfer/index.js.map +1 -0
  88. package/dist/cli/index.js +224 -3
  89. package/dist/cli/index.js.map +1 -1
  90. package/dist/cli/init/index.d.ts.map +1 -1
  91. package/dist/cli/init/index.js +12 -4
  92. package/dist/cli/init/index.js.map +1 -1
  93. package/dist/cli/init/learning-init.d.ts +39 -0
  94. package/dist/cli/init/learning-init.d.ts.map +1 -0
  95. package/dist/cli/init/learning-init.js +239 -0
  96. package/dist/cli/init/learning-init.js.map +1 -0
  97. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  98. package/dist/learning/baselines/BaselineCollector.d.ts +178 -0
  99. package/dist/learning/baselines/BaselineCollector.d.ts.map +1 -0
  100. package/dist/learning/baselines/BaselineCollector.js +398 -0
  101. package/dist/learning/baselines/BaselineCollector.js.map +1 -0
  102. package/dist/learning/baselines/StandardTaskSuite.d.ts +88 -0
  103. package/dist/learning/baselines/StandardTaskSuite.d.ts.map +1 -0
  104. package/dist/learning/baselines/StandardTaskSuite.js +801 -0
  105. package/dist/learning/baselines/StandardTaskSuite.js.map +1 -0
  106. package/dist/learning/baselines/index.d.ts +10 -0
  107. package/dist/learning/baselines/index.d.ts.map +1 -0
  108. package/dist/learning/baselines/index.js +15 -0
  109. package/dist/learning/baselines/index.js.map +1 -0
  110. package/dist/learning/capture/ExecutionRecorder.d.ts +97 -0
  111. package/dist/learning/capture/ExecutionRecorder.d.ts.map +1 -0
  112. package/dist/learning/capture/ExecutionRecorder.js +195 -0
  113. package/dist/learning/capture/ExecutionRecorder.js.map +1 -0
  114. package/dist/learning/capture/ExperienceCapture.d.ts +177 -0
  115. package/dist/learning/capture/ExperienceCapture.d.ts.map +1 -0
  116. package/dist/learning/capture/ExperienceCapture.js +432 -0
  117. package/dist/learning/capture/ExperienceCapture.js.map +1 -0
  118. package/dist/learning/capture/ExperienceExtractor.d.ts +219 -0
  119. package/dist/learning/capture/ExperienceExtractor.d.ts.map +1 -0
  120. package/dist/learning/capture/ExperienceExtractor.js +536 -0
  121. package/dist/learning/capture/ExperienceExtractor.js.map +1 -0
  122. package/dist/learning/capture/ExperienceStore.d.ts +196 -0
  123. package/dist/learning/capture/ExperienceStore.d.ts.map +1 -0
  124. package/dist/learning/capture/ExperienceStore.js +453 -0
  125. package/dist/learning/capture/ExperienceStore.js.map +1 -0
  126. package/dist/learning/capture/index.d.ts +12 -0
  127. package/dist/learning/capture/index.d.ts.map +1 -0
  128. package/dist/learning/capture/index.js +17 -0
  129. package/dist/learning/capture/index.js.map +1 -0
  130. package/dist/learning/dashboard/MetricsDashboard.d.ts +63 -0
  131. package/dist/learning/dashboard/MetricsDashboard.d.ts.map +1 -0
  132. package/dist/learning/dashboard/MetricsDashboard.js +230 -0
  133. package/dist/learning/dashboard/MetricsDashboard.js.map +1 -0
  134. package/dist/learning/dashboard/index.d.ts +7 -0
  135. package/dist/learning/dashboard/index.d.ts.map +1 -0
  136. package/dist/learning/dashboard/index.js +23 -0
  137. package/dist/learning/dashboard/index.js.map +1 -0
  138. package/dist/learning/dream/ConceptGraph.d.ts +160 -0
  139. package/dist/learning/dream/ConceptGraph.d.ts.map +1 -0
  140. package/dist/learning/dream/ConceptGraph.js +445 -0
  141. package/dist/learning/dream/ConceptGraph.js.map +1 -0
  142. package/dist/learning/dream/DreamEngine.d.ts +150 -0
  143. package/dist/learning/dream/DreamEngine.d.ts.map +1 -0
  144. package/dist/learning/dream/DreamEngine.js +551 -0
  145. package/dist/learning/dream/DreamEngine.js.map +1 -0
  146. package/dist/learning/dream/InsightGenerator.d.ts +152 -0
  147. package/dist/learning/dream/InsightGenerator.d.ts.map +1 -0
  148. package/dist/learning/dream/InsightGenerator.js +463 -0
  149. package/dist/learning/dream/InsightGenerator.js.map +1 -0
  150. package/dist/learning/dream/SpreadingActivation.d.ts +138 -0
  151. package/dist/learning/dream/SpreadingActivation.d.ts.map +1 -0
  152. package/dist/learning/dream/SpreadingActivation.js +320 -0
  153. package/dist/learning/dream/SpreadingActivation.js.map +1 -0
  154. package/dist/learning/dream/index.d.ts +14 -0
  155. package/dist/learning/dream/index.d.ts.map +1 -0
  156. package/dist/learning/dream/index.js +22 -0
  157. package/dist/learning/dream/index.js.map +1 -0
  158. package/dist/learning/metrics/AlertManager.d.ts +107 -0
  159. package/dist/learning/metrics/AlertManager.d.ts.map +1 -0
  160. package/dist/learning/metrics/AlertManager.js +246 -0
  161. package/dist/learning/metrics/AlertManager.js.map +1 -0
  162. package/dist/learning/metrics/LearningMetrics.d.ts +184 -0
  163. package/dist/learning/metrics/LearningMetrics.d.ts.map +1 -0
  164. package/dist/learning/metrics/LearningMetrics.js +754 -0
  165. package/dist/learning/metrics/LearningMetrics.js.map +1 -0
  166. package/dist/learning/metrics/MetricsCollector.d.ts +108 -0
  167. package/dist/learning/metrics/MetricsCollector.d.ts.map +1 -0
  168. package/dist/learning/metrics/MetricsCollector.js +240 -0
  169. package/dist/learning/metrics/MetricsCollector.js.map +1 -0
  170. package/dist/learning/metrics/MetricsStore.d.ts +149 -0
  171. package/dist/learning/metrics/MetricsStore.d.ts.map +1 -0
  172. package/dist/learning/metrics/MetricsStore.js +502 -0
  173. package/dist/learning/metrics/MetricsStore.js.map +1 -0
  174. package/dist/learning/metrics/TrendAnalyzer.d.ts +85 -0
  175. package/dist/learning/metrics/TrendAnalyzer.d.ts.map +1 -0
  176. package/dist/learning/metrics/TrendAnalyzer.js +210 -0
  177. package/dist/learning/metrics/TrendAnalyzer.js.map +1 -0
  178. package/dist/learning/metrics/index.d.ts +13 -0
  179. package/dist/learning/metrics/index.d.ts.map +1 -0
  180. package/dist/learning/metrics/index.js +39 -0
  181. package/dist/learning/metrics/index.js.map +1 -0
  182. package/dist/learning/scheduler/IdleDetector.d.ts +126 -0
  183. package/dist/learning/scheduler/IdleDetector.d.ts.map +1 -0
  184. package/dist/learning/scheduler/IdleDetector.js +281 -0
  185. package/dist/learning/scheduler/IdleDetector.js.map +1 -0
  186. package/dist/learning/scheduler/SleepCycle.d.ts +150 -0
  187. package/dist/learning/scheduler/SleepCycle.d.ts.map +1 -0
  188. package/dist/learning/scheduler/SleepCycle.js +506 -0
  189. package/dist/learning/scheduler/SleepCycle.js.map +1 -0
  190. package/dist/learning/scheduler/SleepScheduler.d.ts +133 -0
  191. package/dist/learning/scheduler/SleepScheduler.d.ts.map +1 -0
  192. package/dist/learning/scheduler/SleepScheduler.js +301 -0
  193. package/dist/learning/scheduler/SleepScheduler.js.map +1 -0
  194. package/dist/learning/scheduler/TimeBasedTrigger.d.ts +108 -0
  195. package/dist/learning/scheduler/TimeBasedTrigger.d.ts.map +1 -0
  196. package/dist/learning/scheduler/TimeBasedTrigger.js +222 -0
  197. package/dist/learning/scheduler/TimeBasedTrigger.js.map +1 -0
  198. package/dist/learning/scheduler/index.d.ts +16 -0
  199. package/dist/learning/scheduler/index.d.ts.map +1 -0
  200. package/dist/learning/scheduler/index.js +23 -0
  201. package/dist/learning/scheduler/index.js.map +1 -0
  202. package/dist/learning/synthesis/ClusteringEngine.d.ts +122 -0
  203. package/dist/learning/synthesis/ClusteringEngine.d.ts.map +1 -0
  204. package/dist/learning/synthesis/ClusteringEngine.js +356 -0
  205. package/dist/learning/synthesis/ClusteringEngine.js.map +1 -0
  206. package/dist/learning/synthesis/PatternSynthesis.d.ts +162 -0
  207. package/dist/learning/synthesis/PatternSynthesis.d.ts.map +1 -0
  208. package/dist/learning/synthesis/PatternSynthesis.js +479 -0
  209. package/dist/learning/synthesis/PatternSynthesis.js.map +1 -0
  210. package/dist/learning/synthesis/index.d.ts +10 -0
  211. package/dist/learning/synthesis/index.d.ts.map +1 -0
  212. package/dist/learning/synthesis/index.js +14 -0
  213. package/dist/learning/synthesis/index.js.map +1 -0
  214. package/dist/learning/transfer/CompatibilityScorer.d.ts +115 -0
  215. package/dist/learning/transfer/CompatibilityScorer.d.ts.map +1 -0
  216. package/dist/learning/transfer/CompatibilityScorer.js +319 -0
  217. package/dist/learning/transfer/CompatibilityScorer.js.map +1 -0
  218. package/dist/learning/transfer/TransferProtocol.d.ts +172 -0
  219. package/dist/learning/transfer/TransferProtocol.d.ts.map +1 -0
  220. package/dist/learning/transfer/TransferProtocol.js +611 -0
  221. package/dist/learning/transfer/TransferProtocol.js.map +1 -0
  222. package/dist/learning/transfer/TransferPrototype.d.ts +93 -0
  223. package/dist/learning/transfer/TransferPrototype.d.ts.map +1 -0
  224. package/dist/learning/transfer/TransferPrototype.js +433 -0
  225. package/dist/learning/transfer/TransferPrototype.js.map +1 -0
  226. package/dist/learning/transfer/TransferRegistry.d.ts +245 -0
  227. package/dist/learning/transfer/TransferRegistry.d.ts.map +1 -0
  228. package/dist/learning/transfer/TransferRegistry.js +410 -0
  229. package/dist/learning/transfer/TransferRegistry.js.map +1 -0
  230. package/dist/learning/transfer/TransferValidator.d.ts +140 -0
  231. package/dist/learning/transfer/TransferValidator.d.ts.map +1 -0
  232. package/dist/learning/transfer/TransferValidator.js +413 -0
  233. package/dist/learning/transfer/TransferValidator.js.map +1 -0
  234. package/dist/learning/transfer/index.d.ts +14 -0
  235. package/dist/learning/transfer/index.d.ts.map +1 -0
  236. package/dist/learning/transfer/index.js +22 -0
  237. package/dist/learning/transfer/index.js.map +1 -0
  238. package/dist/mcp/handlers/task-orchestrate.d.ts +11 -0
  239. package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
  240. package/dist/mcp/handlers/task-orchestrate.js +297 -4
  241. package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
  242. package/dist/mcp/handlers/test/test-generate-enhanced.d.ts +26 -2
  243. package/dist/mcp/handlers/test/test-generate-enhanced.d.ts.map +1 -1
  244. package/dist/mcp/handlers/test/test-generate-enhanced.js +159 -27
  245. package/dist/mcp/handlers/test/test-generate-enhanced.js.map +1 -1
  246. package/dist/mcp/server-instructions.d.ts +1 -1
  247. package/dist/mcp/server-instructions.js +1 -1
  248. package/dist/mcp/server.d.ts.map +1 -1
  249. package/dist/mcp/server.js +2 -1
  250. package/dist/mcp/server.js.map +1 -1
  251. package/dist/mcp/services/AgentRegistry.d.ts +6 -1
  252. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  253. package/dist/mcp/services/AgentRegistry.js +34 -3
  254. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  255. package/package.json +5 -2
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ /**
3
+ * Learning System Initialization
4
+ *
5
+ * Initializes the Nightly-Learner system including:
6
+ * - ExperienceCapture singleton
7
+ * - SleepScheduler for automated learning cycles
8
+ * - Learning configuration persistence
9
+ *
10
+ * @module cli/init/learning-init
11
+ */
12
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ var desc = Object.getOwnPropertyDescriptor(m, k);
15
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
16
+ desc = { enumerable: true, get: function() { return m[k]; } };
17
+ }
18
+ Object.defineProperty(o, k2, desc);
19
+ }) : (function(o, m, k, k2) {
20
+ if (k2 === undefined) k2 = k;
21
+ o[k2] = m[k];
22
+ }));
23
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
24
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
25
+ }) : function(o, v) {
26
+ o["default"] = v;
27
+ });
28
+ var __importStar = (this && this.__importStar) || (function () {
29
+ var ownKeys = function(o) {
30
+ ownKeys = Object.getOwnPropertyNames || function (o) {
31
+ var ar = [];
32
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
33
+ return ar;
34
+ };
35
+ return ownKeys(o);
36
+ };
37
+ return function (mod) {
38
+ if (mod && mod.__esModule) return mod;
39
+ var result = {};
40
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
41
+ __setModuleDefault(result, mod);
42
+ return result;
43
+ };
44
+ })();
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ exports.initializeLearningSystem = initializeLearningSystem;
47
+ exports.isLearningInitialized = isLearningInitialized;
48
+ exports.getLearningConfig = getLearningConfig;
49
+ const path = __importStar(require("path"));
50
+ const fs = __importStar(require("fs-extra"));
51
+ const Logger_1 = require("../../utils/Logger");
52
+ const DEFAULT_LEARNING_CONFIG = {
53
+ mode: 'hybrid',
54
+ startHour: 2,
55
+ durationMinutes: 60,
56
+ enabled: true,
57
+ };
58
+ /**
59
+ * Initialize the learning system
60
+ *
61
+ * Sets up:
62
+ * 1. Learning configuration file
63
+ * 2. Required database tables (via ExperienceCapture)
64
+ * 3. Scheduler configuration for nightly runs
65
+ */
66
+ async function initializeLearningSystem(fleetConfig, learningConfig) {
67
+ const logger = Logger_1.Logger.getInstance();
68
+ const config = { ...DEFAULT_LEARNING_CONFIG, ...learningConfig };
69
+ logger.info('[LearningInit] Initializing Nightly-Learner system', config);
70
+ const baseDir = path.join(process.cwd(), '.agentic-qe');
71
+ // 1. Ensure base directory exists
72
+ await fs.ensureDir(baseDir);
73
+ // 2. Create learning configuration file
74
+ const learningConfigPath = path.join(baseDir, 'learning-config.json');
75
+ const fullConfig = {
76
+ version: '1.0.0',
77
+ enabled: config.enabled,
78
+ scheduler: {
79
+ mode: config.mode,
80
+ schedule: {
81
+ startHour: config.startHour,
82
+ durationMinutes: config.durationMinutes,
83
+ daysOfWeek: [0, 1, 2, 3, 4, 5, 6], // Every day
84
+ },
85
+ learningBudget: {
86
+ maxPatternsPerCycle: 50,
87
+ maxAgentsPerCycle: 5,
88
+ maxDurationMs: 3600000, // 1 hour
89
+ },
90
+ },
91
+ capture: {
92
+ bufferSize: 100,
93
+ flushInterval: 30000, // 30 seconds
94
+ },
95
+ metrics: {
96
+ retentionDays: 30,
97
+ alertThresholds: {
98
+ successRateDrop: 15,
99
+ completionTimeIncrease: 20,
100
+ coverageDrop: 15,
101
+ },
102
+ },
103
+ createdAt: new Date().toISOString(),
104
+ updatedAt: new Date().toISOString(),
105
+ };
106
+ await fs.writeJson(learningConfigPath, fullConfig, { spaces: 2 });
107
+ logger.info('[LearningInit] Created learning configuration', { path: learningConfigPath });
108
+ // 3. Initialize ExperienceCapture (creates database tables)
109
+ // Note: We only verify the database schema is created, then stop the capture
110
+ // to allow the init process to exit cleanly. The capture will be started
111
+ // again when agents actually run.
112
+ try {
113
+ const { ExperienceCapture } = await Promise.resolve().then(() => __importStar(require('../../learning/capture/ExperienceCapture')));
114
+ const capture = await ExperienceCapture.getSharedInstance({
115
+ bufferSize: config.enabled ? 100 : 0,
116
+ flushInterval: 30000,
117
+ });
118
+ // Get stats to verify initialization
119
+ const stats = capture.getStats();
120
+ logger.info('[LearningInit] ExperienceCapture initialized', {
121
+ totalCaptured: stats.totalCaptured,
122
+ bufferSize: stats.bufferSize,
123
+ });
124
+ // Stop the capture service to allow process to exit
125
+ // It will be restarted when agents run
126
+ await capture.stop();
127
+ ExperienceCapture.resetInstance();
128
+ }
129
+ catch (error) {
130
+ logger.warn('[LearningInit] ExperienceCapture initialization deferred', {
131
+ error: error instanceof Error ? error.message : String(error),
132
+ });
133
+ }
134
+ // 4. Create scheduler startup script
135
+ const schedulerScriptPath = path.join(baseDir, 'start-learning.js');
136
+ const schedulerScript = `#!/usr/bin/env node
137
+ /**
138
+ * Nightly-Learner Startup Script
139
+ * Generated by aqe init
140
+ *
141
+ * Run this script to start the learning scheduler:
142
+ * node .agentic-qe/start-learning.js
143
+ *
144
+ * Or add to your application startup.
145
+ */
146
+
147
+ const path = require('path');
148
+
149
+ async function startLearning() {
150
+ try {
151
+ // Load configuration
152
+ const config = require('./learning-config.json');
153
+
154
+ if (!config.enabled) {
155
+ console.log('[Nightly-Learner] Learning is disabled in config');
156
+ return;
157
+ }
158
+
159
+ // Import scheduler
160
+ const { SleepScheduler } = require('agentic-qe/dist/learning/scheduler/SleepScheduler');
161
+
162
+ // Create and start scheduler
163
+ const scheduler = new SleepScheduler({
164
+ mode: config.scheduler.mode,
165
+ schedule: config.scheduler.schedule,
166
+ learningBudget: config.scheduler.learningBudget,
167
+ });
168
+
169
+ scheduler.on('scheduler:started', (state) => {
170
+ console.log('[Nightly-Learner] Scheduler started:', state.mode);
171
+ });
172
+
173
+ scheduler.on('sleep:start', (cycle) => {
174
+ console.log('[Nightly-Learner] Learning cycle started');
175
+ });
176
+
177
+ scheduler.on('sleep:end', (summary) => {
178
+ console.log('[Nightly-Learner] Learning cycle complete:', {
179
+ patternsDiscovered: summary.patternsDiscovered,
180
+ agentsProcessed: summary.agentsProcessed.length,
181
+ });
182
+ });
183
+
184
+ scheduler.on('error', (error) => {
185
+ console.error('[Nightly-Learner] Error:', error);
186
+ });
187
+
188
+ await scheduler.start();
189
+ console.log('[Nightly-Learner] System running. Press Ctrl+C to stop.');
190
+
191
+ // Handle graceful shutdown
192
+ process.on('SIGINT', async () => {
193
+ console.log('\\n[Nightly-Learner] Shutting down...');
194
+ await scheduler.stop();
195
+ process.exit(0);
196
+ });
197
+
198
+ } catch (error) {
199
+ console.error('[Nightly-Learner] Failed to start:', error);
200
+ process.exit(1);
201
+ }
202
+ }
203
+
204
+ startLearning();
205
+ `;
206
+ await fs.writeFile(schedulerScriptPath, schedulerScript);
207
+ await fs.chmod(schedulerScriptPath, 0o755);
208
+ logger.info('[LearningInit] Created scheduler startup script', { path: schedulerScriptPath });
209
+ logger.info('[LearningInit] Learning system initialization complete');
210
+ }
211
+ /**
212
+ * Check if learning system is initialized
213
+ */
214
+ async function isLearningInitialized() {
215
+ const configPath = path.join(process.cwd(), '.agentic-qe', 'learning-config.json');
216
+ return fs.pathExists(configPath);
217
+ }
218
+ /**
219
+ * Get learning configuration
220
+ */
221
+ async function getLearningConfig() {
222
+ const configPath = path.join(process.cwd(), '.agentic-qe', 'learning-config.json');
223
+ if (await fs.pathExists(configPath)) {
224
+ try {
225
+ const config = await fs.readJson(configPath);
226
+ return {
227
+ mode: config.scheduler?.mode,
228
+ startHour: config.scheduler?.schedule?.startHour,
229
+ durationMinutes: config.scheduler?.schedule?.durationMinutes,
230
+ enabled: config.enabled,
231
+ };
232
+ }
233
+ catch {
234
+ return null;
235
+ }
236
+ }
237
+ return null;
238
+ }
239
+ //# sourceMappingURL=learning-init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learning-init.js","sourceRoot":"","sources":["../../../src/cli/init/learning-init.ts"],"names":[],"mappings":"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"}
@@ -507,7 +507,7 @@ class HNSWVectorMemory {
507
507
  getImplementationInfo() {
508
508
  return {
509
509
  type: 'agentdb',
510
- version: '2.3.2',
510
+ version: '2.3.5',
511
511
  features: ['hnsw', 'vector-search', 'persistence', 'batch-operations'],
512
512
  };
513
513
  }
@@ -0,0 +1,178 @@
1
+ /**
2
+ * BaselineCollector - Phase 0 of Nightly-Learner System
3
+ *
4
+ * Collects performance baselines for all 19 QE agents to establish
5
+ * quantitative improvement targets (10-20% above baseline).
6
+ *
7
+ * Architecture:
8
+ * - Uses shared memory database (.agentic-qe/memory.db)
9
+ * - Stores baselines in dedicated `learning_baselines` table
10
+ * - Integrates with StandardTaskSuite for consistent benchmarking
11
+ * - Provides baseline queries for improvement tracking
12
+ *
13
+ * @version 1.0.0
14
+ * @module src/learning/baselines/BaselineCollector
15
+ */
16
+ import { QEAgentType } from '../../types';
17
+ /**
18
+ * Performance baseline for a QE agent
19
+ */
20
+ export interface LearningBaseline {
21
+ id?: string;
22
+ agentId: string;
23
+ agentType: QEAgentType;
24
+ taskType: string;
25
+ metrics: {
26
+ avgCompletionTime: number;
27
+ successRate: number;
28
+ patternRecallAccuracy: number;
29
+ coverageAchieved: number;
30
+ };
31
+ sampleSize: number;
32
+ collectedAt: Date;
33
+ updatedAt?: Date;
34
+ }
35
+ /**
36
+ * Baseline statistics for reporting
37
+ */
38
+ export interface BaselineStats {
39
+ agentType: QEAgentType;
40
+ totalBaselines: number;
41
+ avgSuccessRate: number;
42
+ avgCompletionTime: number;
43
+ avgCoverage: number;
44
+ lastCollected: Date | null;
45
+ }
46
+ /**
47
+ * Improvement target derived from baseline
48
+ */
49
+ export interface ImprovementTarget {
50
+ agentType: QEAgentType;
51
+ taskType: string;
52
+ baseline: LearningBaseline;
53
+ targets: {
54
+ targetCompletionTime: number;
55
+ targetSuccessRate: number;
56
+ targetCoverage: number;
57
+ };
58
+ minImprovementThreshold: number;
59
+ aspirationalThreshold: number;
60
+ }
61
+ /**
62
+ * Configuration for baseline collection
63
+ */
64
+ export interface BaselineCollectorConfig {
65
+ /** Database path. Default: .agentic-qe/memory.db */
66
+ dbPath?: string;
67
+ /** Sample size for baseline calculation. Default: 10 */
68
+ sampleSize?: number;
69
+ /** Timeout for each task execution (ms). Default: 30000 */
70
+ taskTimeout?: number;
71
+ /** Enable debug logging */
72
+ debug?: boolean;
73
+ }
74
+ /**
75
+ * BaselineCollector collects and manages performance baselines
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * const collector = new BaselineCollector();
80
+ * await collector.initialize();
81
+ *
82
+ * // Collect baseline for test-generator
83
+ * const baseline = await collector.collectBaseline(
84
+ * 'test-gen-001',
85
+ * QEAgentType.TEST_GENERATOR,
86
+ * 'unit-test-generation'
87
+ * );
88
+ *
89
+ * // Get improvement targets
90
+ * const targets = collector.getImprovementTarget(baseline);
91
+ * ```
92
+ */
93
+ export declare class BaselineCollector {
94
+ private config;
95
+ private db;
96
+ private logger;
97
+ private taskSuite;
98
+ private isInitialized;
99
+ constructor(config?: BaselineCollectorConfig);
100
+ /**
101
+ * Initialize the baseline collector and database schema
102
+ */
103
+ initialize(): Promise<void>;
104
+ /**
105
+ * Initialize database schema for baselines
106
+ */
107
+ private initializeSchema;
108
+ /**
109
+ * Collect baseline for a specific agent and task type
110
+ *
111
+ * Runs the standard task suite multiple times and calculates average metrics.
112
+ *
113
+ * @param agentId - Agent identifier
114
+ * @param agentType - QE agent type
115
+ * @param taskType - Task type to baseline
116
+ * @returns Collected baseline
117
+ */
118
+ collectBaseline(agentId: string, agentType: QEAgentType, taskType: string): Promise<LearningBaseline>;
119
+ /**
120
+ * Collect baselines for all 19 QE agent types
121
+ *
122
+ * Runs comprehensive baseline collection across all agents.
123
+ * This is typically run once during Phase 0 setup.
124
+ *
125
+ * @returns Array of collected baselines
126
+ */
127
+ collectAllBaselines(): Promise<LearningBaseline[]>;
128
+ /**
129
+ * Execute a standard task and measure performance
130
+ */
131
+ private executeStandardTask;
132
+ /**
133
+ * Calculate aggregate metrics from task results
134
+ */
135
+ private calculateMetrics;
136
+ /**
137
+ * Store baseline in database
138
+ */
139
+ private storeBaseline;
140
+ /**
141
+ * Get baseline for specific agent type and task type
142
+ */
143
+ getBaseline(agentType: QEAgentType, taskType: string): LearningBaseline | null;
144
+ /**
145
+ * Get all baselines for an agent type
146
+ */
147
+ getBaselinesForAgent(agentType: QEAgentType): LearningBaseline[];
148
+ /**
149
+ * Get baseline statistics for an agent type
150
+ */
151
+ getBaselineStats(agentType: QEAgentType): BaselineStats | null;
152
+ /**
153
+ * Get improvement target from baseline
154
+ *
155
+ * Calculates 10-20% improvement targets above baseline metrics.
156
+ */
157
+ getImprovementTarget(baseline: LearningBaseline): ImprovementTarget;
158
+ /**
159
+ * Check if current performance meets improvement target
160
+ */
161
+ meetsImprovementTarget(baseline: LearningBaseline, currentMetrics: LearningBaseline['metrics']): {
162
+ meetsTarget: boolean;
163
+ improvements: Record<string, {
164
+ met: boolean;
165
+ improvement: number;
166
+ }>;
167
+ };
168
+ /**
169
+ * Convert database row to LearningBaseline
170
+ */
171
+ private rowToBaseline;
172
+ /**
173
+ * Close database connection
174
+ */
175
+ close(): void;
176
+ }
177
+ export default BaselineCollector;
178
+ //# sourceMappingURL=BaselineCollector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaselineCollector.d.ts","sourceRoot":"","sources":["../../../src/learning/baselines/BaselineCollector.ts"],"names":[],"mappings":"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"}