agentic-qe 2.5.8 → 2.5.9

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.
@@ -1,16 +1,14 @@
1
1
  /**
2
2
  * CoverageAnalyzerAgent - O(log n) coverage optimization and gap analysis
3
3
  * Phase 2 (v1.1.0) - Enhanced with Learning Capabilities
4
+ * Phase 0.5 (v2.5.9) - Migrated to BaseAgent for RuVector integration
4
5
  *
5
6
  * Implements sublinear algorithms from SPARC Phase 2 Section 3 with continuous
6
7
  * improvement through reinforcement learning and performance tracking.
7
8
  */
8
- import { EventEmitter } from 'events';
9
- import { AgentId, AgentStatus, TaskSpec, TestSuite, CoverageReport, MemoryStore } from '../types';
10
- export interface CoverageAnalyzerConfig {
11
- id: AgentId;
12
- memoryStore?: MemoryStore;
13
- enableLearning?: boolean;
9
+ import { TestSuite, CoverageReport, QETask } from '../types';
10
+ import { BaseAgent, BaseAgentConfig } from './BaseAgent';
11
+ export interface CoverageAnalyzerConfig extends BaseAgentConfig {
14
12
  enablePatterns?: boolean;
15
13
  targetImprovement?: number;
16
14
  improvementPeriodDays?: number;
@@ -68,35 +66,34 @@ export interface CoverageOptimizationResult {
68
66
  patternsApplied: number;
69
67
  };
70
68
  }
71
- export declare class CoverageAnalyzerAgent extends EventEmitter {
72
- private id;
73
- private status;
74
- private memoryStore?;
75
- private logger;
69
+ export declare class CoverageAnalyzerAgent extends BaseAgent {
76
70
  private sublinearCore;
77
71
  private coverageEngine;
78
72
  private gapDetector;
79
- private learningEngine?;
80
- private performanceTracker?;
81
73
  private improvementLoop?;
82
74
  private reasoningBank?;
83
75
  private experienceCapture?;
84
76
  private cachedPatterns;
85
77
  private agentDB?;
86
- private config;
78
+ private coverageConfig;
79
+ private coverageLogger;
87
80
  constructor(config: CoverageAnalyzerConfig);
88
- constructor(id: AgentId, memoryStore?: MemoryStore);
89
- private initializeLearning;
90
- initialize(): Promise<void>;
91
- executeTask(task: TaskSpec): Promise<CoverageOptimizationResult>;
92
- terminate(): Promise<void>;
93
- getStatus(): {
94
- agentId: AgentId;
95
- status: AgentStatus;
96
- capabilities: string[];
81
+ protected initializeComponents(): Promise<void>;
82
+ protected performTask(task: QETask): Promise<any>;
83
+ protected loadKnowledge(): Promise<void>;
84
+ protected cleanup(): Promise<void>;
85
+ /**
86
+ * Get coverage-specific status including optimization metrics
87
+ */
88
+ getCoverageStatus(): {
97
89
  performance: any;
98
90
  learning?: any;
91
+ ruvector: {
92
+ enabled: boolean;
93
+ cacheHitRate: number;
94
+ };
99
95
  };
96
+ private getAgentIdStr;
100
97
  /**
101
98
  * Optimize coverage using sublinear algorithms with learning enhancement
102
99
  * Based on SPARC Phase 2 Algorithm: OptimizeCoverageSublinear
@@ -1 +1 @@
1
- {"version":3,"file":"CoverageAnalyzerAgent.d.ts","sourceRoot":"","sources":["../../src/agents/CoverageAnalyzerAgent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CoverageAnalyzerAgent.d.ts","sourceRoot":"","sources":["../../src/agents/CoverageAnalyzerAgent.ts"],"names":[],"mappings":"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"}
@@ -2,156 +2,101 @@
2
2
  /**
3
3
  * CoverageAnalyzerAgent - O(log n) coverage optimization and gap analysis
4
4
  * Phase 2 (v1.1.0) - Enhanced with Learning Capabilities
5
+ * Phase 0.5 (v2.5.9) - Migrated to BaseAgent for RuVector integration
5
6
  *
6
7
  * Implements sublinear algorithms from SPARC Phase 2 Section 3 with continuous
7
8
  * improvement through reinforcement learning and performance tracking.
8
9
  */
9
10
  Object.defineProperty(exports, "__esModule", { value: true });
10
11
  exports.CoverageAnalyzerAgent = void 0;
11
- const events_1 = require("events");
12
12
  const SecureRandom_js_1 = require("../utils/SecureRandom.js");
13
- const types_1 = require("../types");
14
- const LearningEngine_1 = require("../learning/LearningEngine");
15
- const PerformanceTracker_1 = require("../learning/PerformanceTracker");
13
+ const BaseAgent_1 = require("./BaseAgent");
16
14
  const ImprovementLoop_1 = require("../learning/ImprovementLoop");
17
15
  const QEReasoningBank_1 = require("../reasoning/QEReasoningBank");
18
16
  const Logger_1 = require("../utils/Logger");
19
17
  const ExperienceCapture_1 = require("../learning/capture/ExperienceCapture");
20
18
  // ============================================================================
21
- // Main Agent Class
19
+ // Main Agent Class - Now extends BaseAgent for RuVector integration
22
20
  // ============================================================================
23
- class CoverageAnalyzerAgent extends events_1.EventEmitter {
24
- constructor(configOrId, memoryStore) {
25
- super();
26
- this.status = types_1.AgentStatus.INITIALIZING;
21
+ class CoverageAnalyzerAgent extends BaseAgent_1.BaseAgent {
22
+ constructor(config) {
23
+ super(config);
27
24
  // Cached patterns for confidence boosting
28
25
  this.cachedPatterns = [];
29
- // Handle both constructor signatures
30
- if (typeof configOrId === 'object' && 'id' in configOrId && !('id' in configOrId && typeof configOrId.id === 'string')) {
31
- // It's a CoverageAnalyzerConfig
32
- this.config = configOrId;
33
- this.id = this.config.id;
34
- this.memoryStore = this.config.memoryStore;
35
- }
36
- else {
37
- // It's an AgentId (backward compatibility)
38
- this.id = configOrId;
39
- this.memoryStore = memoryStore;
40
- this.config = {
41
- id: configOrId,
42
- memoryStore,
43
- enableLearning: true,
44
- enablePatterns: true,
45
- targetImprovement: 0.20,
46
- improvementPeriodDays: 30
47
- };
48
- }
49
- this.logger = Logger_1.Logger.getInstance();
26
+ this.coverageLogger = Logger_1.Logger.getInstance();
27
+ this.coverageConfig = {
28
+ enablePatterns: config.enablePatterns !== false,
29
+ targetImprovement: config.targetImprovement || 0.20,
30
+ improvementPeriodDays: config.improvementPeriodDays || 30,
31
+ };
50
32
  // Initialize core engines
51
33
  this.sublinearCore = new SublinearOptimizer();
52
34
  this.coverageEngine = new CoverageEngine();
53
35
  this.gapDetector = new GapDetector();
54
- // Initialize learning components if enabled
55
- this.initializeLearning();
56
- }
57
- // ============================================================================
58
- // Learning Initialization
59
- // ============================================================================
60
- initializeLearning() {
61
- if (this.config.enableLearning !== false && this.memoryStore) {
62
- const agentIdStr = typeof this.id === 'string' ? this.id : this.id.id;
63
- const memoryManager = this.memoryStore;
64
- this.learningEngine = new LearningEngine_1.LearningEngine(agentIdStr, memoryManager);
65
- this.performanceTracker = new PerformanceTracker_1.PerformanceTracker(agentIdStr, memoryManager);
66
- this.improvementLoop = new ImprovementLoop_1.ImprovementLoop(agentIdStr, memoryManager, this.learningEngine, this.performanceTracker);
67
- }
68
- if (this.config.enablePatterns !== false) {
36
+ // Initialize reasoning bank if patterns enabled
37
+ if (this.coverageConfig.enablePatterns) {
69
38
  this.reasoningBank = new QEReasoningBank_1.QEReasoningBank();
70
39
  }
71
40
  }
72
41
  // ============================================================================
73
- // Agent Lifecycle
42
+ // BaseAgent Abstract Method Implementations
74
43
  // ============================================================================
75
- async initialize() {
76
- try {
77
- this.status = types_1.AgentStatus.INITIALIZING;
78
- // Initialize optimization engines
79
- await this.sublinearCore.initialize();
80
- await this.coverageEngine.initialize();
81
- await this.gapDetector.initialize();
82
- // Initialize learning components
83
- if (this.learningEngine) {
84
- await this.learningEngine.initialize();
85
- }
86
- if (this.performanceTracker) {
87
- await this.performanceTracker.initialize();
88
- }
89
- if (this.improvementLoop) {
90
- await this.improvementLoop.initialize();
91
- }
92
- // Load historical coverage patterns
93
- await this.loadCoveragePatterns();
94
- // Load learned gap detection patterns
95
- await this.loadGapPatterns();
96
- // Initialize ExperienceCapture for Nightly-Learner integration
97
- this.experienceCapture = await ExperienceCapture_1.ExperienceCapture.getSharedInstance();
98
- this.logger?.info('[CoverageAnalyzer] ExperienceCapture initialized for Nightly-Learner');
99
- // Load and cache patterns for confidence boosting at task start
100
- await this.loadAndCachePatternsForConfidence();
101
- // Store initialization state
102
- if (this.memoryStore) {
103
- await this.memoryStore.set('coverage-analyzer-initialized', true, 'agents');
104
- }
105
- this.status = types_1.AgentStatus.IDLE;
106
- this.emit('agent.initialized', { agentId: this.id });
107
- this.logger?.info(`CoverageAnalyzerAgent initialized with learning: ${!!this.learningEngine}, patterns cached: ${this.cachedPatterns.length}`);
108
- }
109
- catch (error) {
110
- this.status = types_1.AgentStatus.ERROR;
111
- this.emit('agent.error', { agentId: this.id, error });
112
- throw error;
113
- }
114
- }
115
- async executeTask(task) {
44
+ async initializeComponents() {
45
+ // Initialize optimization engines
46
+ await this.sublinearCore.initialize();
47
+ await this.coverageEngine.initialize();
48
+ await this.gapDetector.initialize();
49
+ // Initialize improvement loop if learning is enabled
50
+ if (this.learningEngine && this.performanceTracker) {
51
+ this.improvementLoop = new ImprovementLoop_1.ImprovementLoop(this.getAgentIdStr(), this.memoryStore, this.learningEngine, this.performanceTracker);
52
+ await this.improvementLoop.initialize();
53
+ }
54
+ // Initialize ExperienceCapture for Nightly-Learner integration
55
+ this.experienceCapture = await ExperienceCapture_1.ExperienceCapture.getSharedInstance();
56
+ this.coverageLogger?.info('[CoverageAnalyzer] ExperienceCapture initialized for Nightly-Learner');
57
+ // Load historical patterns
58
+ await this.loadCoveragePatterns();
59
+ await this.loadGapPatterns();
60
+ await this.loadAndCachePatternsForConfidence();
61
+ }
62
+ async performTask(task) {
116
63
  const request = task.payload;
117
64
  return await this.optimizeCoverageSublinear(request);
118
65
  }
119
- async terminate() {
120
- try {
121
- this.status = types_1.AgentStatus.STOPPING;
122
- // Save learned patterns
123
- await this.saveCoveragePatterns();
124
- await this.saveGapPatterns();
125
- // Stop improvement loop if running
126
- if (this.improvementLoop?.isActive()) {
127
- await this.improvementLoop.stop();
128
- }
129
- // Cleanup resources
130
- await this.sublinearCore.cleanup();
131
- await this.coverageEngine.cleanup();
132
- await this.gapDetector.cleanup();
133
- this.status = types_1.AgentStatus.STOPPED;
134
- this.emit('agent.terminated', { agentId: this.id });
135
- }
136
- catch (error) {
137
- this.status = types_1.AgentStatus.ERROR;
138
- throw error;
139
- }
66
+ async loadKnowledge() {
67
+ // Load coverage-specific knowledge
68
+ await this.loadCoveragePatterns();
69
+ await this.loadGapPatterns();
140
70
  }
141
- getStatus() {
71
+ async cleanup() {
72
+ // Save learned patterns
73
+ await this.saveCoveragePatterns();
74
+ await this.saveGapPatterns();
75
+ // Stop improvement loop if running
76
+ if (this.improvementLoop?.isActive()) {
77
+ await this.improvementLoop.stop();
78
+ }
79
+ // Cleanup engines
80
+ await this.sublinearCore.cleanup();
81
+ await this.coverageEngine.cleanup();
82
+ await this.gapDetector.cleanup();
83
+ }
84
+ // ============================================================================
85
+ // Public Methods - Coverage-specific
86
+ // ============================================================================
87
+ /**
88
+ * Get coverage-specific status including optimization metrics
89
+ */
90
+ getCoverageStatus() {
142
91
  const status = {
143
- agentId: this.id,
144
- status: this.status,
145
- capabilities: [
146
- 'coverage-optimization',
147
- 'gap-detection',
148
- 'sublinear-analysis',
149
- 'learning-enabled'
150
- ],
151
92
  performance: {
152
93
  optimizationsCompleted: this.sublinearCore.getOptimizationCount(),
153
94
  averageOptimizationTime: this.sublinearCore.getAverageTime(),
154
95
  lastOptimizationRatio: this.sublinearCore.getLastOptimizationRatio()
96
+ },
97
+ ruvector: {
98
+ enabled: this.hasRuVectorCache(),
99
+ cacheHitRate: this.getCacheHitRate()
155
100
  }
156
101
  };
157
102
  if (this.learningEngine && this.performanceTracker) {
@@ -165,6 +110,14 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
165
110
  }
166
111
  return status;
167
112
  }
113
+ // Helper to get agent ID string
114
+ getAgentIdStr() {
115
+ const agentId = super.getAgentId();
116
+ return typeof agentId === 'string' ? agentId : agentId.id;
117
+ }
118
+ // ============================================================================
119
+ // Agent Lifecycle (handled by BaseAgent)
120
+ // ============================================================================
168
121
  // ============================================================================
169
122
  // Core Coverage Optimization - SPARC Algorithm 3.1 + Learning
170
123
  // ============================================================================
@@ -175,7 +128,6 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
175
128
  async optimizeCoverageSublinear(request) {
176
129
  const startTime = Date.now();
177
130
  try {
178
- this.status = types_1.AgentStatus.ACTIVE;
179
131
  // Get learned strategy recommendation if available
180
132
  let strategy = 'johnson-lindenstrauss-sublinear';
181
133
  if (this.learningEngine) {
@@ -189,7 +141,7 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
189
141
  });
190
142
  if (recommendation.confidence > 0.7) {
191
143
  strategy = recommendation.strategy;
192
- this.logger?.info(`Using learned strategy: ${strategy} (confidence: ${recommendation.confidence})`);
144
+ this.coverageLogger?.info(`Using learned strategy: ${strategy} (confidence: ${recommendation.confidence})`);
193
145
  }
194
146
  }
195
147
  // Phase 1: Build Coverage Matrix
@@ -243,11 +195,9 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
243
195
  };
244
196
  // Track performance and learn from execution
245
197
  await this.trackAndLearn(request, result, executionTime);
246
- this.status = types_1.AgentStatus.IDLE;
247
198
  return result;
248
199
  }
249
200
  catch (error) {
250
- this.status = types_1.AgentStatus.ERROR;
251
201
  // Learn from failure if learning is enabled
252
202
  if (this.learningEngine) {
253
203
  await this.learningEngine.learnFromExecution({ id: 'coverage-optimization', type: 'coverage-analysis' }, { success: false, error: error.message });
@@ -308,24 +258,24 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
308
258
  if (result.memories.length > 0) {
309
259
  // Calculate likelihood from historical gap patterns
310
260
  const avgLikelihood = result.memories.reduce((sum, m) => sum + m.confidence, 0) / result.memories.length;
311
- this.logger?.debug(`[CoverageAnalyzer] ✅ AgentDB HNSW search: ${(avgLikelihood * 100).toFixed(1)}% likelihood ` +
261
+ this.coverageLogger?.debug(`[CoverageAnalyzer] ✅ AgentDB HNSW search: ${(avgLikelihood * 100).toFixed(1)}% likelihood ` +
312
262
  `(${searchTime}ms, ${result.memories.length} patterns, ` +
313
263
  `${result.metadata.cacheHit ? 'cache hit' : 'cache miss'})`);
314
264
  // Log top match details
315
265
  if (result.memories.length > 0) {
316
266
  const topMatch = result.memories[0];
317
267
  const gapData = JSON.parse(topMatch.pattern_data);
318
- this.logger?.debug(`[CoverageAnalyzer] 🎯 Top gap match: ${gapData.location} ` +
268
+ this.coverageLogger?.debug(`[CoverageAnalyzer] 🎯 Top gap match: ${gapData.location} ` +
319
269
  `(similarity=${topMatch.similarity.toFixed(3)}, confidence=${topMatch.confidence.toFixed(3)})`);
320
270
  }
321
271
  return avgLikelihood;
322
272
  }
323
273
  else {
324
- this.logger?.debug(`[CoverageAnalyzer] No gap patterns found in AgentDB (${searchTime}ms)`);
274
+ this.coverageLogger?.debug(`[CoverageAnalyzer] No gap patterns found in AgentDB (${searchTime}ms)`);
325
275
  }
326
276
  }
327
277
  catch (error) {
328
- this.logger?.warn('[CoverageAnalyzer] AgentDB gap prediction failed, using fallback:', error);
278
+ this.coverageLogger?.warn('[CoverageAnalyzer] AgentDB gap prediction failed, using fallback:', error);
329
279
  }
330
280
  }
331
281
  // Fallback to learning engine
@@ -373,15 +323,15 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
373
323
  // Check improvement status
374
324
  const improvement = await this.performanceTracker.calculateImprovement();
375
325
  if (improvement.targetAchieved) {
376
- this.logger?.info(`🎯 20% improvement target achieved! Current: ${improvement.improvementRate.toFixed(2)}%`);
326
+ this.coverageLogger?.info(`🎯 20% improvement target achieved! Current: ${improvement.improvementRate.toFixed(2)}%`);
377
327
  }
378
328
  else {
379
- this.logger?.debug(`Progress: ${improvement.improvementRate.toFixed(2)}% / 20% target`);
329
+ this.coverageLogger?.debug(`Progress: ${improvement.improvementRate.toFixed(2)}% / 20% target`);
380
330
  }
381
331
  // Add learning metrics to result
382
332
  result.learningMetrics = {
383
333
  improvementRate: improvement.improvementRate,
384
- confidence: (improvement.daysElapsed / (this.config.improvementPeriodDays || 30)),
334
+ confidence: (improvement.daysElapsed / (this.coverageConfig.improvementPeriodDays || 30)),
385
335
  patternsApplied: this.learningEngine ? (await this.learningEngine.getPatterns()).length : 0
386
336
  };
387
337
  }
@@ -409,7 +359,7 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
409
359
  // Run improvement cycle if needed
410
360
  if (this.improvementLoop && !this.improvementLoop.isActive()) {
411
361
  // Run in background
412
- this.improvementLoop.runImprovementCycle().catch(error => this.logger?.warn('Improvement cycle failed', error));
362
+ this.improvementLoop.runImprovementCycle().catch(error => this.coverageLogger?.warn('Improvement cycle failed', error));
413
363
  }
414
364
  // Store optimization results for future learning
415
365
  await this.storeOptimizationResults(request, result.optimization, executionTime);
@@ -445,19 +395,19 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
445
395
  last_used: Date.now()
446
396
  });
447
397
  storedCount++;
448
- this.logger?.debug(`[CoverageAnalyzer] ✅ Stored gap pattern ${gapId} in AgentDB`);
398
+ this.coverageLogger?.debug(`[CoverageAnalyzer] ✅ Stored gap pattern ${gapId} in AgentDB`);
449
399
  }
450
400
  const storeTime = Date.now() - startTime;
451
- this.logger?.info(`[CoverageAnalyzer] ✅ ACTUALLY stored ${storedCount} gap patterns in AgentDB ` +
401
+ this.coverageLogger?.info(`[CoverageAnalyzer] ✅ ACTUALLY stored ${storedCount} gap patterns in AgentDB ` +
452
402
  `(${storeTime}ms, avg ${(storeTime / storedCount).toFixed(1)}ms/pattern, QUIC sync active)`);
453
403
  // Report QUIC sync status
454
404
  const agentDBConfig = this.agentDBConfig;
455
405
  if (agentDBConfig?.enableQUICSync) {
456
- this.logger?.info(`[CoverageAnalyzer] 🚀 Gap patterns synced via QUIC to ${agentDBConfig.syncPeers?.length || 0} peers (<1ms latency)`);
406
+ this.coverageLogger?.info(`[CoverageAnalyzer] 🚀 Gap patterns synced via QUIC to ${agentDBConfig.syncPeers?.length || 0} peers (<1ms latency)`);
457
407
  }
458
408
  }
459
409
  catch (error) {
460
- this.logger?.warn('[CoverageAnalyzer] AgentDB gap storage failed:', error);
410
+ this.coverageLogger?.warn('[CoverageAnalyzer] AgentDB gap storage failed:', error);
461
411
  }
462
412
  }
463
413
  // Also store in ReasoningBank for compatibility
@@ -494,10 +444,10 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
494
444
  return;
495
445
  try {
496
446
  const gapPatterns = await this.reasoningBank.searchByTags(['coverage-gap']);
497
- this.logger?.info(`Loaded ${gapPatterns.length} gap patterns from ReasoningBank`);
447
+ this.coverageLogger?.info(`Loaded ${gapPatterns.length} gap patterns from ReasoningBank`);
498
448
  }
499
449
  catch (error) {
500
- this.logger?.warn('No gap patterns found in ReasoningBank');
450
+ this.coverageLogger?.warn('No gap patterns found in ReasoningBank');
501
451
  }
502
452
  }
503
453
  /**
@@ -507,7 +457,7 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
507
457
  if (!this.reasoningBank)
508
458
  return;
509
459
  const stats = await this.reasoningBank.getStatistics();
510
- this.logger?.info(`Saved ${stats.totalPatterns} patterns to ReasoningBank`);
460
+ this.coverageLogger?.info(`Saved ${stats.totalPatterns} patterns to ReasoningBank`);
511
461
  }
512
462
  /**
513
463
  * AgentDB Helper: Create gap query embedding for vector search
@@ -824,7 +774,7 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
824
774
  confidence: p.confidence,
825
775
  successRate: p.successRate
826
776
  }));
827
- this.logger?.info(`[CoverageAnalyzer] Cached ${this.cachedPatterns.length} patterns from LearningEngine`);
777
+ this.coverageLogger?.info(`[CoverageAnalyzer] Cached ${this.cachedPatterns.length} patterns from LearningEngine`);
828
778
  }
829
779
  // Also load from memoryStore if available
830
780
  if (this.memoryStore) {
@@ -833,7 +783,7 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
833
783
  const dbPatterns = await smm.queryPatternsByConfidence(0.5); // High confidence only
834
784
  const coveragePatterns = dbPatterns.filter((p) => p.pattern?.includes('coverage') || p.metadata?.agent_type === 'coverage-analyzer');
835
785
  if (coveragePatterns.length > 0) {
836
- this.logger?.info(`[CoverageAnalyzer] Found ${coveragePatterns.length} historical coverage patterns in DB`);
786
+ this.coverageLogger?.info(`[CoverageAnalyzer] Found ${coveragePatterns.length} historical coverage patterns in DB`);
837
787
  // Merge with existing patterns
838
788
  for (const p of coveragePatterns) {
839
789
  if (!this.cachedPatterns.find(cp => cp.pattern === p.pattern)) {
@@ -847,10 +797,10 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
847
797
  }
848
798
  }
849
799
  }
850
- this.logger?.info(`[CoverageAnalyzer] Total cached patterns for confidence boost: ${this.cachedPatterns.length}`);
800
+ this.coverageLogger?.info(`[CoverageAnalyzer] Total cached patterns for confidence boost: ${this.cachedPatterns.length}`);
851
801
  }
852
802
  catch (error) {
853
- this.logger?.warn('[CoverageAnalyzer] Failed to load patterns for confidence', error);
803
+ this.coverageLogger?.warn('[CoverageAnalyzer] Failed to load patterns for confidence', error);
854
804
  }
855
805
  }
856
806
  /**
@@ -870,7 +820,7 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
870
820
  const totalWeight = relevantPatterns.reduce((sum, p) => sum + p.successRate, 0);
871
821
  const weightedConfidence = relevantPatterns.reduce((sum, p) => sum + p.confidence * p.successRate, 0);
872
822
  const boost = totalWeight > 0 ? (weightedConfidence / totalWeight) * 0.3 : 0; // Max 30% boost
873
- this.logger?.debug(`[CoverageAnalyzer] Confidence boost from ${relevantPatterns.length} patterns: ${(boost * 100).toFixed(1)}%`);
823
+ this.coverageLogger?.debug(`[CoverageAnalyzer] Confidence boost from ${relevantPatterns.length} patterns: ${(boost * 100).toFixed(1)}%`);
874
824
  return boost;
875
825
  }
876
826
  /**
@@ -882,8 +832,8 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
882
832
  return; // ExperienceCapture not initialized
883
833
  }
884
834
  try {
885
- const agentIdStr = typeof this.id === 'string' ? this.id : this.id.id;
886
- const agentType = typeof this.id === 'object' && 'type' in this.id ? this.id.type : 'coverage-analyzer';
835
+ const agentIdStr = this.getAgentIdStr();
836
+ const agentType = 'coverage-analyzer';
887
837
  const event = {
888
838
  agentId: agentIdStr,
889
839
  agentType: agentType,
@@ -917,12 +867,12 @@ class CoverageAnalyzerAgent extends events_1.EventEmitter {
917
867
  timestamp: new Date()
918
868
  };
919
869
  await this.experienceCapture.captureExecution(event);
920
- this.logger?.debug(`[CoverageAnalyzer] Captured experience for Nightly-Learner: ${success ? 'success' : 'failure'}`);
870
+ this.coverageLogger?.debug(`[CoverageAnalyzer] Captured experience for Nightly-Learner: ${success ? 'success' : 'failure'}`);
921
871
  this.emit('experience:captured', { agentId: agentIdStr, success, duration });
922
872
  }
923
873
  catch (captureError) {
924
874
  // Don't fail the main operation if capture fails
925
- this.logger?.warn('[CoverageAnalyzer] Failed to capture experience:', captureError);
875
+ this.coverageLogger?.warn('[CoverageAnalyzer] Failed to capture experience:', captureError);
926
876
  }
927
877
  }
928
878
  /**