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,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InsightGenerator - Generate actionable insights from associations
|
|
3
|
+
*
|
|
4
|
+
* Transforms co-activated concept associations into actionable insights
|
|
5
|
+
* that can improve agent behavior.
|
|
6
|
+
*
|
|
7
|
+
* Part of the Nightly-Learner Phase 2 implementation.
|
|
8
|
+
*
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
* @module src/learning/dream/InsightGenerator
|
|
11
|
+
*/
|
|
12
|
+
import { EventEmitter } from 'events';
|
|
13
|
+
import { ConceptGraph } from './ConceptGraph';
|
|
14
|
+
import { Association } from './SpreadingActivation';
|
|
15
|
+
export type InsightType = 'new_pattern' | 'optimization' | 'warning' | 'connection' | 'transfer';
|
|
16
|
+
export interface DreamInsight {
|
|
17
|
+
id: string;
|
|
18
|
+
type: InsightType;
|
|
19
|
+
title: string;
|
|
20
|
+
description: string;
|
|
21
|
+
associatedConcepts: string[];
|
|
22
|
+
noveltyScore: number;
|
|
23
|
+
confidenceScore: number;
|
|
24
|
+
actionable: boolean;
|
|
25
|
+
suggestedAction?: string;
|
|
26
|
+
targetAgentTypes?: string[];
|
|
27
|
+
priority: 'high' | 'medium' | 'low';
|
|
28
|
+
status: 'pending' | 'applied' | 'dismissed' | 'validated';
|
|
29
|
+
createdAt: Date;
|
|
30
|
+
appliedAt?: Date;
|
|
31
|
+
outcome?: {
|
|
32
|
+
success: boolean;
|
|
33
|
+
feedback?: string;
|
|
34
|
+
improvementMeasured?: number;
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export interface InsightGeneratorConfig {
|
|
38
|
+
/** Database path. Default: .agentic-qe/memory.db */
|
|
39
|
+
dbPath?: string;
|
|
40
|
+
/** Minimum novelty score to generate insight. Default: 0.5 */
|
|
41
|
+
noveltyThreshold?: number;
|
|
42
|
+
/** Minimum confidence to mark as actionable. Default: 0.6 */
|
|
43
|
+
confidenceThreshold?: number;
|
|
44
|
+
/** Maximum insights to generate per cycle. Default: 10 */
|
|
45
|
+
maxInsightsPerCycle?: number;
|
|
46
|
+
/** Enable debug logging */
|
|
47
|
+
debug?: boolean;
|
|
48
|
+
}
|
|
49
|
+
export interface InsightGenerationResult {
|
|
50
|
+
totalAssociations: number;
|
|
51
|
+
insightsGenerated: number;
|
|
52
|
+
actionableInsights: number;
|
|
53
|
+
byType: Record<InsightType, number>;
|
|
54
|
+
averageNovelty: number;
|
|
55
|
+
averageConfidence: number;
|
|
56
|
+
duration: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* InsightGenerator creates actionable insights from concept associations
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* const generator = new InsightGenerator(graph);
|
|
64
|
+
*
|
|
65
|
+
* const insights = await generator.generateInsights(associations);
|
|
66
|
+
* console.log(`Generated ${insights.length} insights`);
|
|
67
|
+
*
|
|
68
|
+
* // Apply an insight
|
|
69
|
+
* await generator.applyInsight(insights[0].id);
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare class InsightGenerator extends EventEmitter {
|
|
73
|
+
private graph;
|
|
74
|
+
private config;
|
|
75
|
+
private db;
|
|
76
|
+
private logger;
|
|
77
|
+
constructor(graph: ConceptGraph, config?: InsightGeneratorConfig);
|
|
78
|
+
/**
|
|
79
|
+
* Initialize database schema
|
|
80
|
+
*/
|
|
81
|
+
private initializeSchema;
|
|
82
|
+
/**
|
|
83
|
+
* Generate insights from associations
|
|
84
|
+
*/
|
|
85
|
+
generateInsights(associations: Association[]): Promise<DreamInsight[]>;
|
|
86
|
+
/**
|
|
87
|
+
* Convert an association to an insight
|
|
88
|
+
*/
|
|
89
|
+
private associationToInsight;
|
|
90
|
+
/**
|
|
91
|
+
* Determine insight type from concept types
|
|
92
|
+
*/
|
|
93
|
+
private determineInsightType;
|
|
94
|
+
/**
|
|
95
|
+
* Calculate confidence score
|
|
96
|
+
*/
|
|
97
|
+
private calculateConfidence;
|
|
98
|
+
/**
|
|
99
|
+
* Generate a title for the insight
|
|
100
|
+
*/
|
|
101
|
+
private generateTitle;
|
|
102
|
+
/**
|
|
103
|
+
* Generate a description for the insight
|
|
104
|
+
*/
|
|
105
|
+
private generateDescription;
|
|
106
|
+
/**
|
|
107
|
+
* Generate a suggested action
|
|
108
|
+
*/
|
|
109
|
+
private generateAction;
|
|
110
|
+
/**
|
|
111
|
+
* Extract target agent types from concepts
|
|
112
|
+
*/
|
|
113
|
+
private extractTargetAgentTypes;
|
|
114
|
+
/**
|
|
115
|
+
* Determine priority level
|
|
116
|
+
*/
|
|
117
|
+
private determinePriority;
|
|
118
|
+
/**
|
|
119
|
+
* Store insights in database
|
|
120
|
+
*/
|
|
121
|
+
private storeInsights;
|
|
122
|
+
/**
|
|
123
|
+
* Get pending insights
|
|
124
|
+
*/
|
|
125
|
+
getPendingInsights(limit?: number): DreamInsight[];
|
|
126
|
+
/**
|
|
127
|
+
* Get insights by type
|
|
128
|
+
*/
|
|
129
|
+
getInsightsByType(type: InsightType, limit?: number): DreamInsight[];
|
|
130
|
+
/**
|
|
131
|
+
* Apply an insight (mark as applied)
|
|
132
|
+
*/
|
|
133
|
+
applyInsight(insightId: string, feedback?: string): Promise<void>;
|
|
134
|
+
/**
|
|
135
|
+
* Dismiss an insight
|
|
136
|
+
*/
|
|
137
|
+
dismissInsight(insightId: string, reason?: string): void;
|
|
138
|
+
/**
|
|
139
|
+
* Record outcome of an applied insight
|
|
140
|
+
*/
|
|
141
|
+
recordOutcome(insightId: string, success: boolean, feedback?: string, improvement?: number): void;
|
|
142
|
+
/**
|
|
143
|
+
* Convert database row to DreamInsight
|
|
144
|
+
*/
|
|
145
|
+
private rowToInsight;
|
|
146
|
+
/**
|
|
147
|
+
* Close database connection
|
|
148
|
+
*/
|
|
149
|
+
close(): void;
|
|
150
|
+
}
|
|
151
|
+
export default InsightGenerator;
|
|
152
|
+
//# sourceMappingURL=InsightGenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InsightGenerator.d.ts","sourceRoot":"","sources":["../../../src/learning/dream/InsightGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* InsightGenerator - Generate actionable insights from associations
|
|
4
|
+
*
|
|
5
|
+
* Transforms co-activated concept associations into actionable insights
|
|
6
|
+
* that can improve agent behavior.
|
|
7
|
+
*
|
|
8
|
+
* Part of the Nightly-Learner Phase 2 implementation.
|
|
9
|
+
*
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
* @module src/learning/dream/InsightGenerator
|
|
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.InsightGenerator = 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 Logger_1 = require("../../utils/Logger");
|
|
55
|
+
const SecureRandom_1 = require("../../utils/SecureRandom");
|
|
56
|
+
/**
|
|
57
|
+
* InsightGenerator creates actionable insights from concept associations
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* ```typescript
|
|
61
|
+
* const generator = new InsightGenerator(graph);
|
|
62
|
+
*
|
|
63
|
+
* const insights = await generator.generateInsights(associations);
|
|
64
|
+
* console.log(`Generated ${insights.length} insights`);
|
|
65
|
+
*
|
|
66
|
+
* // Apply an insight
|
|
67
|
+
* await generator.applyInsight(insights[0].id);
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
class InsightGenerator extends events_1.EventEmitter {
|
|
71
|
+
constructor(graph, config) {
|
|
72
|
+
super();
|
|
73
|
+
this.graph = graph;
|
|
74
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
75
|
+
this.config = {
|
|
76
|
+
dbPath: config?.dbPath || path.join(process.cwd(), '.agentic-qe', 'memory.db'),
|
|
77
|
+
noveltyThreshold: config?.noveltyThreshold ?? 0.5,
|
|
78
|
+
confidenceThreshold: config?.confidenceThreshold ?? 0.6,
|
|
79
|
+
maxInsightsPerCycle: config?.maxInsightsPerCycle ?? 10,
|
|
80
|
+
debug: config?.debug ?? false,
|
|
81
|
+
};
|
|
82
|
+
this.db = new better_sqlite3_1.default(this.config.dbPath);
|
|
83
|
+
this.initializeSchema();
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Initialize database schema
|
|
87
|
+
*/
|
|
88
|
+
initializeSchema() {
|
|
89
|
+
this.db.exec(`
|
|
90
|
+
CREATE TABLE IF NOT EXISTS dream_insights (
|
|
91
|
+
id TEXT PRIMARY KEY,
|
|
92
|
+
type TEXT NOT NULL,
|
|
93
|
+
title TEXT NOT NULL,
|
|
94
|
+
description TEXT NOT NULL,
|
|
95
|
+
associated_concepts TEXT NOT NULL,
|
|
96
|
+
novelty_score REAL NOT NULL,
|
|
97
|
+
confidence_score REAL NOT NULL,
|
|
98
|
+
actionable INTEGER NOT NULL,
|
|
99
|
+
suggested_action TEXT,
|
|
100
|
+
target_agent_types TEXT,
|
|
101
|
+
priority TEXT NOT NULL,
|
|
102
|
+
status TEXT NOT NULL DEFAULT 'pending',
|
|
103
|
+
created_at INTEGER NOT NULL,
|
|
104
|
+
applied_at INTEGER,
|
|
105
|
+
outcome TEXT
|
|
106
|
+
);
|
|
107
|
+
|
|
108
|
+
CREATE INDEX IF NOT EXISTS idx_insight_type ON dream_insights(type);
|
|
109
|
+
CREATE INDEX IF NOT EXISTS idx_insight_status ON dream_insights(status);
|
|
110
|
+
CREATE INDEX IF NOT EXISTS idx_insight_priority ON dream_insights(priority);
|
|
111
|
+
CREATE INDEX IF NOT EXISTS idx_insight_actionable ON dream_insights(actionable);
|
|
112
|
+
`);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Generate insights from associations
|
|
116
|
+
*/
|
|
117
|
+
async generateInsights(associations) {
|
|
118
|
+
const startTime = Date.now();
|
|
119
|
+
const insights = [];
|
|
120
|
+
this.logger.info('[InsightGenerator] Generating insights', {
|
|
121
|
+
associations: associations.length,
|
|
122
|
+
});
|
|
123
|
+
for (const association of associations) {
|
|
124
|
+
if (association.novelty < this.config.noveltyThreshold) {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const insight = await this.associationToInsight(association);
|
|
128
|
+
if (insight) {
|
|
129
|
+
insights.push(insight);
|
|
130
|
+
if (insights.length >= this.config.maxInsightsPerCycle) {
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Store insights
|
|
136
|
+
await this.storeInsights(insights);
|
|
137
|
+
// Calculate stats
|
|
138
|
+
const byType = {
|
|
139
|
+
new_pattern: 0,
|
|
140
|
+
optimization: 0,
|
|
141
|
+
warning: 0,
|
|
142
|
+
connection: 0,
|
|
143
|
+
transfer: 0,
|
|
144
|
+
};
|
|
145
|
+
for (const insight of insights) {
|
|
146
|
+
byType[insight.type]++;
|
|
147
|
+
}
|
|
148
|
+
const result = {
|
|
149
|
+
totalAssociations: associations.length,
|
|
150
|
+
insightsGenerated: insights.length,
|
|
151
|
+
actionableInsights: insights.filter(i => i.actionable).length,
|
|
152
|
+
byType,
|
|
153
|
+
averageNovelty: insights.length > 0
|
|
154
|
+
? insights.reduce((sum, i) => sum + i.noveltyScore, 0) / insights.length
|
|
155
|
+
: 0,
|
|
156
|
+
averageConfidence: insights.length > 0
|
|
157
|
+
? insights.reduce((sum, i) => sum + i.confidenceScore, 0) / insights.length
|
|
158
|
+
: 0,
|
|
159
|
+
duration: Date.now() - startTime,
|
|
160
|
+
};
|
|
161
|
+
this.logger.info('[InsightGenerator] Generation complete', {
|
|
162
|
+
generated: result.insightsGenerated,
|
|
163
|
+
actionable: result.actionableInsights,
|
|
164
|
+
duration: result.duration,
|
|
165
|
+
});
|
|
166
|
+
this.emit('generation:complete', result);
|
|
167
|
+
return insights;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Convert an association to an insight
|
|
171
|
+
*/
|
|
172
|
+
async associationToInsight(association) {
|
|
173
|
+
// Get the concepts involved
|
|
174
|
+
const concepts = association.nodes
|
|
175
|
+
.map(id => this.graph.getConcept(id))
|
|
176
|
+
.filter(Boolean);
|
|
177
|
+
if (concepts.length < 2)
|
|
178
|
+
return null;
|
|
179
|
+
// Determine insight type based on concept types
|
|
180
|
+
const types = new Set(concepts.map(c => c.type));
|
|
181
|
+
const insightType = this.determineInsightType(types, concepts);
|
|
182
|
+
// Calculate confidence based on association strength and concept quality
|
|
183
|
+
const confidence = this.calculateConfidence(association, concepts);
|
|
184
|
+
// Determine if actionable
|
|
185
|
+
const actionable = confidence >= this.config.confidenceThreshold &&
|
|
186
|
+
insightType !== 'connection';
|
|
187
|
+
// Generate content
|
|
188
|
+
const title = this.generateTitle(concepts, insightType);
|
|
189
|
+
const description = this.generateDescription(concepts, insightType);
|
|
190
|
+
const suggestedAction = actionable ? this.generateAction(concepts, insightType) : undefined;
|
|
191
|
+
// Determine target agent types from concepts
|
|
192
|
+
const targetAgentTypes = this.extractTargetAgentTypes(concepts);
|
|
193
|
+
// Determine priority
|
|
194
|
+
const priority = this.determinePriority(association.novelty, confidence, insightType);
|
|
195
|
+
const insight = {
|
|
196
|
+
id: `insight-${Date.now()}-${SecureRandom_1.SecureRandom.randomString(8, 'alphanumeric')}`,
|
|
197
|
+
type: insightType,
|
|
198
|
+
title,
|
|
199
|
+
description,
|
|
200
|
+
associatedConcepts: association.nodes,
|
|
201
|
+
noveltyScore: association.novelty,
|
|
202
|
+
confidenceScore: confidence,
|
|
203
|
+
actionable,
|
|
204
|
+
suggestedAction,
|
|
205
|
+
targetAgentTypes: targetAgentTypes.length > 0 ? targetAgentTypes : undefined,
|
|
206
|
+
priority,
|
|
207
|
+
status: 'pending',
|
|
208
|
+
createdAt: new Date(),
|
|
209
|
+
};
|
|
210
|
+
this.emit('insight:generated', insight);
|
|
211
|
+
if (this.config.debug) {
|
|
212
|
+
this.logger.debug('[InsightGenerator] Generated insight', {
|
|
213
|
+
id: insight.id,
|
|
214
|
+
type: insight.type,
|
|
215
|
+
novelty: insight.noveltyScore.toFixed(3),
|
|
216
|
+
confidence: insight.confidenceScore.toFixed(3),
|
|
217
|
+
actionable: insight.actionable,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
return insight;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Determine insight type from concept types
|
|
224
|
+
*/
|
|
225
|
+
determineInsightType(types, concepts) {
|
|
226
|
+
if (types.has('pattern') && types.has('outcome')) {
|
|
227
|
+
return 'new_pattern';
|
|
228
|
+
}
|
|
229
|
+
if (types.has('technique') && types.has('outcome')) {
|
|
230
|
+
return 'optimization';
|
|
231
|
+
}
|
|
232
|
+
if (types.has('domain') && types.size > 1) {
|
|
233
|
+
return 'transfer';
|
|
234
|
+
}
|
|
235
|
+
// Check for warning indicators in content
|
|
236
|
+
const warningKeywords = ['fail', 'error', 'issue', 'problem', 'bug', 'slow'];
|
|
237
|
+
const hasWarning = concepts.some(c => warningKeywords.some(kw => c.content.toLowerCase().includes(kw)));
|
|
238
|
+
if (hasWarning) {
|
|
239
|
+
return 'warning';
|
|
240
|
+
}
|
|
241
|
+
return 'connection';
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Calculate confidence score
|
|
245
|
+
*/
|
|
246
|
+
calculateConfidence(association, concepts) {
|
|
247
|
+
let confidence = association.strength;
|
|
248
|
+
// Bonus for high-quality concepts (those with more metadata)
|
|
249
|
+
const avgMetadataSize = concepts.reduce((sum, c) => sum + Object.keys(c.metadata).length, 0) / concepts.length;
|
|
250
|
+
confidence += Math.min(0.2, avgMetadataSize * 0.05);
|
|
251
|
+
// Bonus for type diversity
|
|
252
|
+
const typeCount = new Set(concepts.map(c => c.type)).size;
|
|
253
|
+
if (typeCount >= 2) {
|
|
254
|
+
confidence += 0.1;
|
|
255
|
+
}
|
|
256
|
+
return Math.min(1, confidence);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Generate a title for the insight
|
|
260
|
+
*/
|
|
261
|
+
generateTitle(concepts, type) {
|
|
262
|
+
const firstConcept = concepts[0].content.substring(0, 30);
|
|
263
|
+
switch (type) {
|
|
264
|
+
case 'new_pattern':
|
|
265
|
+
return `New Pattern: ${firstConcept}...`;
|
|
266
|
+
case 'optimization':
|
|
267
|
+
return `Optimization: ${firstConcept}...`;
|
|
268
|
+
case 'warning':
|
|
269
|
+
return `Warning: Potential issue with ${firstConcept}...`;
|
|
270
|
+
case 'transfer':
|
|
271
|
+
return `Transfer Opportunity: ${firstConcept}...`;
|
|
272
|
+
default:
|
|
273
|
+
return `Connection: ${concepts.length} concepts linked`;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Generate a description for the insight
|
|
278
|
+
*/
|
|
279
|
+
generateDescription(concepts, type) {
|
|
280
|
+
const conceptSummaries = concepts.map(c => `[${c.type}] ${c.content.substring(0, 50)}`).join('; ');
|
|
281
|
+
switch (type) {
|
|
282
|
+
case 'new_pattern':
|
|
283
|
+
return `Discovered a potential new pattern by combining: ${conceptSummaries}. ` +
|
|
284
|
+
`This combination has not been seen before and may represent a novel approach.`;
|
|
285
|
+
case 'optimization':
|
|
286
|
+
return `Found an optimization opportunity: ${conceptSummaries}. ` +
|
|
287
|
+
`Applying this technique may improve performance.`;
|
|
288
|
+
case 'warning':
|
|
289
|
+
return `Detected potential issue: ${conceptSummaries}. ` +
|
|
290
|
+
`This combination has been associated with problems in the past.`;
|
|
291
|
+
case 'transfer':
|
|
292
|
+
return `Knowledge transfer opportunity between domains: ${conceptSummaries}. ` +
|
|
293
|
+
`Patterns from one domain may be applicable to another.`;
|
|
294
|
+
default:
|
|
295
|
+
return `Discovered connection between: ${conceptSummaries}.`;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Generate a suggested action
|
|
300
|
+
*/
|
|
301
|
+
generateAction(concepts, type) {
|
|
302
|
+
switch (type) {
|
|
303
|
+
case 'new_pattern':
|
|
304
|
+
return 'Create a new test pattern combining these concepts and validate with a small test set.';
|
|
305
|
+
case 'optimization':
|
|
306
|
+
return 'Apply this technique to relevant agents and measure performance improvement.';
|
|
307
|
+
case 'warning':
|
|
308
|
+
return 'Review affected code paths and add defensive checks or tests.';
|
|
309
|
+
case 'transfer':
|
|
310
|
+
return 'Identify agents that could benefit from this cross-domain knowledge.';
|
|
311
|
+
default:
|
|
312
|
+
return 'Investigate this connection for potential applications.';
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Extract target agent types from concepts
|
|
317
|
+
*/
|
|
318
|
+
extractTargetAgentTypes(concepts) {
|
|
319
|
+
const agentTypes = new Set();
|
|
320
|
+
for (const concept of concepts) {
|
|
321
|
+
// Look for agent types in metadata
|
|
322
|
+
if (concept.metadata.agentType) {
|
|
323
|
+
agentTypes.add(concept.metadata.agentType);
|
|
324
|
+
}
|
|
325
|
+
if (concept.metadata.agentTypes && Array.isArray(concept.metadata.agentTypes)) {
|
|
326
|
+
for (const at of concept.metadata.agentTypes) {
|
|
327
|
+
agentTypes.add(at);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
// Extract from content
|
|
331
|
+
const knownAgents = [
|
|
332
|
+
'test-generator', 'coverage-analyzer', 'quality-gate',
|
|
333
|
+
'performance-tester', 'security-scanner', 'flaky-test-hunter'
|
|
334
|
+
];
|
|
335
|
+
for (const agent of knownAgents) {
|
|
336
|
+
if (concept.content.toLowerCase().includes(agent)) {
|
|
337
|
+
agentTypes.add(agent);
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
return Array.from(agentTypes);
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Determine priority level
|
|
345
|
+
*/
|
|
346
|
+
determinePriority(novelty, confidence, type) {
|
|
347
|
+
const score = novelty * 0.4 + confidence * 0.4 + (type === 'warning' ? 0.2 : 0);
|
|
348
|
+
if (score >= 0.7 || type === 'warning')
|
|
349
|
+
return 'high';
|
|
350
|
+
if (score >= 0.5)
|
|
351
|
+
return 'medium';
|
|
352
|
+
return 'low';
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Store insights in database
|
|
356
|
+
*/
|
|
357
|
+
async storeInsights(insights) {
|
|
358
|
+
const stmt = this.db.prepare(`
|
|
359
|
+
INSERT OR REPLACE INTO dream_insights
|
|
360
|
+
(id, type, title, description, associated_concepts, novelty_score, confidence_score,
|
|
361
|
+
actionable, suggested_action, target_agent_types, priority, status, created_at)
|
|
362
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
363
|
+
`);
|
|
364
|
+
const insertMany = this.db.transaction((ins) => {
|
|
365
|
+
for (const i of ins) {
|
|
366
|
+
stmt.run(i.id, i.type, i.title, i.description, JSON.stringify(i.associatedConcepts), i.noveltyScore, i.confidenceScore, i.actionable ? 1 : 0, i.suggestedAction || null, i.targetAgentTypes ? JSON.stringify(i.targetAgentTypes) : null, i.priority, i.status, i.createdAt.getTime());
|
|
367
|
+
}
|
|
368
|
+
});
|
|
369
|
+
insertMany(insights);
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Get pending insights
|
|
373
|
+
*/
|
|
374
|
+
getPendingInsights(limit = 10) {
|
|
375
|
+
const rows = this.db.prepare(`
|
|
376
|
+
SELECT * FROM dream_insights
|
|
377
|
+
WHERE status = 'pending'
|
|
378
|
+
ORDER BY
|
|
379
|
+
CASE priority WHEN 'high' THEN 1 WHEN 'medium' THEN 2 ELSE 3 END,
|
|
380
|
+
novelty_score DESC
|
|
381
|
+
LIMIT ?
|
|
382
|
+
`).all(limit);
|
|
383
|
+
return rows.map(row => this.rowToInsight(row));
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Get insights by type
|
|
387
|
+
*/
|
|
388
|
+
getInsightsByType(type, limit = 10) {
|
|
389
|
+
const rows = this.db.prepare(`
|
|
390
|
+
SELECT * FROM dream_insights
|
|
391
|
+
WHERE type = ?
|
|
392
|
+
ORDER BY created_at DESC
|
|
393
|
+
LIMIT ?
|
|
394
|
+
`).all(type, limit);
|
|
395
|
+
return rows.map(row => this.rowToInsight(row));
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* Apply an insight (mark as applied)
|
|
399
|
+
*/
|
|
400
|
+
async applyInsight(insightId, feedback) {
|
|
401
|
+
const now = Date.now();
|
|
402
|
+
this.db.prepare(`
|
|
403
|
+
UPDATE dream_insights
|
|
404
|
+
SET status = 'applied', applied_at = ?
|
|
405
|
+
WHERE id = ?
|
|
406
|
+
`).run(now, insightId);
|
|
407
|
+
this.emit('insight:applied', { insightId, feedback });
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Dismiss an insight
|
|
411
|
+
*/
|
|
412
|
+
dismissInsight(insightId, reason) {
|
|
413
|
+
this.db.prepare(`
|
|
414
|
+
UPDATE dream_insights
|
|
415
|
+
SET status = 'dismissed'
|
|
416
|
+
WHERE id = ?
|
|
417
|
+
`).run(insightId);
|
|
418
|
+
this.emit('insight:dismissed', { insightId, reason });
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Record outcome of an applied insight
|
|
422
|
+
*/
|
|
423
|
+
recordOutcome(insightId, success, feedback, improvement) {
|
|
424
|
+
const outcome = JSON.stringify({ success, feedback, improvementMeasured: improvement });
|
|
425
|
+
this.db.prepare(`
|
|
426
|
+
UPDATE dream_insights
|
|
427
|
+
SET outcome = ?, status = 'validated'
|
|
428
|
+
WHERE id = ?
|
|
429
|
+
`).run(outcome, insightId);
|
|
430
|
+
this.emit('insight:validated', { insightId, success, improvement });
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Convert database row to DreamInsight
|
|
434
|
+
*/
|
|
435
|
+
rowToInsight(row) {
|
|
436
|
+
return {
|
|
437
|
+
id: row.id,
|
|
438
|
+
type: row.type,
|
|
439
|
+
title: row.title,
|
|
440
|
+
description: row.description,
|
|
441
|
+
associatedConcepts: JSON.parse(row.associated_concepts),
|
|
442
|
+
noveltyScore: row.novelty_score,
|
|
443
|
+
confidenceScore: row.confidence_score,
|
|
444
|
+
actionable: row.actionable === 1,
|
|
445
|
+
suggestedAction: row.suggested_action || undefined,
|
|
446
|
+
targetAgentTypes: row.target_agent_types ? JSON.parse(row.target_agent_types) : undefined,
|
|
447
|
+
priority: row.priority,
|
|
448
|
+
status: row.status,
|
|
449
|
+
createdAt: new Date(row.created_at),
|
|
450
|
+
appliedAt: row.applied_at ? new Date(row.applied_at) : undefined,
|
|
451
|
+
outcome: row.outcome ? JSON.parse(row.outcome) : undefined,
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* Close database connection
|
|
456
|
+
*/
|
|
457
|
+
close() {
|
|
458
|
+
this.db.close();
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
exports.InsightGenerator = InsightGenerator;
|
|
462
|
+
exports.default = InsightGenerator;
|
|
463
|
+
//# sourceMappingURL=InsightGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InsightGenerator.js","sourceRoot":"","sources":["../../../src/learning/dream/InsightGenerator.ts"],"names":[],"mappings":"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"}
|