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,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExperienceStore - Storage layer for captured agent experiences
|
|
3
|
+
*
|
|
4
|
+
* Provides efficient storage and retrieval of captured experiences using SQLite.
|
|
5
|
+
* Supports batch operations, filtering, and automatic cleanup via TTL.
|
|
6
|
+
*
|
|
7
|
+
* Part of the Nightly-Learner Phase 1 implementation.
|
|
8
|
+
*
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
* @module src/learning/capture/ExperienceStore
|
|
11
|
+
*/
|
|
12
|
+
import BetterSqlite3 from 'better-sqlite3';
|
|
13
|
+
import { CapturedExperience } from './ExperienceCapture';
|
|
14
|
+
export interface ExperienceStoreConfig {
|
|
15
|
+
/** Database path. Default: .agentic-qe/memory.db */
|
|
16
|
+
dbPath?: string;
|
|
17
|
+
/** Enable debug logging */
|
|
18
|
+
debug?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface ExperienceQueryOptions {
|
|
21
|
+
/** Maximum number of results */
|
|
22
|
+
limit?: number;
|
|
23
|
+
/** Skip first N results */
|
|
24
|
+
offset?: number;
|
|
25
|
+
/** Filter by processed status */
|
|
26
|
+
processed?: boolean;
|
|
27
|
+
/** Order by field (created_at, quality_score) */
|
|
28
|
+
orderBy?: 'created_at' | 'quality_score';
|
|
29
|
+
/** Sort direction */
|
|
30
|
+
orderDir?: 'ASC' | 'DESC';
|
|
31
|
+
}
|
|
32
|
+
export interface ExperienceStats {
|
|
33
|
+
total: number;
|
|
34
|
+
processed: number;
|
|
35
|
+
unprocessed: number;
|
|
36
|
+
byAgentType: Record<string, number>;
|
|
37
|
+
byTaskType: Record<string, number>;
|
|
38
|
+
avgQualityScore: number;
|
|
39
|
+
successRate: number;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* ExperienceStore manages persistent storage of captured experiences
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const store = new ExperienceStore({ dbPath: '.agentic-qe/memory.db' });
|
|
47
|
+
*
|
|
48
|
+
* // Store experiences
|
|
49
|
+
* await store.store(experience);
|
|
50
|
+
* await store.storeBatch(experiences);
|
|
51
|
+
*
|
|
52
|
+
* // Query experiences
|
|
53
|
+
* const recent = store.getRecent(24);
|
|
54
|
+
* const unprocessed = store.getUnprocessed(100);
|
|
55
|
+
*
|
|
56
|
+
* // Mark as processed
|
|
57
|
+
* store.markProcessed(['exp-1', 'exp-2']);
|
|
58
|
+
*
|
|
59
|
+
* // Cleanup old data
|
|
60
|
+
* store.cleanup(30); // Remove experiences older than 30 days
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export declare class ExperienceStore {
|
|
64
|
+
private db;
|
|
65
|
+
private logger;
|
|
66
|
+
private config;
|
|
67
|
+
/**
|
|
68
|
+
* Create a new ExperienceStore
|
|
69
|
+
*
|
|
70
|
+
* @param config - Store configuration
|
|
71
|
+
*/
|
|
72
|
+
constructor(config?: ExperienceStoreConfig);
|
|
73
|
+
/**
|
|
74
|
+
* Initialize database schema for experience storage
|
|
75
|
+
*/
|
|
76
|
+
private initializeSchema;
|
|
77
|
+
/**
|
|
78
|
+
* Store a single experience
|
|
79
|
+
*
|
|
80
|
+
* @param experience - Experience to store
|
|
81
|
+
* @returns Promise that resolves when stored
|
|
82
|
+
*/
|
|
83
|
+
store(experience: CapturedExperience): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Store multiple experiences in a batch
|
|
86
|
+
*
|
|
87
|
+
* @param experiences - Experiences to store
|
|
88
|
+
* @returns Number of experiences stored
|
|
89
|
+
*/
|
|
90
|
+
storeBatch(experiences: CapturedExperience[]): Promise<number>;
|
|
91
|
+
/**
|
|
92
|
+
* Get experiences by agent type
|
|
93
|
+
*
|
|
94
|
+
* @param agentType - Agent type to filter by
|
|
95
|
+
* @param limit - Maximum number of results (default: 100)
|
|
96
|
+
* @returns Array of experiences
|
|
97
|
+
*/
|
|
98
|
+
getByAgentType(agentType: string, limit?: number): CapturedExperience[];
|
|
99
|
+
/**
|
|
100
|
+
* Get experiences by task type
|
|
101
|
+
*
|
|
102
|
+
* @param taskType - Task type to filter by
|
|
103
|
+
* @param limit - Maximum number of results (default: 100)
|
|
104
|
+
* @returns Array of experiences
|
|
105
|
+
*/
|
|
106
|
+
getByTaskType(taskType: string, limit?: number): CapturedExperience[];
|
|
107
|
+
/**
|
|
108
|
+
* Get unprocessed experiences
|
|
109
|
+
*
|
|
110
|
+
* @param limit - Maximum number of results (default: 100)
|
|
111
|
+
* @returns Array of unprocessed experiences
|
|
112
|
+
*/
|
|
113
|
+
getUnprocessed(limit?: number): CapturedExperience[];
|
|
114
|
+
/**
|
|
115
|
+
* Mark experiences as processed
|
|
116
|
+
*
|
|
117
|
+
* @param ids - Experience IDs to mark as processed
|
|
118
|
+
*/
|
|
119
|
+
markProcessed(ids: string[]): void;
|
|
120
|
+
/**
|
|
121
|
+
* Get recent experiences within a time window
|
|
122
|
+
*
|
|
123
|
+
* @param hours - Number of hours to look back (default: 24)
|
|
124
|
+
* @param limit - Maximum number of results (default: 100)
|
|
125
|
+
* @returns Array of recent experiences
|
|
126
|
+
*/
|
|
127
|
+
getRecent(hours?: number, limit?: number): CapturedExperience[];
|
|
128
|
+
/**
|
|
129
|
+
* Get experiences within a date range
|
|
130
|
+
*
|
|
131
|
+
* @param startDate - Start of date range
|
|
132
|
+
* @param endDate - End of date range
|
|
133
|
+
* @param options - Query options
|
|
134
|
+
* @returns Array of experiences
|
|
135
|
+
*/
|
|
136
|
+
getByDateRange(startDate: Date, endDate: Date, options?: ExperienceQueryOptions): CapturedExperience[];
|
|
137
|
+
/**
|
|
138
|
+
* Get top performing experiences by quality score
|
|
139
|
+
*
|
|
140
|
+
* @param limit - Maximum number of results (default: 10)
|
|
141
|
+
* @returns Array of high-quality experiences
|
|
142
|
+
*/
|
|
143
|
+
getTopPerforming(limit?: number): CapturedExperience[];
|
|
144
|
+
/**
|
|
145
|
+
* Get experiences by ID
|
|
146
|
+
*
|
|
147
|
+
* @param ids - Experience IDs to retrieve
|
|
148
|
+
* @returns Array of experiences
|
|
149
|
+
*/
|
|
150
|
+
getByIds(ids: string[]): CapturedExperience[];
|
|
151
|
+
/**
|
|
152
|
+
* Get storage statistics
|
|
153
|
+
*
|
|
154
|
+
* @returns Storage statistics
|
|
155
|
+
*/
|
|
156
|
+
getStats(): ExperienceStats;
|
|
157
|
+
/**
|
|
158
|
+
* Count experiences matching criteria
|
|
159
|
+
*
|
|
160
|
+
* @param agentType - Optional agent type filter
|
|
161
|
+
* @param taskType - Optional task type filter
|
|
162
|
+
* @param processed - Optional processed status filter
|
|
163
|
+
* @returns Count of matching experiences
|
|
164
|
+
*/
|
|
165
|
+
count(agentType?: string, taskType?: string, processed?: boolean): number;
|
|
166
|
+
/**
|
|
167
|
+
* Delete experiences older than specified days (TTL cleanup)
|
|
168
|
+
*
|
|
169
|
+
* @param days - Delete experiences older than this many days
|
|
170
|
+
* @returns Number of experiences deleted
|
|
171
|
+
*/
|
|
172
|
+
cleanup(days?: number): number;
|
|
173
|
+
/**
|
|
174
|
+
* Delete all experiences (for testing)
|
|
175
|
+
*/
|
|
176
|
+
clear(): void;
|
|
177
|
+
/**
|
|
178
|
+
* Convert database row to CapturedExperience
|
|
179
|
+
*
|
|
180
|
+
* @param row - Database row
|
|
181
|
+
* @returns CapturedExperience object
|
|
182
|
+
*/
|
|
183
|
+
private rowToExperience;
|
|
184
|
+
/**
|
|
185
|
+
* Close database connection
|
|
186
|
+
*/
|
|
187
|
+
close(): void;
|
|
188
|
+
/**
|
|
189
|
+
* Get database instance (for advanced queries)
|
|
190
|
+
*
|
|
191
|
+
* @returns Database instance
|
|
192
|
+
*/
|
|
193
|
+
getDatabase(): BetterSqlite3.Database;
|
|
194
|
+
}
|
|
195
|
+
export default ExperienceStore;
|
|
196
|
+
//# sourceMappingURL=ExperienceStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExperienceStore.d.ts","sourceRoot":"","sources":["../../../src/learning/capture/ExperienceStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ExperienceStore - Storage layer for captured agent experiences
|
|
4
|
+
*
|
|
5
|
+
* Provides efficient storage and retrieval of captured experiences using SQLite.
|
|
6
|
+
* Supports batch operations, filtering, and automatic cleanup via TTL.
|
|
7
|
+
*
|
|
8
|
+
* Part of the Nightly-Learner Phase 1 implementation.
|
|
9
|
+
*
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
* @module src/learning/capture/ExperienceStore
|
|
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.ExperienceStore = void 0;
|
|
51
|
+
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
52
|
+
const path = __importStar(require("path"));
|
|
53
|
+
const fs = __importStar(require("fs"));
|
|
54
|
+
const Logger_1 = require("../../utils/Logger");
|
|
55
|
+
/**
|
|
56
|
+
* ExperienceStore manages persistent storage of captured experiences
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const store = new ExperienceStore({ dbPath: '.agentic-qe/memory.db' });
|
|
61
|
+
*
|
|
62
|
+
* // Store experiences
|
|
63
|
+
* await store.store(experience);
|
|
64
|
+
* await store.storeBatch(experiences);
|
|
65
|
+
*
|
|
66
|
+
* // Query experiences
|
|
67
|
+
* const recent = store.getRecent(24);
|
|
68
|
+
* const unprocessed = store.getUnprocessed(100);
|
|
69
|
+
*
|
|
70
|
+
* // Mark as processed
|
|
71
|
+
* store.markProcessed(['exp-1', 'exp-2']);
|
|
72
|
+
*
|
|
73
|
+
* // Cleanup old data
|
|
74
|
+
* store.cleanup(30); // Remove experiences older than 30 days
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
class ExperienceStore {
|
|
78
|
+
/**
|
|
79
|
+
* Create a new ExperienceStore
|
|
80
|
+
*
|
|
81
|
+
* @param config - Store configuration
|
|
82
|
+
*/
|
|
83
|
+
constructor(config) {
|
|
84
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
85
|
+
this.config = {
|
|
86
|
+
dbPath: config?.dbPath || path.join(process.cwd(), '.agentic-qe', 'memory.db'),
|
|
87
|
+
debug: config?.debug ?? false,
|
|
88
|
+
};
|
|
89
|
+
// Ensure the directory exists before opening the database
|
|
90
|
+
const dbDir = path.dirname(this.config.dbPath);
|
|
91
|
+
if (!fs.existsSync(dbDir)) {
|
|
92
|
+
fs.mkdirSync(dbDir, { recursive: true });
|
|
93
|
+
}
|
|
94
|
+
this.db = new better_sqlite3_1.default(this.config.dbPath);
|
|
95
|
+
this.initializeSchema();
|
|
96
|
+
if (this.config.debug) {
|
|
97
|
+
this.logger.debug('[ExperienceStore] Initialized', { dbPath: this.config.dbPath });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Initialize database schema for experience storage
|
|
102
|
+
*/
|
|
103
|
+
initializeSchema() {
|
|
104
|
+
this.db.exec(`
|
|
105
|
+
CREATE TABLE IF NOT EXISTS captured_experiences (
|
|
106
|
+
id TEXT PRIMARY KEY,
|
|
107
|
+
agent_id TEXT NOT NULL,
|
|
108
|
+
agent_type TEXT NOT NULL,
|
|
109
|
+
task_type TEXT NOT NULL,
|
|
110
|
+
execution TEXT NOT NULL,
|
|
111
|
+
context TEXT NOT NULL,
|
|
112
|
+
outcome TEXT NOT NULL,
|
|
113
|
+
embedding BLOB,
|
|
114
|
+
created_at INTEGER NOT NULL,
|
|
115
|
+
processed INTEGER DEFAULT 0
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
CREATE INDEX IF NOT EXISTS idx_exp_agent_type ON captured_experiences(agent_type);
|
|
119
|
+
CREATE INDEX IF NOT EXISTS idx_exp_task_type ON captured_experiences(task_type);
|
|
120
|
+
CREATE INDEX IF NOT EXISTS idx_exp_created_at ON captured_experiences(created_at);
|
|
121
|
+
CREATE INDEX IF NOT EXISTS idx_exp_processed ON captured_experiences(processed);
|
|
122
|
+
CREATE INDEX IF NOT EXISTS idx_exp_quality ON captured_experiences(json_extract(outcome, '$.quality_score'));
|
|
123
|
+
`);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Store a single experience
|
|
127
|
+
*
|
|
128
|
+
* @param experience - Experience to store
|
|
129
|
+
* @returns Promise that resolves when stored
|
|
130
|
+
*/
|
|
131
|
+
async store(experience) {
|
|
132
|
+
const stmt = this.db.prepare(`
|
|
133
|
+
INSERT OR REPLACE INTO captured_experiences
|
|
134
|
+
(id, agent_id, agent_type, task_type, execution, context, outcome, embedding, created_at, processed)
|
|
135
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 0)
|
|
136
|
+
`);
|
|
137
|
+
stmt.run(experience.id, experience.agentId, experience.agentType, experience.taskType, JSON.stringify(experience.execution), JSON.stringify(experience.context), JSON.stringify(experience.outcome), experience.embedding ? Buffer.from(new Float32Array(experience.embedding).buffer) : null, experience.timestamp.getTime());
|
|
138
|
+
if (this.config.debug) {
|
|
139
|
+
this.logger.debug('[ExperienceStore] Stored experience', {
|
|
140
|
+
id: experience.id,
|
|
141
|
+
agentType: experience.agentType,
|
|
142
|
+
taskType: experience.taskType,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Store multiple experiences in a batch
|
|
148
|
+
*
|
|
149
|
+
* @param experiences - Experiences to store
|
|
150
|
+
* @returns Number of experiences stored
|
|
151
|
+
*/
|
|
152
|
+
async storeBatch(experiences) {
|
|
153
|
+
if (experiences.length === 0)
|
|
154
|
+
return 0;
|
|
155
|
+
const stmt = this.db.prepare(`
|
|
156
|
+
INSERT OR REPLACE INTO captured_experiences
|
|
157
|
+
(id, agent_id, agent_type, task_type, execution, context, outcome, embedding, created_at, processed)
|
|
158
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, 0)
|
|
159
|
+
`);
|
|
160
|
+
const insertMany = this.db.transaction((exps) => {
|
|
161
|
+
for (const exp of exps) {
|
|
162
|
+
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());
|
|
163
|
+
}
|
|
164
|
+
return exps.length;
|
|
165
|
+
});
|
|
166
|
+
const count = insertMany(experiences);
|
|
167
|
+
this.logger.info('[ExperienceStore] Batch stored', { count });
|
|
168
|
+
return count;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Get experiences by agent type
|
|
172
|
+
*
|
|
173
|
+
* @param agentType - Agent type to filter by
|
|
174
|
+
* @param limit - Maximum number of results (default: 100)
|
|
175
|
+
* @returns Array of experiences
|
|
176
|
+
*/
|
|
177
|
+
getByAgentType(agentType, limit = 100) {
|
|
178
|
+
const rows = this.db.prepare(`
|
|
179
|
+
SELECT * FROM captured_experiences
|
|
180
|
+
WHERE agent_type = ?
|
|
181
|
+
ORDER BY created_at DESC
|
|
182
|
+
LIMIT ?
|
|
183
|
+
`).all(agentType, limit);
|
|
184
|
+
return rows.map(row => this.rowToExperience(row));
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get experiences by task type
|
|
188
|
+
*
|
|
189
|
+
* @param taskType - Task type to filter by
|
|
190
|
+
* @param limit - Maximum number of results (default: 100)
|
|
191
|
+
* @returns Array of experiences
|
|
192
|
+
*/
|
|
193
|
+
getByTaskType(taskType, limit = 100) {
|
|
194
|
+
const rows = this.db.prepare(`
|
|
195
|
+
SELECT * FROM captured_experiences
|
|
196
|
+
WHERE task_type = ?
|
|
197
|
+
ORDER BY created_at DESC
|
|
198
|
+
LIMIT ?
|
|
199
|
+
`).all(taskType, limit);
|
|
200
|
+
return rows.map(row => this.rowToExperience(row));
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get unprocessed experiences
|
|
204
|
+
*
|
|
205
|
+
* @param limit - Maximum number of results (default: 100)
|
|
206
|
+
* @returns Array of unprocessed experiences
|
|
207
|
+
*/
|
|
208
|
+
getUnprocessed(limit = 100) {
|
|
209
|
+
const rows = this.db.prepare(`
|
|
210
|
+
SELECT * FROM captured_experiences
|
|
211
|
+
WHERE processed = 0
|
|
212
|
+
ORDER BY created_at ASC
|
|
213
|
+
LIMIT ?
|
|
214
|
+
`).all(limit);
|
|
215
|
+
return rows.map(row => this.rowToExperience(row));
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Mark experiences as processed
|
|
219
|
+
*
|
|
220
|
+
* @param ids - Experience IDs to mark as processed
|
|
221
|
+
*/
|
|
222
|
+
markProcessed(ids) {
|
|
223
|
+
if (ids.length === 0)
|
|
224
|
+
return;
|
|
225
|
+
const stmt = this.db.prepare(`
|
|
226
|
+
UPDATE captured_experiences SET processed = 1 WHERE id = ?
|
|
227
|
+
`);
|
|
228
|
+
const updateMany = this.db.transaction((expIds) => {
|
|
229
|
+
for (const id of expIds) {
|
|
230
|
+
stmt.run(id);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
updateMany(ids);
|
|
234
|
+
this.logger.info('[ExperienceStore] Marked processed', { count: ids.length });
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Get recent experiences within a time window
|
|
238
|
+
*
|
|
239
|
+
* @param hours - Number of hours to look back (default: 24)
|
|
240
|
+
* @param limit - Maximum number of results (default: 100)
|
|
241
|
+
* @returns Array of recent experiences
|
|
242
|
+
*/
|
|
243
|
+
getRecent(hours = 24, limit = 100) {
|
|
244
|
+
const since = Date.now() - hours * 60 * 60 * 1000;
|
|
245
|
+
const rows = this.db.prepare(`
|
|
246
|
+
SELECT * FROM captured_experiences
|
|
247
|
+
WHERE created_at >= ?
|
|
248
|
+
ORDER BY created_at DESC
|
|
249
|
+
LIMIT ?
|
|
250
|
+
`).all(since, limit);
|
|
251
|
+
return rows.map(row => this.rowToExperience(row));
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get experiences within a date range
|
|
255
|
+
*
|
|
256
|
+
* @param startDate - Start of date range
|
|
257
|
+
* @param endDate - End of date range
|
|
258
|
+
* @param options - Query options
|
|
259
|
+
* @returns Array of experiences
|
|
260
|
+
*/
|
|
261
|
+
getByDateRange(startDate, endDate, options) {
|
|
262
|
+
const { limit = 100, offset = 0, processed, orderBy = 'created_at', orderDir = 'DESC', } = options || {};
|
|
263
|
+
let query = `
|
|
264
|
+
SELECT * FROM captured_experiences
|
|
265
|
+
WHERE created_at >= ? AND created_at <= ?
|
|
266
|
+
`;
|
|
267
|
+
const params = [startDate.getTime(), endDate.getTime()];
|
|
268
|
+
if (processed !== undefined) {
|
|
269
|
+
query += ` AND processed = ?`;
|
|
270
|
+
params.push(processed ? 1 : 0);
|
|
271
|
+
}
|
|
272
|
+
query += ` ORDER BY ${orderBy} ${orderDir}`;
|
|
273
|
+
query += ` LIMIT ? OFFSET ?`;
|
|
274
|
+
params.push(limit, offset);
|
|
275
|
+
const rows = this.db.prepare(query).all(...params);
|
|
276
|
+
return rows.map(row => this.rowToExperience(row));
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Get top performing experiences by quality score
|
|
280
|
+
*
|
|
281
|
+
* @param limit - Maximum number of results (default: 10)
|
|
282
|
+
* @returns Array of high-quality experiences
|
|
283
|
+
*/
|
|
284
|
+
getTopPerforming(limit = 10) {
|
|
285
|
+
const rows = this.db.prepare(`
|
|
286
|
+
SELECT * FROM captured_experiences
|
|
287
|
+
WHERE json_extract(outcome, '$.quality_score') >= 0.7
|
|
288
|
+
ORDER BY json_extract(outcome, '$.quality_score') DESC
|
|
289
|
+
LIMIT ?
|
|
290
|
+
`).all(limit);
|
|
291
|
+
return rows.map(row => this.rowToExperience(row));
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Get experiences by ID
|
|
295
|
+
*
|
|
296
|
+
* @param ids - Experience IDs to retrieve
|
|
297
|
+
* @returns Array of experiences
|
|
298
|
+
*/
|
|
299
|
+
getByIds(ids) {
|
|
300
|
+
if (ids.length === 0)
|
|
301
|
+
return [];
|
|
302
|
+
const placeholders = ids.map(() => '?').join(',');
|
|
303
|
+
const rows = this.db.prepare(`
|
|
304
|
+
SELECT * FROM captured_experiences
|
|
305
|
+
WHERE id IN (${placeholders})
|
|
306
|
+
`).all(...ids);
|
|
307
|
+
return rows.map(row => this.rowToExperience(row));
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Get storage statistics
|
|
311
|
+
*
|
|
312
|
+
* @returns Storage statistics
|
|
313
|
+
*/
|
|
314
|
+
getStats() {
|
|
315
|
+
const totalRow = this.db.prepare('SELECT COUNT(*) as count FROM captured_experiences').get();
|
|
316
|
+
const processedRow = this.db.prepare('SELECT COUNT(*) as count FROM captured_experiences WHERE processed = 1').get();
|
|
317
|
+
const total = totalRow.count;
|
|
318
|
+
const processed = processedRow.count;
|
|
319
|
+
const unprocessed = total - processed;
|
|
320
|
+
// By agent type
|
|
321
|
+
const agentTypeRows = this.db.prepare(`
|
|
322
|
+
SELECT agent_type, COUNT(*) as count
|
|
323
|
+
FROM captured_experiences
|
|
324
|
+
GROUP BY agent_type
|
|
325
|
+
`).all();
|
|
326
|
+
const byAgentType = {};
|
|
327
|
+
for (const row of agentTypeRows) {
|
|
328
|
+
byAgentType[row.agent_type] = row.count;
|
|
329
|
+
}
|
|
330
|
+
// By task type
|
|
331
|
+
const taskTypeRows = this.db.prepare(`
|
|
332
|
+
SELECT task_type, COUNT(*) as count
|
|
333
|
+
FROM captured_experiences
|
|
334
|
+
GROUP BY task_type
|
|
335
|
+
`).all();
|
|
336
|
+
const byTaskType = {};
|
|
337
|
+
for (const row of taskTypeRows) {
|
|
338
|
+
byTaskType[row.task_type] = row.count;
|
|
339
|
+
}
|
|
340
|
+
// Average quality score
|
|
341
|
+
const qualityRow = this.db.prepare(`
|
|
342
|
+
SELECT AVG(json_extract(outcome, '$.quality_score')) as avg_score
|
|
343
|
+
FROM captured_experiences
|
|
344
|
+
`).get();
|
|
345
|
+
const avgQualityScore = qualityRow.avg_score || 0;
|
|
346
|
+
// Success rate
|
|
347
|
+
const successRow = this.db.prepare(`
|
|
348
|
+
SELECT COUNT(*) as count
|
|
349
|
+
FROM captured_experiences
|
|
350
|
+
WHERE json_extract(execution, '$.success') = 1
|
|
351
|
+
`).get();
|
|
352
|
+
const successRate = total > 0 ? successRow.count / total : 0;
|
|
353
|
+
return {
|
|
354
|
+
total,
|
|
355
|
+
processed,
|
|
356
|
+
unprocessed,
|
|
357
|
+
byAgentType,
|
|
358
|
+
byTaskType,
|
|
359
|
+
avgQualityScore,
|
|
360
|
+
successRate,
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Count experiences matching criteria
|
|
365
|
+
*
|
|
366
|
+
* @param agentType - Optional agent type filter
|
|
367
|
+
* @param taskType - Optional task type filter
|
|
368
|
+
* @param processed - Optional processed status filter
|
|
369
|
+
* @returns Count of matching experiences
|
|
370
|
+
*/
|
|
371
|
+
count(agentType, taskType, processed) {
|
|
372
|
+
let query = 'SELECT COUNT(*) as count FROM captured_experiences WHERE 1=1';
|
|
373
|
+
const params = [];
|
|
374
|
+
if (agentType) {
|
|
375
|
+
query += ' AND agent_type = ?';
|
|
376
|
+
params.push(agentType);
|
|
377
|
+
}
|
|
378
|
+
if (taskType) {
|
|
379
|
+
query += ' AND task_type = ?';
|
|
380
|
+
params.push(taskType);
|
|
381
|
+
}
|
|
382
|
+
if (processed !== undefined) {
|
|
383
|
+
query += ' AND processed = ?';
|
|
384
|
+
params.push(processed ? 1 : 0);
|
|
385
|
+
}
|
|
386
|
+
const row = this.db.prepare(query).get(...params);
|
|
387
|
+
return row.count;
|
|
388
|
+
}
|
|
389
|
+
/**
|
|
390
|
+
* Delete experiences older than specified days (TTL cleanup)
|
|
391
|
+
*
|
|
392
|
+
* @param days - Delete experiences older than this many days
|
|
393
|
+
* @returns Number of experiences deleted
|
|
394
|
+
*/
|
|
395
|
+
cleanup(days = 30) {
|
|
396
|
+
const cutoffTime = Date.now() - days * 24 * 60 * 60 * 1000;
|
|
397
|
+
const result = this.db.prepare(`
|
|
398
|
+
DELETE FROM captured_experiences
|
|
399
|
+
WHERE created_at < ?
|
|
400
|
+
`).run(cutoffTime);
|
|
401
|
+
this.logger.info('[ExperienceStore] Cleanup completed', {
|
|
402
|
+
days,
|
|
403
|
+
deleted: result.changes,
|
|
404
|
+
});
|
|
405
|
+
return result.changes;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* Delete all experiences (for testing)
|
|
409
|
+
*/
|
|
410
|
+
clear() {
|
|
411
|
+
this.db.prepare('DELETE FROM captured_experiences').run();
|
|
412
|
+
this.logger.warn('[ExperienceStore] All experiences cleared');
|
|
413
|
+
}
|
|
414
|
+
/**
|
|
415
|
+
* Convert database row to CapturedExperience
|
|
416
|
+
*
|
|
417
|
+
* @param row - Database row
|
|
418
|
+
* @returns CapturedExperience object
|
|
419
|
+
*/
|
|
420
|
+
rowToExperience(row) {
|
|
421
|
+
return {
|
|
422
|
+
id: row.id,
|
|
423
|
+
agentId: row.agent_id,
|
|
424
|
+
agentType: row.agent_type,
|
|
425
|
+
taskType: row.task_type,
|
|
426
|
+
execution: JSON.parse(row.execution),
|
|
427
|
+
context: JSON.parse(row.context),
|
|
428
|
+
outcome: JSON.parse(row.outcome),
|
|
429
|
+
timestamp: new Date(row.created_at),
|
|
430
|
+
embedding: row.embedding ? Array.from(new Float32Array(row.embedding.buffer)) : undefined,
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Close database connection
|
|
435
|
+
*/
|
|
436
|
+
close() {
|
|
437
|
+
this.db.close();
|
|
438
|
+
if (this.config.debug) {
|
|
439
|
+
this.logger.debug('[ExperienceStore] Closed');
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Get database instance (for advanced queries)
|
|
444
|
+
*
|
|
445
|
+
* @returns Database instance
|
|
446
|
+
*/
|
|
447
|
+
getDatabase() {
|
|
448
|
+
return this.db;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
exports.ExperienceStore = ExperienceStore;
|
|
452
|
+
exports.default = ExperienceStore;
|
|
453
|
+
//# sourceMappingURL=ExperienceStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExperienceStore.js","sourceRoot":"","sources":["../../../src/learning/capture/ExperienceStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Experience Capture Module
|
|
3
|
+
*
|
|
4
|
+
* Provides experience capture infrastructure for the Nightly-Learner system:
|
|
5
|
+
* - ExperienceCapture: Store agent execution experiences
|
|
6
|
+
* - ExecutionRecorder: Hook into agent execution pipeline
|
|
7
|
+
*
|
|
8
|
+
* @module src/learning/capture
|
|
9
|
+
*/
|
|
10
|
+
export { ExperienceCapture, ExperienceCaptureConfig, CapturedExperience, AgentExecutionEvent, CaptureStats, } from './ExperienceCapture';
|
|
11
|
+
export { ExecutionRecorder, ExecutionRecorderConfig, RecordedExecution, } from './ExecutionRecorder';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/learning/capture/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC"}
|