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.
- package/CHANGELOG.md +122 -0
- package/README.md +1 -1
- package/dist/agents/ApiContractValidatorAgent.d.ts +5 -0
- package/dist/agents/ApiContractValidatorAgent.d.ts.map +1 -1
- package/dist/agents/ApiContractValidatorAgent.js +41 -0
- package/dist/agents/ApiContractValidatorAgent.js.map +1 -1
- package/dist/agents/BaseAgent.d.ts +10 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +113 -0
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +5 -0
- package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CodeComplexityAnalyzerAgent.js +47 -0
- package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.d.ts +26 -0
- package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/CoverageAnalyzerAgent.js +149 -1
- package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.d.ts +5 -0
- package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
- package/dist/agents/DeploymentReadinessAgent.js +41 -0
- package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.d.ts +5 -0
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +40 -0
- package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
- package/dist/agents/FleetCommanderAgent.d.ts +5 -0
- package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
- package/dist/agents/FleetCommanderAgent.js +51 -0
- package/dist/agents/FleetCommanderAgent.js.map +1 -1
- package/dist/agents/PerformanceTesterAgent.d.ts +5 -0
- package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
- package/dist/agents/PerformanceTesterAgent.js +44 -0
- package/dist/agents/PerformanceTesterAgent.js.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.d.ts +5 -0
- package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
- package/dist/agents/ProductionIntelligenceAgent.js +46 -0
- package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
- package/dist/agents/QXPartnerAgent.js +52 -0
- package/dist/agents/QXPartnerAgent.js.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.d.ts +5 -0
- package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/QualityAnalyzerAgent.js +45 -0
- package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
- package/dist/agents/QualityGateAgent.d.ts +40 -0
- package/dist/agents/QualityGateAgent.d.ts.map +1 -1
- package/dist/agents/QualityGateAgent.js +227 -1
- package/dist/agents/QualityGateAgent.js.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.d.ts +5 -0
- package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
- package/dist/agents/RegressionRiskAnalyzerAgent.js +46 -0
- package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.d.ts +5 -0
- package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
- package/dist/agents/RequirementsValidatorAgent.js +42 -0
- package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
- package/dist/agents/SecurityScannerAgent.d.ts +5 -0
- package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
- package/dist/agents/SecurityScannerAgent.js +39 -0
- package/dist/agents/SecurityScannerAgent.js.map +1 -1
- package/dist/agents/TestDataArchitectAgent.d.ts +5 -0
- package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
- package/dist/agents/TestDataArchitectAgent.js +46 -0
- package/dist/agents/TestDataArchitectAgent.js.map +1 -1
- package/dist/agents/TestExecutorAgent.d.ts +5 -0
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +48 -0
- package/dist/agents/TestExecutorAgent.js.map +1 -1
- package/dist/agents/TestGeneratorAgent.d.ts +5 -0
- package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
- package/dist/agents/TestGeneratorAgent.js +36 -0
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +5 -2
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/cli/commands/dream/index.d.ts +50 -0
- package/dist/cli/commands/dream/index.d.ts.map +1 -0
- package/dist/cli/commands/dream/index.js +282 -0
- package/dist/cli/commands/dream/index.js.map +1 -0
- package/dist/cli/commands/learn/index.d.ts +31 -5
- package/dist/cli/commands/learn/index.d.ts.map +1 -1
- package/dist/cli/commands/learn/index.js +183 -50
- package/dist/cli/commands/learn/index.js.map +1 -1
- package/dist/cli/commands/transfer/index.d.ts +55 -0
- package/dist/cli/commands/transfer/index.d.ts.map +1 -0
- package/dist/cli/commands/transfer/index.js +317 -0
- package/dist/cli/commands/transfer/index.js.map +1 -0
- package/dist/cli/index.js +224 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init/index.d.ts.map +1 -1
- package/dist/cli/init/index.js +12 -4
- package/dist/cli/init/index.js.map +1 -1
- package/dist/cli/init/learning-init.d.ts +39 -0
- package/dist/cli/init/learning-init.d.ts.map +1 -0
- package/dist/cli/init/learning-init.js +239 -0
- package/dist/cli/init/learning-init.js.map +1 -0
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/learning/baselines/BaselineCollector.d.ts +178 -0
- package/dist/learning/baselines/BaselineCollector.d.ts.map +1 -0
- package/dist/learning/baselines/BaselineCollector.js +398 -0
- package/dist/learning/baselines/BaselineCollector.js.map +1 -0
- package/dist/learning/baselines/StandardTaskSuite.d.ts +88 -0
- package/dist/learning/baselines/StandardTaskSuite.d.ts.map +1 -0
- package/dist/learning/baselines/StandardTaskSuite.js +801 -0
- package/dist/learning/baselines/StandardTaskSuite.js.map +1 -0
- package/dist/learning/baselines/index.d.ts +10 -0
- package/dist/learning/baselines/index.d.ts.map +1 -0
- package/dist/learning/baselines/index.js +15 -0
- package/dist/learning/baselines/index.js.map +1 -0
- package/dist/learning/capture/ExecutionRecorder.d.ts +97 -0
- package/dist/learning/capture/ExecutionRecorder.d.ts.map +1 -0
- package/dist/learning/capture/ExecutionRecorder.js +195 -0
- package/dist/learning/capture/ExecutionRecorder.js.map +1 -0
- package/dist/learning/capture/ExperienceCapture.d.ts +177 -0
- package/dist/learning/capture/ExperienceCapture.d.ts.map +1 -0
- package/dist/learning/capture/ExperienceCapture.js +432 -0
- package/dist/learning/capture/ExperienceCapture.js.map +1 -0
- package/dist/learning/capture/ExperienceExtractor.d.ts +219 -0
- package/dist/learning/capture/ExperienceExtractor.d.ts.map +1 -0
- package/dist/learning/capture/ExperienceExtractor.js +536 -0
- package/dist/learning/capture/ExperienceExtractor.js.map +1 -0
- package/dist/learning/capture/ExperienceStore.d.ts +196 -0
- package/dist/learning/capture/ExperienceStore.d.ts.map +1 -0
- package/dist/learning/capture/ExperienceStore.js +453 -0
- package/dist/learning/capture/ExperienceStore.js.map +1 -0
- package/dist/learning/capture/index.d.ts +12 -0
- package/dist/learning/capture/index.d.ts.map +1 -0
- package/dist/learning/capture/index.js +17 -0
- package/dist/learning/capture/index.js.map +1 -0
- package/dist/learning/dashboard/MetricsDashboard.d.ts +63 -0
- package/dist/learning/dashboard/MetricsDashboard.d.ts.map +1 -0
- package/dist/learning/dashboard/MetricsDashboard.js +230 -0
- package/dist/learning/dashboard/MetricsDashboard.js.map +1 -0
- package/dist/learning/dashboard/index.d.ts +7 -0
- package/dist/learning/dashboard/index.d.ts.map +1 -0
- package/dist/learning/dashboard/index.js +23 -0
- package/dist/learning/dashboard/index.js.map +1 -0
- package/dist/learning/dream/ConceptGraph.d.ts +160 -0
- package/dist/learning/dream/ConceptGraph.d.ts.map +1 -0
- package/dist/learning/dream/ConceptGraph.js +445 -0
- package/dist/learning/dream/ConceptGraph.js.map +1 -0
- package/dist/learning/dream/DreamEngine.d.ts +150 -0
- package/dist/learning/dream/DreamEngine.d.ts.map +1 -0
- package/dist/learning/dream/DreamEngine.js +551 -0
- package/dist/learning/dream/DreamEngine.js.map +1 -0
- package/dist/learning/dream/InsightGenerator.d.ts +152 -0
- package/dist/learning/dream/InsightGenerator.d.ts.map +1 -0
- package/dist/learning/dream/InsightGenerator.js +463 -0
- package/dist/learning/dream/InsightGenerator.js.map +1 -0
- package/dist/learning/dream/SpreadingActivation.d.ts +138 -0
- package/dist/learning/dream/SpreadingActivation.d.ts.map +1 -0
- package/dist/learning/dream/SpreadingActivation.js +320 -0
- package/dist/learning/dream/SpreadingActivation.js.map +1 -0
- package/dist/learning/dream/index.d.ts +14 -0
- package/dist/learning/dream/index.d.ts.map +1 -0
- package/dist/learning/dream/index.js +22 -0
- package/dist/learning/dream/index.js.map +1 -0
- package/dist/learning/metrics/AlertManager.d.ts +107 -0
- package/dist/learning/metrics/AlertManager.d.ts.map +1 -0
- package/dist/learning/metrics/AlertManager.js +246 -0
- package/dist/learning/metrics/AlertManager.js.map +1 -0
- package/dist/learning/metrics/LearningMetrics.d.ts +184 -0
- package/dist/learning/metrics/LearningMetrics.d.ts.map +1 -0
- package/dist/learning/metrics/LearningMetrics.js +754 -0
- package/dist/learning/metrics/LearningMetrics.js.map +1 -0
- package/dist/learning/metrics/MetricsCollector.d.ts +108 -0
- package/dist/learning/metrics/MetricsCollector.d.ts.map +1 -0
- package/dist/learning/metrics/MetricsCollector.js +240 -0
- package/dist/learning/metrics/MetricsCollector.js.map +1 -0
- package/dist/learning/metrics/MetricsStore.d.ts +149 -0
- package/dist/learning/metrics/MetricsStore.d.ts.map +1 -0
- package/dist/learning/metrics/MetricsStore.js +502 -0
- package/dist/learning/metrics/MetricsStore.js.map +1 -0
- package/dist/learning/metrics/TrendAnalyzer.d.ts +85 -0
- package/dist/learning/metrics/TrendAnalyzer.d.ts.map +1 -0
- package/dist/learning/metrics/TrendAnalyzer.js +210 -0
- package/dist/learning/metrics/TrendAnalyzer.js.map +1 -0
- package/dist/learning/metrics/index.d.ts +13 -0
- package/dist/learning/metrics/index.d.ts.map +1 -0
- package/dist/learning/metrics/index.js +39 -0
- package/dist/learning/metrics/index.js.map +1 -0
- package/dist/learning/scheduler/IdleDetector.d.ts +126 -0
- package/dist/learning/scheduler/IdleDetector.d.ts.map +1 -0
- package/dist/learning/scheduler/IdleDetector.js +281 -0
- package/dist/learning/scheduler/IdleDetector.js.map +1 -0
- package/dist/learning/scheduler/SleepCycle.d.ts +150 -0
- package/dist/learning/scheduler/SleepCycle.d.ts.map +1 -0
- package/dist/learning/scheduler/SleepCycle.js +506 -0
- package/dist/learning/scheduler/SleepCycle.js.map +1 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts +133 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts.map +1 -0
- package/dist/learning/scheduler/SleepScheduler.js +301 -0
- package/dist/learning/scheduler/SleepScheduler.js.map +1 -0
- package/dist/learning/scheduler/TimeBasedTrigger.d.ts +108 -0
- package/dist/learning/scheduler/TimeBasedTrigger.d.ts.map +1 -0
- package/dist/learning/scheduler/TimeBasedTrigger.js +222 -0
- package/dist/learning/scheduler/TimeBasedTrigger.js.map +1 -0
- package/dist/learning/scheduler/index.d.ts +16 -0
- package/dist/learning/scheduler/index.d.ts.map +1 -0
- package/dist/learning/scheduler/index.js +23 -0
- package/dist/learning/scheduler/index.js.map +1 -0
- package/dist/learning/synthesis/ClusteringEngine.d.ts +122 -0
- package/dist/learning/synthesis/ClusteringEngine.d.ts.map +1 -0
- package/dist/learning/synthesis/ClusteringEngine.js +356 -0
- package/dist/learning/synthesis/ClusteringEngine.js.map +1 -0
- package/dist/learning/synthesis/PatternSynthesis.d.ts +162 -0
- package/dist/learning/synthesis/PatternSynthesis.d.ts.map +1 -0
- package/dist/learning/synthesis/PatternSynthesis.js +479 -0
- package/dist/learning/synthesis/PatternSynthesis.js.map +1 -0
- package/dist/learning/synthesis/index.d.ts +10 -0
- package/dist/learning/synthesis/index.d.ts.map +1 -0
- package/dist/learning/synthesis/index.js +14 -0
- package/dist/learning/synthesis/index.js.map +1 -0
- package/dist/learning/transfer/CompatibilityScorer.d.ts +115 -0
- package/dist/learning/transfer/CompatibilityScorer.d.ts.map +1 -0
- package/dist/learning/transfer/CompatibilityScorer.js +319 -0
- package/dist/learning/transfer/CompatibilityScorer.js.map +1 -0
- package/dist/learning/transfer/TransferProtocol.d.ts +172 -0
- package/dist/learning/transfer/TransferProtocol.d.ts.map +1 -0
- package/dist/learning/transfer/TransferProtocol.js +611 -0
- package/dist/learning/transfer/TransferProtocol.js.map +1 -0
- package/dist/learning/transfer/TransferPrototype.d.ts +93 -0
- package/dist/learning/transfer/TransferPrototype.d.ts.map +1 -0
- package/dist/learning/transfer/TransferPrototype.js +433 -0
- package/dist/learning/transfer/TransferPrototype.js.map +1 -0
- package/dist/learning/transfer/TransferRegistry.d.ts +245 -0
- package/dist/learning/transfer/TransferRegistry.d.ts.map +1 -0
- package/dist/learning/transfer/TransferRegistry.js +410 -0
- package/dist/learning/transfer/TransferRegistry.js.map +1 -0
- package/dist/learning/transfer/TransferValidator.d.ts +140 -0
- package/dist/learning/transfer/TransferValidator.d.ts.map +1 -0
- package/dist/learning/transfer/TransferValidator.js +413 -0
- package/dist/learning/transfer/TransferValidator.js.map +1 -0
- package/dist/learning/transfer/index.d.ts +14 -0
- package/dist/learning/transfer/index.d.ts.map +1 -0
- package/dist/learning/transfer/index.js +22 -0
- package/dist/learning/transfer/index.js.map +1 -0
- package/dist/mcp/handlers/task-orchestrate.d.ts +11 -0
- package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
- package/dist/mcp/handlers/task-orchestrate.js +297 -4
- package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
- package/dist/mcp/handlers/test/test-generate-enhanced.d.ts +26 -2
- package/dist/mcp/handlers/test/test-generate-enhanced.d.ts.map +1 -1
- package/dist/mcp/handlers/test/test-generate-enhanced.js +159 -27
- package/dist/mcp/handlers/test/test-generate-enhanced.js.map +1 -1
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +2 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/services/AgentRegistry.d.ts +6 -1
- package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
- package/dist/mcp/services/AgentRegistry.js +34 -3
- package/dist/mcp/services/AgentRegistry.js.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ExperienceCapture - Captures agent executions for learning
|
|
4
|
+
*
|
|
5
|
+
* Automatically captures agent execution data and stores it for later
|
|
6
|
+
* pattern synthesis during sleep cycles.
|
|
7
|
+
*
|
|
8
|
+
* Part of the Nightly-Learner Phase 1 implementation.
|
|
9
|
+
*
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
* @module src/learning/capture/ExperienceCapture
|
|
12
|
+
*/
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
+
var ownKeys = function(o) {
|
|
31
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
+
var ar = [];
|
|
33
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
+
return ar;
|
|
35
|
+
};
|
|
36
|
+
return ownKeys(o);
|
|
37
|
+
};
|
|
38
|
+
return function (mod) {
|
|
39
|
+
if (mod && mod.__esModule) return mod;
|
|
40
|
+
var result = {};
|
|
41
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
+
__setModuleDefault(result, mod);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
})();
|
|
46
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
47
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
exports.ExperienceCapture = void 0;
|
|
51
|
+
const events_1 = require("events");
|
|
52
|
+
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
53
|
+
const path = __importStar(require("path"));
|
|
54
|
+
const fs = __importStar(require("fs"));
|
|
55
|
+
const Logger_1 = require("../../utils/Logger");
|
|
56
|
+
const SecureRandom_1 = require("../../utils/SecureRandom");
|
|
57
|
+
/**
|
|
58
|
+
* ExperienceCapture captures and stores agent execution experiences
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const capture = new ExperienceCapture({ bufferSize: 50 });
|
|
63
|
+
* await capture.start();
|
|
64
|
+
*
|
|
65
|
+
* // Capture an execution
|
|
66
|
+
* await capture.captureExecution({
|
|
67
|
+
* agentId: 'agent-123',
|
|
68
|
+
* agentType: 'test-generator',
|
|
69
|
+
* taskType: 'unit-test-generation',
|
|
70
|
+
* // ...
|
|
71
|
+
* });
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
class ExperienceCapture extends events_1.EventEmitter {
|
|
75
|
+
/**
|
|
76
|
+
* Get or create the shared ExperienceCapture instance
|
|
77
|
+
* Uses singleton pattern to ensure all agents share the same capture buffer
|
|
78
|
+
*/
|
|
79
|
+
static async getSharedInstance(config) {
|
|
80
|
+
if (ExperienceCapture.instance && ExperienceCapture.instance.isRunning) {
|
|
81
|
+
return ExperienceCapture.instance;
|
|
82
|
+
}
|
|
83
|
+
// Handle concurrent initialization
|
|
84
|
+
if (ExperienceCapture.instancePromise) {
|
|
85
|
+
return ExperienceCapture.instancePromise;
|
|
86
|
+
}
|
|
87
|
+
ExperienceCapture.instancePromise = (async () => {
|
|
88
|
+
if (!ExperienceCapture.instance) {
|
|
89
|
+
ExperienceCapture.instance = new ExperienceCapture(config);
|
|
90
|
+
}
|
|
91
|
+
if (!ExperienceCapture.instance.isRunning) {
|
|
92
|
+
await ExperienceCapture.instance.start();
|
|
93
|
+
}
|
|
94
|
+
return ExperienceCapture.instance;
|
|
95
|
+
})();
|
|
96
|
+
const instance = await ExperienceCapture.instancePromise;
|
|
97
|
+
ExperienceCapture.instancePromise = null;
|
|
98
|
+
return instance;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Reset the shared instance (for testing)
|
|
102
|
+
*/
|
|
103
|
+
static resetInstance() {
|
|
104
|
+
if (ExperienceCapture.instance) {
|
|
105
|
+
ExperienceCapture.instance.stop().catch(() => { });
|
|
106
|
+
ExperienceCapture.instance = null;
|
|
107
|
+
}
|
|
108
|
+
ExperienceCapture.instancePromise = null;
|
|
109
|
+
}
|
|
110
|
+
constructor(config) {
|
|
111
|
+
super();
|
|
112
|
+
this.buffer = [];
|
|
113
|
+
this.flushTimer = null;
|
|
114
|
+
this.isRunning = false;
|
|
115
|
+
// Stats tracking
|
|
116
|
+
this.totalCaptured = 0;
|
|
117
|
+
this.totalFlushed = 0;
|
|
118
|
+
this.lastFlush = null;
|
|
119
|
+
this.byAgentType = {};
|
|
120
|
+
this.byTaskType = {};
|
|
121
|
+
this.successCount = 0;
|
|
122
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
123
|
+
this.config = {
|
|
124
|
+
dbPath: config?.dbPath || path.join(process.cwd(), '.agentic-qe', 'memory.db'),
|
|
125
|
+
bufferSize: config?.bufferSize ?? 100,
|
|
126
|
+
flushInterval: config?.flushInterval ?? 30000,
|
|
127
|
+
debug: config?.debug ?? false,
|
|
128
|
+
};
|
|
129
|
+
// Ensure the directory exists before opening the database
|
|
130
|
+
const dbDir = path.dirname(this.config.dbPath);
|
|
131
|
+
if (!fs.existsSync(dbDir)) {
|
|
132
|
+
fs.mkdirSync(dbDir, { recursive: true });
|
|
133
|
+
}
|
|
134
|
+
this.db = new better_sqlite3_1.default(this.config.dbPath);
|
|
135
|
+
this.initializeSchema();
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Initialize database schema for experience storage
|
|
139
|
+
*/
|
|
140
|
+
initializeSchema() {
|
|
141
|
+
this.db.exec(`
|
|
142
|
+
CREATE TABLE IF NOT EXISTS captured_experiences (
|
|
143
|
+
id TEXT PRIMARY KEY,
|
|
144
|
+
agent_id TEXT NOT NULL,
|
|
145
|
+
agent_type TEXT NOT NULL,
|
|
146
|
+
task_type TEXT NOT NULL,
|
|
147
|
+
execution TEXT NOT NULL,
|
|
148
|
+
context TEXT NOT NULL,
|
|
149
|
+
outcome TEXT NOT NULL,
|
|
150
|
+
embedding BLOB,
|
|
151
|
+
created_at INTEGER NOT NULL,
|
|
152
|
+
processed INTEGER DEFAULT 0
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
CREATE INDEX IF NOT EXISTS idx_exp_agent_type ON captured_experiences(agent_type);
|
|
156
|
+
CREATE INDEX IF NOT EXISTS idx_exp_task_type ON captured_experiences(task_type);
|
|
157
|
+
CREATE INDEX IF NOT EXISTS idx_exp_created_at ON captured_experiences(created_at);
|
|
158
|
+
CREATE INDEX IF NOT EXISTS idx_exp_processed ON captured_experiences(processed);
|
|
159
|
+
`);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Start capturing experiences
|
|
163
|
+
*/
|
|
164
|
+
async start() {
|
|
165
|
+
if (this.isRunning) {
|
|
166
|
+
this.logger.warn('[ExperienceCapture] Already running');
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
this.isRunning = true;
|
|
170
|
+
// Start periodic flush
|
|
171
|
+
this.flushTimer = setInterval(() => this.flush(), this.config.flushInterval);
|
|
172
|
+
this.logger.info('[ExperienceCapture] Started', {
|
|
173
|
+
bufferSize: this.config.bufferSize,
|
|
174
|
+
flushInterval: this.config.flushInterval,
|
|
175
|
+
});
|
|
176
|
+
this.emit('started');
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Stop capturing and flush remaining buffer
|
|
180
|
+
*/
|
|
181
|
+
async stop() {
|
|
182
|
+
if (!this.isRunning)
|
|
183
|
+
return;
|
|
184
|
+
this.isRunning = false;
|
|
185
|
+
if (this.flushTimer) {
|
|
186
|
+
clearInterval(this.flushTimer);
|
|
187
|
+
this.flushTimer = null;
|
|
188
|
+
}
|
|
189
|
+
// Final flush
|
|
190
|
+
await this.flush();
|
|
191
|
+
this.logger.info('[ExperienceCapture] Stopped', {
|
|
192
|
+
totalCaptured: this.totalCaptured,
|
|
193
|
+
totalFlushed: this.totalFlushed,
|
|
194
|
+
});
|
|
195
|
+
this.emit('stopped');
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Capture an agent execution event
|
|
199
|
+
*/
|
|
200
|
+
async captureExecution(event) {
|
|
201
|
+
if (!this.isRunning) {
|
|
202
|
+
throw new Error('ExperienceCapture not running');
|
|
203
|
+
}
|
|
204
|
+
const experience = await this.extractExperience(event);
|
|
205
|
+
this.buffer.push(experience);
|
|
206
|
+
// Update stats
|
|
207
|
+
this.totalCaptured++;
|
|
208
|
+
this.byAgentType[event.agentType] = (this.byAgentType[event.agentType] || 0) + 1;
|
|
209
|
+
this.byTaskType[event.taskType] = (this.byTaskType[event.taskType] || 0) + 1;
|
|
210
|
+
if (event.success)
|
|
211
|
+
this.successCount++;
|
|
212
|
+
if (this.config.debug) {
|
|
213
|
+
this.logger.debug('[ExperienceCapture] Captured', {
|
|
214
|
+
id: experience.id,
|
|
215
|
+
agentType: event.agentType,
|
|
216
|
+
taskType: event.taskType,
|
|
217
|
+
bufferSize: this.buffer.length,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
this.emit('captured', experience);
|
|
221
|
+
// Auto-flush if buffer is full
|
|
222
|
+
if (this.buffer.length >= this.config.bufferSize) {
|
|
223
|
+
await this.flush();
|
|
224
|
+
}
|
|
225
|
+
return experience.id;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Flush buffer to database
|
|
229
|
+
*/
|
|
230
|
+
async flush() {
|
|
231
|
+
if (this.buffer.length === 0)
|
|
232
|
+
return 0;
|
|
233
|
+
const experiences = [...this.buffer];
|
|
234
|
+
this.buffer = [];
|
|
235
|
+
const stmt = this.db.prepare(`
|
|
236
|
+
INSERT INTO captured_experiences
|
|
237
|
+
(id, agent_id, agent_type, task_type, execution, context, outcome, embedding, created_at, processed)
|
|
238
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 0)
|
|
239
|
+
`);
|
|
240
|
+
const insertMany = this.db.transaction((exps) => {
|
|
241
|
+
for (const exp of exps) {
|
|
242
|
+
stmt.run(exp.id, exp.agentId, exp.agentType, exp.taskType, JSON.stringify(exp.execution), JSON.stringify(exp.context), JSON.stringify(exp.outcome), exp.embedding ? Buffer.from(new Float32Array(exp.embedding).buffer) : null, exp.timestamp.getTime());
|
|
243
|
+
}
|
|
244
|
+
return exps.length;
|
|
245
|
+
});
|
|
246
|
+
const flushed = insertMany(experiences);
|
|
247
|
+
this.totalFlushed += flushed;
|
|
248
|
+
this.lastFlush = new Date();
|
|
249
|
+
this.logger.info('[ExperienceCapture] Flushed', { count: flushed });
|
|
250
|
+
this.emit('flushed', { count: flushed, experiences });
|
|
251
|
+
return flushed;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get unprocessed experiences for learning
|
|
255
|
+
*/
|
|
256
|
+
getUnprocessedExperiences(limit = 100) {
|
|
257
|
+
const rows = this.db.prepare(`
|
|
258
|
+
SELECT * FROM captured_experiences
|
|
259
|
+
WHERE processed = 0
|
|
260
|
+
ORDER BY created_at ASC
|
|
261
|
+
LIMIT ?
|
|
262
|
+
`).all(limit);
|
|
263
|
+
return rows.map(row => this.rowToExperience(row));
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Get experiences by agent type
|
|
267
|
+
*/
|
|
268
|
+
getExperiencesByAgentType(agentType, limit = 100) {
|
|
269
|
+
const rows = this.db.prepare(`
|
|
270
|
+
SELECT * FROM captured_experiences
|
|
271
|
+
WHERE agent_type = ?
|
|
272
|
+
ORDER BY created_at DESC
|
|
273
|
+
LIMIT ?
|
|
274
|
+
`).all(agentType, limit);
|
|
275
|
+
return rows.map(row => this.rowToExperience(row));
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Get recent experiences
|
|
279
|
+
*/
|
|
280
|
+
getRecentExperiences(hours = 24, limit = 100) {
|
|
281
|
+
const since = Date.now() - hours * 60 * 60 * 1000;
|
|
282
|
+
const rows = this.db.prepare(`
|
|
283
|
+
SELECT * FROM captured_experiences
|
|
284
|
+
WHERE created_at >= ?
|
|
285
|
+
ORDER BY created_at DESC
|
|
286
|
+
LIMIT ?
|
|
287
|
+
`).all(since, limit);
|
|
288
|
+
return rows.map(row => this.rowToExperience(row));
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Mark experiences as processed
|
|
292
|
+
*/
|
|
293
|
+
markAsProcessed(ids) {
|
|
294
|
+
const stmt = this.db.prepare(`
|
|
295
|
+
UPDATE captured_experiences SET processed = 1 WHERE id = ?
|
|
296
|
+
`);
|
|
297
|
+
const updateMany = this.db.transaction((expIds) => {
|
|
298
|
+
for (const id of expIds) {
|
|
299
|
+
stmt.run(id);
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
updateMany(ids);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Get capture statistics
|
|
306
|
+
*/
|
|
307
|
+
getStats() {
|
|
308
|
+
return {
|
|
309
|
+
totalCaptured: this.totalCaptured,
|
|
310
|
+
totalFlushed: this.totalFlushed,
|
|
311
|
+
bufferSize: this.buffer.length,
|
|
312
|
+
lastFlush: this.lastFlush,
|
|
313
|
+
byAgentType: { ...this.byAgentType },
|
|
314
|
+
byTaskType: { ...this.byTaskType },
|
|
315
|
+
successRate: this.totalCaptured > 0 ? this.successCount / this.totalCaptured : 0,
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Extract a CapturedExperience from an execution event
|
|
320
|
+
*/
|
|
321
|
+
async extractExperience(event) {
|
|
322
|
+
// Extract patterns and decisions from output
|
|
323
|
+
const patternsUsed = this.extractPatterns(event.output);
|
|
324
|
+
const decisionsMade = this.extractDecisions(event.output);
|
|
325
|
+
const errorsEncountered = event.error ? [event.error.message] : [];
|
|
326
|
+
// Calculate quality score
|
|
327
|
+
const qualityScore = this.calculateQualityScore(event);
|
|
328
|
+
return {
|
|
329
|
+
id: `exp-${Date.now()}-${SecureRandom_1.SecureRandom.randomString(8, 'alphanumeric')}`,
|
|
330
|
+
agentId: event.agentId,
|
|
331
|
+
agentType: event.agentType,
|
|
332
|
+
taskType: event.taskType,
|
|
333
|
+
execution: {
|
|
334
|
+
input: event.input,
|
|
335
|
+
output: event.output,
|
|
336
|
+
duration: event.duration,
|
|
337
|
+
success: event.success,
|
|
338
|
+
},
|
|
339
|
+
context: {
|
|
340
|
+
patterns_used: patternsUsed,
|
|
341
|
+
decisions_made: decisionsMade,
|
|
342
|
+
errors_encountered: errorsEncountered,
|
|
343
|
+
},
|
|
344
|
+
outcome: {
|
|
345
|
+
quality_score: qualityScore,
|
|
346
|
+
coverage_delta: event.metrics?.coverage_delta || 0,
|
|
347
|
+
},
|
|
348
|
+
timestamp: event.timestamp,
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Extract pattern IDs from execution output
|
|
353
|
+
*/
|
|
354
|
+
extractPatterns(output) {
|
|
355
|
+
const patterns = [];
|
|
356
|
+
// Look for pattern references in output
|
|
357
|
+
if (output.patterns && Array.isArray(output.patterns)) {
|
|
358
|
+
patterns.push(...output.patterns.map((p) => p.id || String(p)));
|
|
359
|
+
}
|
|
360
|
+
if (output.patternsApplied && Array.isArray(output.patternsApplied)) {
|
|
361
|
+
patterns.push(...output.patternsApplied);
|
|
362
|
+
}
|
|
363
|
+
return patterns;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Extract decision points from execution output
|
|
367
|
+
*/
|
|
368
|
+
extractDecisions(output) {
|
|
369
|
+
const decisions = [];
|
|
370
|
+
// Look for decision references in output
|
|
371
|
+
if (output.decisions && Array.isArray(output.decisions)) {
|
|
372
|
+
decisions.push(...output.decisions.map(String));
|
|
373
|
+
}
|
|
374
|
+
if (output.strategy) {
|
|
375
|
+
decisions.push(`strategy:${output.strategy}`);
|
|
376
|
+
}
|
|
377
|
+
if (output.framework) {
|
|
378
|
+
decisions.push(`framework:${output.framework}`);
|
|
379
|
+
}
|
|
380
|
+
return decisions;
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Calculate a quality score for the execution
|
|
384
|
+
*/
|
|
385
|
+
calculateQualityScore(event) {
|
|
386
|
+
let score = event.success ? 0.5 : 0.0;
|
|
387
|
+
// Bonus for metrics
|
|
388
|
+
if (event.metrics) {
|
|
389
|
+
if (event.metrics.coverage && event.metrics.coverage > 70) {
|
|
390
|
+
score += 0.2;
|
|
391
|
+
}
|
|
392
|
+
if (event.metrics.testsGenerated && event.metrics.testsGenerated > 5) {
|
|
393
|
+
score += 0.1;
|
|
394
|
+
}
|
|
395
|
+
if (event.metrics.duration && event.metrics.duration < 5000) {
|
|
396
|
+
score += 0.1; // Fast execution bonus
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
// Penalty for errors
|
|
400
|
+
if (event.error) {
|
|
401
|
+
score -= 0.2;
|
|
402
|
+
}
|
|
403
|
+
return Math.max(0, Math.min(1, score));
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Convert database row to CapturedExperience
|
|
407
|
+
*/
|
|
408
|
+
rowToExperience(row) {
|
|
409
|
+
return {
|
|
410
|
+
id: row.id,
|
|
411
|
+
agentId: row.agent_id,
|
|
412
|
+
agentType: row.agent_type,
|
|
413
|
+
taskType: row.task_type,
|
|
414
|
+
execution: JSON.parse(row.execution),
|
|
415
|
+
context: JSON.parse(row.context),
|
|
416
|
+
outcome: JSON.parse(row.outcome),
|
|
417
|
+
timestamp: new Date(row.created_at),
|
|
418
|
+
embedding: row.embedding ? Array.from(new Float32Array(row.embedding)) : undefined,
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* Close database connection
|
|
423
|
+
*/
|
|
424
|
+
close() {
|
|
425
|
+
this.db.close();
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
exports.ExperienceCapture = ExperienceCapture;
|
|
429
|
+
ExperienceCapture.instance = null;
|
|
430
|
+
ExperienceCapture.instancePromise = null;
|
|
431
|
+
exports.default = ExperienceCapture;
|
|
432
|
+
//# sourceMappingURL=ExperienceCapture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExperienceCapture.js","sourceRoot":"","sources":["../../../src/learning/capture/ExperienceCapture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExperienceExtractor - Extract learnable content from agent executions
|
|
3
|
+
*
|
|
4
|
+
* Analyzes agent execution events to extract:
|
|
5
|
+
* - Patterns and techniques used
|
|
6
|
+
* - Decisions made during execution
|
|
7
|
+
* - Errors encountered and handled
|
|
8
|
+
* - Quality metrics and scores
|
|
9
|
+
* - Vector embeddings for similarity search
|
|
10
|
+
*
|
|
11
|
+
* Part of the Nightly-Learner Phase 1 implementation.
|
|
12
|
+
*
|
|
13
|
+
* @version 1.0.0
|
|
14
|
+
* @module src/learning/capture/ExperienceExtractor
|
|
15
|
+
*/
|
|
16
|
+
import { AgentExecutionEvent } from './ExperienceCapture';
|
|
17
|
+
/**
|
|
18
|
+
* Extracted content from an execution event
|
|
19
|
+
*/
|
|
20
|
+
export interface ExtractedContent {
|
|
21
|
+
/** Patterns and techniques identified in the execution */
|
|
22
|
+
patterns: string[];
|
|
23
|
+
/** Decisions made during execution */
|
|
24
|
+
decisions: string[];
|
|
25
|
+
/** Errors encountered */
|
|
26
|
+
errors: string[];
|
|
27
|
+
/** Quality score (0-1) */
|
|
28
|
+
qualityScore: number;
|
|
29
|
+
/** Vector embedding for similarity search */
|
|
30
|
+
embedding?: number[];
|
|
31
|
+
/** Coverage metrics */
|
|
32
|
+
coverage?: {
|
|
33
|
+
delta: number;
|
|
34
|
+
total?: number;
|
|
35
|
+
};
|
|
36
|
+
/** Extraction metadata */
|
|
37
|
+
metadata: {
|
|
38
|
+
extractedAt: Date;
|
|
39
|
+
contentHash: string;
|
|
40
|
+
embeddingDimension?: number;
|
|
41
|
+
embeddingMethod?: 'hash' | 'ml';
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Configuration for the experience extractor
|
|
46
|
+
*/
|
|
47
|
+
export interface ExperienceExtractorConfig {
|
|
48
|
+
/** Enable embedding generation. Default: true */
|
|
49
|
+
generateEmbeddings?: boolean;
|
|
50
|
+
/** Use ML-based embeddings. Default: false (uses hash-based) */
|
|
51
|
+
useMLEmbeddings?: boolean;
|
|
52
|
+
/** Embedding dimension. Default: 256 */
|
|
53
|
+
embeddingDimension?: number;
|
|
54
|
+
/** Enable debug logging */
|
|
55
|
+
debug?: boolean;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Statistics for extraction operations
|
|
59
|
+
*/
|
|
60
|
+
export interface ExtractionStats {
|
|
61
|
+
totalExtractions: number;
|
|
62
|
+
patternsExtracted: number;
|
|
63
|
+
decisionsExtracted: number;
|
|
64
|
+
errorsExtracted: number;
|
|
65
|
+
embeddingsGenerated: number;
|
|
66
|
+
avgQualityScore: number;
|
|
67
|
+
avgExtractionTime: number;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* ExperienceExtractor extracts learnable content from agent executions
|
|
71
|
+
*
|
|
72
|
+
* Analyzes execution events to identify patterns, decisions, and quality metrics
|
|
73
|
+
* that can be used for learning and improvement.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* const extractor = new ExperienceExtractor({
|
|
78
|
+
* generateEmbeddings: true,
|
|
79
|
+
* useMLEmbeddings: false
|
|
80
|
+
* });
|
|
81
|
+
*
|
|
82
|
+
* const content = await extractor.extract(executionEvent);
|
|
83
|
+
* console.log('Patterns:', content.patterns);
|
|
84
|
+
* console.log('Quality:', content.qualityScore);
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export declare class ExperienceExtractor {
|
|
88
|
+
private config;
|
|
89
|
+
private logger;
|
|
90
|
+
private embeddingGenerator;
|
|
91
|
+
private totalExtractions;
|
|
92
|
+
private totalPatterns;
|
|
93
|
+
private totalDecisions;
|
|
94
|
+
private totalErrors;
|
|
95
|
+
private totalEmbeddings;
|
|
96
|
+
private totalQualityScore;
|
|
97
|
+
private totalExtractionTime;
|
|
98
|
+
constructor(config?: ExperienceExtractorConfig);
|
|
99
|
+
/**
|
|
100
|
+
* Extract learnable content from an agent execution event
|
|
101
|
+
*
|
|
102
|
+
* @param event - Agent execution event to analyze
|
|
103
|
+
* @returns Extracted content with patterns, decisions, and embeddings
|
|
104
|
+
*/
|
|
105
|
+
extract(event: AgentExecutionEvent): Promise<ExtractedContent>;
|
|
106
|
+
/**
|
|
107
|
+
* Extract patterns used during execution
|
|
108
|
+
*
|
|
109
|
+
* Looks for:
|
|
110
|
+
* - Explicit pattern references in output
|
|
111
|
+
* - Testing frameworks and strategies
|
|
112
|
+
* - Code patterns and techniques
|
|
113
|
+
* - Quality engineering approaches
|
|
114
|
+
*
|
|
115
|
+
* @param output - Execution output data
|
|
116
|
+
* @returns Array of pattern identifiers
|
|
117
|
+
*/
|
|
118
|
+
extractPatterns(output: Record<string, unknown>): string[];
|
|
119
|
+
/**
|
|
120
|
+
* Extract decisions made during execution
|
|
121
|
+
*
|
|
122
|
+
* Looks for:
|
|
123
|
+
* - Strategic choices
|
|
124
|
+
* - Configuration decisions
|
|
125
|
+
* - Implementation approaches
|
|
126
|
+
* - Trade-off evaluations
|
|
127
|
+
*
|
|
128
|
+
* @param output - Execution output data
|
|
129
|
+
* @returns Array of decision descriptions
|
|
130
|
+
*/
|
|
131
|
+
extractDecisions(output: Record<string, unknown>): string[];
|
|
132
|
+
/**
|
|
133
|
+
* Extract errors encountered during execution
|
|
134
|
+
*
|
|
135
|
+
* @param event - Execution event
|
|
136
|
+
* @returns Array of error messages
|
|
137
|
+
*/
|
|
138
|
+
private extractErrors;
|
|
139
|
+
/**
|
|
140
|
+
* Calculate quality score for the execution
|
|
141
|
+
*
|
|
142
|
+
* Scoring factors:
|
|
143
|
+
* - Success/failure (0.5 base)
|
|
144
|
+
* - Coverage metrics (+0.2)
|
|
145
|
+
* - Tests generated (+0.1)
|
|
146
|
+
* - Execution speed (+0.1)
|
|
147
|
+
* - Error penalties (-0.2)
|
|
148
|
+
*
|
|
149
|
+
* @param event - Execution event
|
|
150
|
+
* @returns Quality score between 0 and 1
|
|
151
|
+
*/
|
|
152
|
+
calculateQualityScore(event: AgentExecutionEvent): number;
|
|
153
|
+
/**
|
|
154
|
+
* Generate embedding for execution content
|
|
155
|
+
*
|
|
156
|
+
* Creates a vector embedding of the execution's content for similarity search.
|
|
157
|
+
* Combines input, output, patterns, and decisions into a single representation.
|
|
158
|
+
*
|
|
159
|
+
* @param event - Execution event
|
|
160
|
+
* @returns Embedding result with vector and metadata
|
|
161
|
+
*/
|
|
162
|
+
generateEmbedding(event: AgentExecutionEvent): Promise<{
|
|
163
|
+
embedding: number[];
|
|
164
|
+
dimension: number;
|
|
165
|
+
method: 'hash' | 'ml';
|
|
166
|
+
}>;
|
|
167
|
+
/**
|
|
168
|
+
* Extract coverage metrics from event
|
|
169
|
+
*
|
|
170
|
+
* @param event - Execution event
|
|
171
|
+
* @returns Coverage information
|
|
172
|
+
*/
|
|
173
|
+
private extractCoverage;
|
|
174
|
+
/**
|
|
175
|
+
* Serialize execution content to text for embedding
|
|
176
|
+
*
|
|
177
|
+
* @param event - Execution event
|
|
178
|
+
* @returns Text representation
|
|
179
|
+
*/
|
|
180
|
+
private serializeExecutionContent;
|
|
181
|
+
/**
|
|
182
|
+
* Create content hash for deduplication
|
|
183
|
+
*
|
|
184
|
+
* @param event - Execution event
|
|
185
|
+
* @returns Content hash
|
|
186
|
+
*/
|
|
187
|
+
private createContentHash;
|
|
188
|
+
/**
|
|
189
|
+
* Hash a string using simple algorithm
|
|
190
|
+
*
|
|
191
|
+
* @param str - String to hash
|
|
192
|
+
* @returns Hash string
|
|
193
|
+
*/
|
|
194
|
+
private hashString;
|
|
195
|
+
/**
|
|
196
|
+
* Get extraction statistics
|
|
197
|
+
*
|
|
198
|
+
* @returns Statistics about extraction operations
|
|
199
|
+
*/
|
|
200
|
+
getStats(): ExtractionStats;
|
|
201
|
+
/**
|
|
202
|
+
* Reset statistics
|
|
203
|
+
*/
|
|
204
|
+
resetStats(): void;
|
|
205
|
+
/**
|
|
206
|
+
* Update configuration
|
|
207
|
+
*
|
|
208
|
+
* @param config - New configuration values
|
|
209
|
+
*/
|
|
210
|
+
updateConfig(config: Partial<ExperienceExtractorConfig>): void;
|
|
211
|
+
/**
|
|
212
|
+
* Get current configuration
|
|
213
|
+
*
|
|
214
|
+
* @returns Current configuration
|
|
215
|
+
*/
|
|
216
|
+
getConfig(): Required<ExperienceExtractorConfig>;
|
|
217
|
+
}
|
|
218
|
+
export default ExperienceExtractor;
|
|
219
|
+
//# sourceMappingURL=ExperienceExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExperienceExtractor.d.ts","sourceRoot":"","sources":["../../../src/learning/capture/ExperienceExtractor.ts"],"names":[],"mappings":"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"}
|