agentic-qe 2.3.4 → 2.4.0
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 +72 -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 +56 -49
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +208 -604
- 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 +7 -2
- package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
- package/dist/agents/FlakyTestHunterAgent.js +48 -104
- 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 +6 -1
- package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
- package/dist/agents/TestExecutorAgent.js +52 -46
- 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 +51 -35
- package/dist/agents/TestGeneratorAgent.js.map +1 -1
- package/dist/agents/adapters/CoordinatorAdapter.d.ts +47 -0
- package/dist/agents/adapters/CoordinatorAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/CoordinatorAdapter.js +266 -0
- package/dist/agents/adapters/CoordinatorAdapter.js.map +1 -0
- package/dist/agents/adapters/LearningEngineAdapter.d.ts +45 -0
- package/dist/agents/adapters/LearningEngineAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/LearningEngineAdapter.js +279 -0
- package/dist/agents/adapters/LearningEngineAdapter.js.map +1 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.d.ts +45 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.js +128 -0
- package/dist/agents/adapters/LifecycleManagerAdapter.js.map +1 -0
- package/dist/agents/adapters/MemoryServiceAdapter.d.ts +96 -0
- package/dist/agents/adapters/MemoryServiceAdapter.d.ts.map +1 -0
- package/dist/agents/adapters/MemoryServiceAdapter.js +266 -0
- package/dist/agents/adapters/MemoryServiceAdapter.js.map +1 -0
- package/dist/agents/adapters/index.d.ts +14 -0
- package/dist/agents/adapters/index.d.ts.map +1 -0
- package/dist/agents/adapters/index.js +25 -0
- package/dist/agents/adapters/index.js.map +1 -0
- package/dist/agents/lifecycle/AgentLifecycleManager.d.ts.map +1 -1
- package/dist/agents/lifecycle/AgentLifecycleManager.js +17 -8
- package/dist/agents/lifecycle/AgentLifecycleManager.js.map +1 -1
- package/dist/cli/index.js +68 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/cache/BinaryCacheBuilder.d.ts +84 -0
- package/dist/core/cache/BinaryCacheBuilder.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheBuilder.js +225 -0
- package/dist/core/cache/BinaryCacheBuilder.js.map +1 -0
- package/dist/core/cache/BinaryCacheManager.d.ts +142 -0
- package/dist/core/cache/BinaryCacheManager.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheManager.js +354 -0
- package/dist/core/cache/BinaryCacheManager.js.map +1 -0
- package/dist/core/cache/BinaryCacheReader.d.ts +129 -0
- package/dist/core/cache/BinaryCacheReader.d.ts.map +1 -0
- package/dist/core/cache/BinaryCacheReader.js +243 -0
- package/dist/core/cache/BinaryCacheReader.js.map +1 -0
- package/dist/core/cache/BinaryMetadataCache.d.ts +533 -0
- package/dist/core/cache/BinaryMetadataCache.d.ts.map +1 -0
- package/dist/core/cache/BinaryMetadataCache.js +142 -0
- package/dist/core/cache/BinaryMetadataCache.js.map +1 -0
- package/dist/core/cache/CacheInvalidator.d.ts +103 -0
- package/dist/core/cache/CacheInvalidator.d.ts.map +1 -0
- package/dist/core/cache/CacheInvalidator.js +152 -0
- package/dist/core/cache/CacheInvalidator.js.map +1 -0
- package/dist/core/cache/CacheValidator.d.ts +69 -0
- package/dist/core/cache/CacheValidator.d.ts.map +1 -0
- package/dist/core/cache/CacheValidator.js +189 -0
- package/dist/core/cache/CacheValidator.js.map +1 -0
- package/dist/core/cache/MessagePackSerializer.d.ts +163 -0
- package/dist/core/cache/MessagePackSerializer.d.ts.map +1 -0
- package/dist/core/cache/MessagePackSerializer.js +274 -0
- package/dist/core/cache/MessagePackSerializer.js.map +1 -0
- package/dist/core/cache/index.d.ts +58 -0
- package/dist/core/cache/index.d.ts.map +1 -0
- package/dist/core/cache/index.js +102 -0
- package/dist/core/cache/index.js.map +1 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +18 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/core/memory/PatternStoreFactory.d.ts +28 -0
- package/dist/core/memory/PatternStoreFactory.d.ts.map +1 -1
- package/dist/core/memory/PatternStoreFactory.js +68 -3
- package/dist/core/memory/PatternStoreFactory.js.map +1 -1
- package/dist/core/platform/FileOperations.d.ts +124 -0
- package/dist/core/platform/FileOperations.d.ts.map +1 -0
- package/dist/core/platform/FileOperations.js +371 -0
- package/dist/core/platform/FileOperations.js.map +1 -0
- package/dist/core/platform/PlatformDetector.d.ts +53 -0
- package/dist/core/platform/PlatformDetector.d.ts.map +1 -0
- package/dist/core/platform/PlatformDetector.js +251 -0
- package/dist/core/platform/PlatformDetector.js.map +1 -0
- package/dist/core/platform/index.d.ts +12 -0
- package/dist/core/platform/index.d.ts.map +1 -0
- package/dist/core/platform/index.js +28 -0
- package/dist/core/platform/index.js.map +1 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.d.ts +74 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.js +200 -0
- package/dist/core/strategies/AcceleratedLearningStrategy.js.map +1 -0
- package/dist/core/strategies/AgentCoordinationStrategy.d.ts +157 -0
- package/dist/core/strategies/AgentCoordinationStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentCoordinationStrategy.js +12 -0
- package/dist/core/strategies/AgentCoordinationStrategy.js.map +1 -0
- package/dist/core/strategies/AgentLearningStrategy.d.ts +200 -0
- package/dist/core/strategies/AgentLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentLearningStrategy.js +13 -0
- package/dist/core/strategies/AgentLearningStrategy.js.map +1 -0
- package/dist/core/strategies/AgentLifecycleStrategy.d.ts +116 -0
- package/dist/core/strategies/AgentLifecycleStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentLifecycleStrategy.js +12 -0
- package/dist/core/strategies/AgentLifecycleStrategy.js.map +1 -0
- package/dist/core/strategies/AgentMemoryStrategy.d.ts +154 -0
- package/dist/core/strategies/AgentMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/AgentMemoryStrategy.js +13 -0
- package/dist/core/strategies/AgentMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.d.ts +105 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.js +332 -0
- package/dist/core/strategies/DefaultCoordinationStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultLearningStrategy.d.ts +120 -0
- package/dist/core/strategies/DefaultLearningStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultLearningStrategy.js +365 -0
- package/dist/core/strategies/DefaultLearningStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.d.ts +129 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.js +297 -0
- package/dist/core/strategies/DefaultLifecycleStrategy.js.map +1 -0
- package/dist/core/strategies/DefaultMemoryStrategy.d.ts +91 -0
- package/dist/core/strategies/DefaultMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DefaultMemoryStrategy.js +257 -0
- package/dist/core/strategies/DefaultMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/DistributedMemoryStrategy.d.ts +85 -0
- package/dist/core/strategies/DistributedMemoryStrategy.d.ts.map +1 -0
- package/dist/core/strategies/DistributedMemoryStrategy.js +126 -0
- package/dist/core/strategies/DistributedMemoryStrategy.js.map +1 -0
- package/dist/core/strategies/index.d.ts +95 -0
- package/dist/core/strategies/index.d.ts.map +1 -0
- package/dist/core/strategies/index.js +65 -0
- package/dist/core/strategies/index.js.map +1 -0
- package/dist/learning/PerformanceOptimizer.js +2 -2
- package/dist/learning/PerformanceOptimizer.js.map +1 -1
- 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/scheduler/SleepScheduler.d.ts +2 -0
- package/dist/learning/scheduler/SleepScheduler.d.ts.map +1 -1
- package/dist/learning/scheduler/SleepScheduler.js +2 -0
- package/dist/learning/scheduler/SleepScheduler.js.map +1 -1
- 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/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/mcp/handlers/base-handler.d.ts +28 -1
- package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
- package/dist/mcp/handlers/base-handler.js +41 -0
- package/dist/mcp/handlers/base-handler.js.map +1 -1
- 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/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +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/dist/output/AIActionSuggester.d.ts +98 -0
- package/dist/output/AIActionSuggester.d.ts.map +1 -0
- package/dist/output/AIActionSuggester.js +499 -0
- package/dist/output/AIActionSuggester.js.map +1 -0
- package/dist/output/CLIOutputHelper.d.ts +169 -0
- package/dist/output/CLIOutputHelper.d.ts.map +1 -0
- package/dist/output/CLIOutputHelper.js +320 -0
- package/dist/output/CLIOutputHelper.js.map +1 -0
- package/dist/output/OutputFormatter.d.ts +764 -0
- package/dist/output/OutputFormatter.d.ts.map +1 -0
- package/dist/output/OutputFormatter.js +125 -0
- package/dist/output/OutputFormatter.js.map +1 -0
- package/dist/output/OutputFormatterImpl.d.ts +131 -0
- package/dist/output/OutputFormatterImpl.d.ts.map +1 -0
- package/dist/output/OutputFormatterImpl.js +556 -0
- package/dist/output/OutputFormatterImpl.js.map +1 -0
- package/dist/output/examples.d.ts +38 -0
- package/dist/output/examples.d.ts.map +1 -0
- package/dist/output/examples.js +503 -0
- package/dist/output/examples.js.map +1 -0
- package/dist/output/index.d.ts +16 -0
- package/dist/output/index.d.ts.map +1 -0
- package/dist/output/index.js +58 -0
- package/dist/output/index.js.map +1 -0
- package/package.json +4 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SleepScheduler.d.ts","sourceRoot":"","sources":["../../../src/learning/scheduler/SleepScheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAgB,kBAAkB,EAAa,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAc,YAAY,EAAoB,MAAM,cAAc,CAAC;AAGtF,MAAM,WAAW,cAAc;IAC7B,yDAAyD;IACzD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sDAAsD;IACtD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjC,0DAA0D;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACzC,gEAAgE;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACnC,kCAAkC;IAClC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACxC,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACjC,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,IAAI,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"SleepScheduler.d.ts","sourceRoot":"","sources":["../../../src/learning/scheduler/SleepScheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -70,6 +70,7 @@ class SleepScheduler extends events_1.EventEmitter {
|
|
|
70
70
|
...config.learningBudget,
|
|
71
71
|
},
|
|
72
72
|
minCycleInterval: config.minCycleInterval ?? 3600000,
|
|
73
|
+
phaseDurations: config.phaseDurations,
|
|
73
74
|
debug: config.debug ?? false,
|
|
74
75
|
};
|
|
75
76
|
this.idleDetector = new IdleDetector_1.IdleDetector(this.config.idleConfig);
|
|
@@ -194,6 +195,7 @@ class SleepScheduler extends events_1.EventEmitter {
|
|
|
194
195
|
async executeCycle(trigger) {
|
|
195
196
|
const cycleConfig = {
|
|
196
197
|
budget: this.config.learningBudget,
|
|
198
|
+
phaseDurations: this.config.phaseDurations,
|
|
197
199
|
debug: this.config.debug,
|
|
198
200
|
};
|
|
199
201
|
this.currentCycle = new SleepCycle_1.SleepCycle(cycleConfig);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SleepScheduler.js","sourceRoot":"","sources":["../../../src/learning/scheduler/SleepScheduler.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAEH,mCAAsC;AACtC,iDAA6E;AAC7E,6CAAsF;AACtF,+CAA4C;
|
|
1
|
+
{"version":3,"file":"SleepScheduler.js","sourceRoot":"","sources":["../../../src/learning/scheduler/SleepScheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ClusteringEngine - Clusters experiences by embedding similarity
|
|
3
|
+
*
|
|
4
|
+
* Provides simple k-means and hierarchical clustering for grouping
|
|
5
|
+
* similar agent experiences during pattern synthesis.
|
|
6
|
+
*
|
|
7
|
+
* Part of the Nightly-Learner Phase 1 implementation.
|
|
8
|
+
*
|
|
9
|
+
* @version 1.0.0
|
|
10
|
+
* @module src/learning/synthesis/ClusteringEngine
|
|
11
|
+
*/
|
|
12
|
+
import { CapturedExperience } from '../capture/ExperienceCapture';
|
|
13
|
+
/**
|
|
14
|
+
* A cluster of similar experiences
|
|
15
|
+
*/
|
|
16
|
+
export interface Cluster {
|
|
17
|
+
id: string;
|
|
18
|
+
centroid: number[];
|
|
19
|
+
members: CapturedExperience[];
|
|
20
|
+
size: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Configuration for clustering
|
|
24
|
+
*/
|
|
25
|
+
export interface ClusteringConfig {
|
|
26
|
+
/** Minimum number of experiences per cluster. Default: 2 */
|
|
27
|
+
minClusterSize?: number;
|
|
28
|
+
/** Maximum number of clusters to form. Default: 10 */
|
|
29
|
+
maxClusters?: number;
|
|
30
|
+
/** Similarity threshold for merging clusters (0-1). Default: 0.85 */
|
|
31
|
+
similarityThreshold?: number;
|
|
32
|
+
/** Use diversity-aware clustering (MMR-style). Default: false */
|
|
33
|
+
diversityAware?: boolean;
|
|
34
|
+
/** Maximum iterations for k-means. Default: 50 */
|
|
35
|
+
maxIterations?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* ClusteringEngine groups experiences by embedding similarity
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const engine = new ClusteringEngine();
|
|
43
|
+
*
|
|
44
|
+
* const clusters = engine.cluster(experiences, {
|
|
45
|
+
* maxClusters: 5,
|
|
46
|
+
* minClusterSize: 3,
|
|
47
|
+
* similarityThreshold: 0.8,
|
|
48
|
+
* });
|
|
49
|
+
*
|
|
50
|
+
* console.log(`Created ${clusters.length} clusters`);
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare class ClusteringEngine {
|
|
54
|
+
private logger;
|
|
55
|
+
constructor();
|
|
56
|
+
/**
|
|
57
|
+
* Cluster experiences using k-means algorithm
|
|
58
|
+
*
|
|
59
|
+
* @param experiences - Experiences to cluster (must have embeddings)
|
|
60
|
+
* @param config - Clustering configuration
|
|
61
|
+
* @returns Array of clusters
|
|
62
|
+
*/
|
|
63
|
+
cluster(experiences: CapturedExperience[], config?: ClusteringConfig): Cluster[];
|
|
64
|
+
/**
|
|
65
|
+
* Find k most similar clusters to a given embedding
|
|
66
|
+
*
|
|
67
|
+
* @param embedding - Query embedding
|
|
68
|
+
* @param clusters - Clusters to search
|
|
69
|
+
* @param k - Number of similar clusters to return. Default: 3
|
|
70
|
+
* @returns Top k similar clusters
|
|
71
|
+
*/
|
|
72
|
+
findSimilar(embedding: number[], clusters: Cluster[], k?: number): Cluster[];
|
|
73
|
+
/**
|
|
74
|
+
* Calculate cosine similarity between two vectors
|
|
75
|
+
*
|
|
76
|
+
* @param a - First vector
|
|
77
|
+
* @param b - Second vector
|
|
78
|
+
* @returns Cosine similarity (0-1)
|
|
79
|
+
*/
|
|
80
|
+
calculateSimilarity(a: number[], b: number[]): number;
|
|
81
|
+
/**
|
|
82
|
+
* Merge clusters that are above similarity threshold
|
|
83
|
+
*
|
|
84
|
+
* @param clusters - Clusters to merge
|
|
85
|
+
* @param threshold - Similarity threshold for merging (0-1)
|
|
86
|
+
* @returns Merged clusters
|
|
87
|
+
*/
|
|
88
|
+
mergeClusters(clusters: Cluster[], threshold: number): Cluster[];
|
|
89
|
+
/**
|
|
90
|
+
* K-means clustering algorithm (simplified implementation)
|
|
91
|
+
*
|
|
92
|
+
* @param experiences - Experiences with embeddings
|
|
93
|
+
* @param k - Number of clusters
|
|
94
|
+
* @param maxIterations - Maximum iterations
|
|
95
|
+
* @returns Array of clusters
|
|
96
|
+
*/
|
|
97
|
+
private kMeans;
|
|
98
|
+
/**
|
|
99
|
+
* Initialize centroids using k-means++ algorithm
|
|
100
|
+
* This provides better initial centroid placement than random selection
|
|
101
|
+
*/
|
|
102
|
+
private initializeCentroidsKMeansPlusPlus;
|
|
103
|
+
/**
|
|
104
|
+
* Find the nearest centroid for an embedding
|
|
105
|
+
*/
|
|
106
|
+
private findNearestCentroid;
|
|
107
|
+
/**
|
|
108
|
+
* Calculate the centroid (mean) of a group of experiences
|
|
109
|
+
*/
|
|
110
|
+
private calculateCentroid;
|
|
111
|
+
/**
|
|
112
|
+
* Create a cluster from a group of experiences
|
|
113
|
+
*/
|
|
114
|
+
private createCluster;
|
|
115
|
+
/**
|
|
116
|
+
* Apply diversity-aware selection (MMR-style)
|
|
117
|
+
* Selects diverse clusters to maximize coverage
|
|
118
|
+
*/
|
|
119
|
+
private applyDiversitySelection;
|
|
120
|
+
}
|
|
121
|
+
export default ClusteringEngine;
|
|
122
|
+
//# sourceMappingURL=ClusteringEngine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClusteringEngine.d.ts","sourceRoot":"","sources":["../../../src/learning/synthesis/ClusteringEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,kBAAkB,EAAE,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;;IAMvB;;;;;;OAMG;IACH,OAAO,CAAC,WAAW,EAAE,kBAAkB,EAAE,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,EAAE;IA0DhF;;;;;;;OAOG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,GAAE,MAAU,GAAG,OAAO,EAAE;IAgB/E;;;;;;OAMG;IACH,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IA0BrD;;;;;;OAMG;IACH,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;IAsChE;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM;IA4Dd;;;OAGG;IACH,OAAO,CAAC,iCAAiC;IAuCzC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA8BzB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;CAuChC;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ClusteringEngine - Clusters experiences by embedding similarity
|
|
4
|
+
*
|
|
5
|
+
* Provides simple k-means and hierarchical clustering for grouping
|
|
6
|
+
* similar agent experiences during pattern synthesis.
|
|
7
|
+
*
|
|
8
|
+
* Part of the Nightly-Learner Phase 1 implementation.
|
|
9
|
+
*
|
|
10
|
+
* @version 1.0.0
|
|
11
|
+
* @module src/learning/synthesis/ClusteringEngine
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.ClusteringEngine = void 0;
|
|
15
|
+
const Logger_1 = require("../../utils/Logger");
|
|
16
|
+
const SecureRandom_1 = require("../../utils/SecureRandom");
|
|
17
|
+
/**
|
|
18
|
+
* ClusteringEngine groups experiences by embedding similarity
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const engine = new ClusteringEngine();
|
|
23
|
+
*
|
|
24
|
+
* const clusters = engine.cluster(experiences, {
|
|
25
|
+
* maxClusters: 5,
|
|
26
|
+
* minClusterSize: 3,
|
|
27
|
+
* similarityThreshold: 0.8,
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* console.log(`Created ${clusters.length} clusters`);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
class ClusteringEngine {
|
|
34
|
+
constructor() {
|
|
35
|
+
this.logger = Logger_1.Logger.getInstance();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Cluster experiences using k-means algorithm
|
|
39
|
+
*
|
|
40
|
+
* @param experiences - Experiences to cluster (must have embeddings)
|
|
41
|
+
* @param config - Clustering configuration
|
|
42
|
+
* @returns Array of clusters
|
|
43
|
+
*/
|
|
44
|
+
cluster(experiences, config) {
|
|
45
|
+
const cfg = {
|
|
46
|
+
minClusterSize: config?.minClusterSize ?? 2,
|
|
47
|
+
maxClusters: config?.maxClusters ?? 10,
|
|
48
|
+
similarityThreshold: config?.similarityThreshold ?? 0.85,
|
|
49
|
+
diversityAware: config?.diversityAware ?? false,
|
|
50
|
+
maxIterations: config?.maxIterations ?? 50,
|
|
51
|
+
};
|
|
52
|
+
// Filter experiences with embeddings
|
|
53
|
+
const withEmbeddings = experiences.filter(exp => exp.embedding && exp.embedding.length > 0);
|
|
54
|
+
if (withEmbeddings.length === 0) {
|
|
55
|
+
this.logger.warn('[ClusteringEngine] No experiences with embeddings');
|
|
56
|
+
return [];
|
|
57
|
+
}
|
|
58
|
+
if (withEmbeddings.length < cfg.minClusterSize) {
|
|
59
|
+
this.logger.debug('[ClusteringEngine] Too few experiences for clustering', {
|
|
60
|
+
count: withEmbeddings.length,
|
|
61
|
+
minRequired: cfg.minClusterSize,
|
|
62
|
+
});
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
// Determine number of clusters (k)
|
|
66
|
+
const k = Math.min(cfg.maxClusters, Math.floor(withEmbeddings.length / cfg.minClusterSize));
|
|
67
|
+
if (k < 2) {
|
|
68
|
+
// Single cluster with all experiences
|
|
69
|
+
return [this.createCluster(withEmbeddings)];
|
|
70
|
+
}
|
|
71
|
+
// Run k-means clustering
|
|
72
|
+
let clusters = this.kMeans(withEmbeddings, k, cfg.maxIterations);
|
|
73
|
+
// Filter out small clusters
|
|
74
|
+
clusters = clusters.filter(c => c.size >= cfg.minClusterSize);
|
|
75
|
+
// Merge similar clusters if threshold is set
|
|
76
|
+
if (cfg.similarityThreshold > 0) {
|
|
77
|
+
clusters = this.mergeClusters(clusters, cfg.similarityThreshold);
|
|
78
|
+
}
|
|
79
|
+
// Apply diversity-aware selection if requested
|
|
80
|
+
if (cfg.diversityAware) {
|
|
81
|
+
clusters = this.applyDiversitySelection(clusters, cfg.maxClusters);
|
|
82
|
+
}
|
|
83
|
+
this.logger.info('[ClusteringEngine] Clustering complete', {
|
|
84
|
+
totalExperiences: withEmbeddings.length,
|
|
85
|
+
clustersCreated: clusters.length,
|
|
86
|
+
averageSize: clusters.reduce((sum, c) => sum + c.size, 0) / clusters.length,
|
|
87
|
+
});
|
|
88
|
+
return clusters;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Find k most similar clusters to a given embedding
|
|
92
|
+
*
|
|
93
|
+
* @param embedding - Query embedding
|
|
94
|
+
* @param clusters - Clusters to search
|
|
95
|
+
* @param k - Number of similar clusters to return. Default: 3
|
|
96
|
+
* @returns Top k similar clusters
|
|
97
|
+
*/
|
|
98
|
+
findSimilar(embedding, clusters, k = 3) {
|
|
99
|
+
if (clusters.length === 0)
|
|
100
|
+
return [];
|
|
101
|
+
// Calculate similarity to each cluster centroid
|
|
102
|
+
const similarities = clusters.map(cluster => ({
|
|
103
|
+
cluster,
|
|
104
|
+
similarity: this.calculateSimilarity(embedding, cluster.centroid),
|
|
105
|
+
}));
|
|
106
|
+
// Sort by similarity descending
|
|
107
|
+
similarities.sort((a, b) => b.similarity - a.similarity);
|
|
108
|
+
// Return top k
|
|
109
|
+
return similarities.slice(0, Math.min(k, similarities.length)).map(s => s.cluster);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Calculate cosine similarity between two vectors
|
|
113
|
+
*
|
|
114
|
+
* @param a - First vector
|
|
115
|
+
* @param b - Second vector
|
|
116
|
+
* @returns Cosine similarity (0-1)
|
|
117
|
+
*/
|
|
118
|
+
calculateSimilarity(a, b) {
|
|
119
|
+
if (a.length !== b.length) {
|
|
120
|
+
throw new Error(`Vector dimension mismatch: ${a.length} vs ${b.length}`);
|
|
121
|
+
}
|
|
122
|
+
if (a.length === 0)
|
|
123
|
+
return 0;
|
|
124
|
+
// Cosine similarity: (a · b) / (||a|| * ||b||)
|
|
125
|
+
let dotProduct = 0;
|
|
126
|
+
let magnitudeA = 0;
|
|
127
|
+
let magnitudeB = 0;
|
|
128
|
+
for (let i = 0; i < a.length; i++) {
|
|
129
|
+
dotProduct += a[i] * b[i];
|
|
130
|
+
magnitudeA += a[i] * a[i];
|
|
131
|
+
magnitudeB += b[i] * b[i];
|
|
132
|
+
}
|
|
133
|
+
magnitudeA = Math.sqrt(magnitudeA);
|
|
134
|
+
magnitudeB = Math.sqrt(magnitudeB);
|
|
135
|
+
if (magnitudeA === 0 || magnitudeB === 0)
|
|
136
|
+
return 0;
|
|
137
|
+
return dotProduct / (magnitudeA * magnitudeB);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Merge clusters that are above similarity threshold
|
|
141
|
+
*
|
|
142
|
+
* @param clusters - Clusters to merge
|
|
143
|
+
* @param threshold - Similarity threshold for merging (0-1)
|
|
144
|
+
* @returns Merged clusters
|
|
145
|
+
*/
|
|
146
|
+
mergeClusters(clusters, threshold) {
|
|
147
|
+
if (clusters.length <= 1)
|
|
148
|
+
return clusters;
|
|
149
|
+
const merged = [];
|
|
150
|
+
const processed = new Set();
|
|
151
|
+
for (const cluster of clusters) {
|
|
152
|
+
if (processed.has(cluster.id))
|
|
153
|
+
continue;
|
|
154
|
+
let currentCluster = cluster;
|
|
155
|
+
processed.add(cluster.id);
|
|
156
|
+
// Find similar clusters to merge
|
|
157
|
+
for (const other of clusters) {
|
|
158
|
+
if (processed.has(other.id))
|
|
159
|
+
continue;
|
|
160
|
+
const similarity = this.calculateSimilarity(currentCluster.centroid, other.centroid);
|
|
161
|
+
if (similarity >= threshold) {
|
|
162
|
+
// Merge other into current
|
|
163
|
+
const combinedMembers = [...currentCluster.members, ...other.members];
|
|
164
|
+
currentCluster = this.createCluster(combinedMembers);
|
|
165
|
+
processed.add(other.id);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
merged.push(currentCluster);
|
|
169
|
+
}
|
|
170
|
+
this.logger.debug('[ClusteringEngine] Merged clusters', {
|
|
171
|
+
before: clusters.length,
|
|
172
|
+
after: merged.length,
|
|
173
|
+
threshold,
|
|
174
|
+
});
|
|
175
|
+
return merged;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* K-means clustering algorithm (simplified implementation)
|
|
179
|
+
*
|
|
180
|
+
* @param experiences - Experiences with embeddings
|
|
181
|
+
* @param k - Number of clusters
|
|
182
|
+
* @param maxIterations - Maximum iterations
|
|
183
|
+
* @returns Array of clusters
|
|
184
|
+
*/
|
|
185
|
+
kMeans(experiences, k, maxIterations) {
|
|
186
|
+
// Initialize centroids with k-means++ for better initial placement
|
|
187
|
+
let centroids = this.initializeCentroidsKMeansPlusPlus(experiences, k);
|
|
188
|
+
let assignments = new Array(experiences.length).fill(0);
|
|
189
|
+
let converged = false;
|
|
190
|
+
let iteration = 0;
|
|
191
|
+
while (!converged && iteration < maxIterations) {
|
|
192
|
+
// Assignment step: assign each experience to nearest centroid
|
|
193
|
+
const newAssignments = experiences.map(exp => this.findNearestCentroid(exp.embedding, centroids));
|
|
194
|
+
// Check convergence
|
|
195
|
+
converged = newAssignments.every((a, i) => a === assignments[i]);
|
|
196
|
+
assignments = newAssignments;
|
|
197
|
+
if (converged)
|
|
198
|
+
break;
|
|
199
|
+
// Update step: recalculate centroids
|
|
200
|
+
const newCentroids = [];
|
|
201
|
+
for (let i = 0; i < k; i++) {
|
|
202
|
+
const clusterExperiences = experiences.filter((_, idx) => assignments[idx] === i);
|
|
203
|
+
if (clusterExperiences.length > 0) {
|
|
204
|
+
newCentroids.push(this.calculateCentroid(clusterExperiences));
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
// Keep old centroid if cluster is empty
|
|
208
|
+
newCentroids.push(centroids[i]);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
centroids = newCentroids;
|
|
212
|
+
iteration++;
|
|
213
|
+
}
|
|
214
|
+
// Create cluster objects
|
|
215
|
+
const clusters = [];
|
|
216
|
+
for (let i = 0; i < k; i++) {
|
|
217
|
+
const members = experiences.filter((_, idx) => assignments[idx] === i);
|
|
218
|
+
if (members.length > 0) {
|
|
219
|
+
clusters.push({
|
|
220
|
+
id: `cluster-${SecureRandom_1.SecureRandom.randomString(8, 'alphanumeric')}`,
|
|
221
|
+
centroid: centroids[i],
|
|
222
|
+
members,
|
|
223
|
+
size: members.length,
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
this.logger.debug('[ClusteringEngine] K-means completed', {
|
|
228
|
+
k,
|
|
229
|
+
iterations: iteration,
|
|
230
|
+
converged,
|
|
231
|
+
clustersCreated: clusters.length,
|
|
232
|
+
});
|
|
233
|
+
return clusters;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Initialize centroids using k-means++ algorithm
|
|
237
|
+
* This provides better initial centroid placement than random selection
|
|
238
|
+
*/
|
|
239
|
+
initializeCentroidsKMeansPlusPlus(experiences, k) {
|
|
240
|
+
const centroids = [];
|
|
241
|
+
// Choose first centroid randomly
|
|
242
|
+
const firstIdx = Math.floor(Math.random() * experiences.length);
|
|
243
|
+
centroids.push([...experiences[firstIdx].embedding]);
|
|
244
|
+
// Choose remaining centroids
|
|
245
|
+
for (let i = 1; i < k; i++) {
|
|
246
|
+
// Calculate distance to nearest centroid for each point
|
|
247
|
+
const distances = experiences.map(exp => {
|
|
248
|
+
const minDist = Math.min(...centroids.map(c => 1 - this.calculateSimilarity(exp.embedding, c)));
|
|
249
|
+
return minDist * minDist; // Square the distance
|
|
250
|
+
});
|
|
251
|
+
// Choose next centroid with probability proportional to distance
|
|
252
|
+
const totalDist = distances.reduce((sum, d) => sum + d, 0);
|
|
253
|
+
let threshold = Math.random() * totalDist;
|
|
254
|
+
let chosenIdx = 0;
|
|
255
|
+
for (let j = 0; j < distances.length; j++) {
|
|
256
|
+
threshold -= distances[j];
|
|
257
|
+
if (threshold <= 0) {
|
|
258
|
+
chosenIdx = j;
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
centroids.push([...experiences[chosenIdx].embedding]);
|
|
263
|
+
}
|
|
264
|
+
return centroids;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Find the nearest centroid for an embedding
|
|
268
|
+
*/
|
|
269
|
+
findNearestCentroid(embedding, centroids) {
|
|
270
|
+
let maxSimilarity = -1;
|
|
271
|
+
let nearestIdx = 0;
|
|
272
|
+
for (let i = 0; i < centroids.length; i++) {
|
|
273
|
+
const similarity = this.calculateSimilarity(embedding, centroids[i]);
|
|
274
|
+
if (similarity > maxSimilarity) {
|
|
275
|
+
maxSimilarity = similarity;
|
|
276
|
+
nearestIdx = i;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return nearestIdx;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Calculate the centroid (mean) of a group of experiences
|
|
283
|
+
*/
|
|
284
|
+
calculateCentroid(experiences) {
|
|
285
|
+
if (experiences.length === 0) {
|
|
286
|
+
throw new Error('Cannot calculate centroid of empty cluster');
|
|
287
|
+
}
|
|
288
|
+
const dimension = experiences[0].embedding.length;
|
|
289
|
+
const centroid = new Array(dimension).fill(0);
|
|
290
|
+
for (const exp of experiences) {
|
|
291
|
+
for (let i = 0; i < dimension; i++) {
|
|
292
|
+
centroid[i] += exp.embedding[i];
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// Average
|
|
296
|
+
for (let i = 0; i < dimension; i++) {
|
|
297
|
+
centroid[i] /= experiences.length;
|
|
298
|
+
}
|
|
299
|
+
// Normalize (important for cosine similarity)
|
|
300
|
+
const magnitude = Math.sqrt(centroid.reduce((sum, val) => sum + val * val, 0));
|
|
301
|
+
if (magnitude > 0) {
|
|
302
|
+
for (let i = 0; i < dimension; i++) {
|
|
303
|
+
centroid[i] /= magnitude;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return centroid;
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Create a cluster from a group of experiences
|
|
310
|
+
*/
|
|
311
|
+
createCluster(members) {
|
|
312
|
+
return {
|
|
313
|
+
id: `cluster-${SecureRandom_1.SecureRandom.randomString(8, 'alphanumeric')}`,
|
|
314
|
+
centroid: this.calculateCentroid(members),
|
|
315
|
+
members,
|
|
316
|
+
size: members.length,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Apply diversity-aware selection (MMR-style)
|
|
321
|
+
* Selects diverse clusters to maximize coverage
|
|
322
|
+
*/
|
|
323
|
+
applyDiversitySelection(clusters, maxClusters) {
|
|
324
|
+
if (clusters.length <= maxClusters)
|
|
325
|
+
return clusters;
|
|
326
|
+
const selected = [];
|
|
327
|
+
const remaining = [...clusters];
|
|
328
|
+
// Select first cluster (largest)
|
|
329
|
+
remaining.sort((a, b) => b.size - a.size);
|
|
330
|
+
selected.push(remaining.shift());
|
|
331
|
+
// Iteratively select most diverse remaining cluster
|
|
332
|
+
while (selected.length < maxClusters && remaining.length > 0) {
|
|
333
|
+
let maxMinSimilarity = -1;
|
|
334
|
+
let mostDiverseIdx = 0;
|
|
335
|
+
// Find cluster most different from selected clusters
|
|
336
|
+
for (let i = 0; i < remaining.length; i++) {
|
|
337
|
+
// Calculate minimum similarity to any selected cluster
|
|
338
|
+
const minSimilarity = Math.min(...selected.map(s => this.calculateSimilarity(remaining[i].centroid, s.centroid)));
|
|
339
|
+
// We want the cluster with maximum min-similarity (most different)
|
|
340
|
+
if (minSimilarity > maxMinSimilarity) {
|
|
341
|
+
maxMinSimilarity = minSimilarity;
|
|
342
|
+
mostDiverseIdx = i;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
selected.push(remaining.splice(mostDiverseIdx, 1)[0]);
|
|
346
|
+
}
|
|
347
|
+
this.logger.debug('[ClusteringEngine] Applied diversity selection', {
|
|
348
|
+
before: clusters.length,
|
|
349
|
+
after: selected.length,
|
|
350
|
+
});
|
|
351
|
+
return selected;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
exports.ClusteringEngine = ClusteringEngine;
|
|
355
|
+
exports.default = ClusteringEngine;
|
|
356
|
+
//# sourceMappingURL=ClusteringEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClusteringEngine.js","sourceRoot":"","sources":["../../../src/learning/synthesis/ClusteringEngine.ts"],"names":[],"mappings":"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"}
|