@pga-ai/core 0.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/README.md +278 -0
- package/dist/PGA.d.ts +156 -0
- package/dist/PGA.d.ts.map +1 -0
- package/dist/PGA.js +636 -0
- package/dist/PGA.js.map +1 -0
- package/dist/advanced-ai/ModelRouter.d.ts +82 -0
- package/dist/advanced-ai/ModelRouter.d.ts.map +1 -0
- package/dist/advanced-ai/ModelRouter.js +280 -0
- package/dist/advanced-ai/ModelRouter.js.map +1 -0
- package/dist/advanced-ai/ThinkingEngine.d.ts +50 -0
- package/dist/advanced-ai/ThinkingEngine.d.ts.map +1 -0
- package/dist/advanced-ai/ThinkingEngine.js +179 -0
- package/dist/advanced-ai/ThinkingEngine.js.map +1 -0
- package/dist/core/ContextMemory.d.ts +56 -0
- package/dist/core/ContextMemory.d.ts.map +1 -0
- package/dist/core/ContextMemory.js +253 -0
- package/dist/core/ContextMemory.js.map +1 -0
- package/dist/core/DNAProfile.d.ts +19 -0
- package/dist/core/DNAProfile.d.ts.map +1 -0
- package/dist/core/DNAProfile.js +141 -0
- package/dist/core/DNAProfile.js.map +1 -0
- package/dist/core/FitnessTracker.d.ts +13 -0
- package/dist/core/FitnessTracker.d.ts.map +1 -0
- package/dist/core/FitnessTracker.js +101 -0
- package/dist/core/FitnessTracker.js.map +1 -0
- package/dist/core/GenomeKernel.d.ts +57 -0
- package/dist/core/GenomeKernel.d.ts.map +1 -0
- package/dist/core/GenomeKernel.js +305 -0
- package/dist/core/GenomeKernel.js.map +1 -0
- package/dist/core/GenomeManager.d.ts +21 -0
- package/dist/core/GenomeManager.d.ts.map +1 -0
- package/dist/core/GenomeManager.js +123 -0
- package/dist/core/GenomeManager.js.map +1 -0
- package/dist/core/LearningAnnouncer.d.ts +16 -0
- package/dist/core/LearningAnnouncer.d.ts.map +1 -0
- package/dist/core/LearningAnnouncer.js +176 -0
- package/dist/core/LearningAnnouncer.js.map +1 -0
- package/dist/core/ProactiveSuggestions.d.ts +25 -0
- package/dist/core/ProactiveSuggestions.d.ts.map +1 -0
- package/dist/core/ProactiveSuggestions.js +238 -0
- package/dist/core/ProactiveSuggestions.js.map +1 -0
- package/dist/core/PromptAssembler.d.ts +12 -0
- package/dist/core/PromptAssembler.d.ts.map +1 -0
- package/dist/core/PromptAssembler.js +74 -0
- package/dist/core/PromptAssembler.js.map +1 -0
- package/dist/enterprise/AuthManager.d.ts +71 -0
- package/dist/enterprise/AuthManager.d.ts.map +1 -0
- package/dist/enterprise/AuthManager.js +216 -0
- package/dist/enterprise/AuthManager.js.map +1 -0
- package/dist/enterprise/RateLimiter.d.ts +48 -0
- package/dist/enterprise/RateLimiter.d.ts.map +1 -0
- package/dist/enterprise/RateLimiter.js +193 -0
- package/dist/enterprise/RateLimiter.js.map +1 -0
- package/dist/evaluation/BenchmarkSuites.d.ts +27 -0
- package/dist/evaluation/BenchmarkSuites.d.ts.map +1 -0
- package/dist/evaluation/BenchmarkSuites.js +69 -0
- package/dist/evaluation/BenchmarkSuites.js.map +1 -0
- package/dist/evaluation/CalibrationManager.d.ts +66 -0
- package/dist/evaluation/CalibrationManager.d.ts.map +1 -0
- package/dist/evaluation/CalibrationManager.js +117 -0
- package/dist/evaluation/CalibrationManager.js.map +1 -0
- package/dist/evaluation/Evaluator.d.ts +79 -0
- package/dist/evaluation/Evaluator.d.ts.map +1 -0
- package/dist/evaluation/Evaluator.js +359 -0
- package/dist/evaluation/Evaluator.js.map +1 -0
- package/dist/evaluation/EvolutionGuardrails.d.ts +29 -0
- package/dist/evaluation/EvolutionGuardrails.d.ts.map +1 -0
- package/dist/evaluation/EvolutionGuardrails.js +166 -0
- package/dist/evaluation/EvolutionGuardrails.js.map +1 -0
- package/dist/evaluation/SandboxSuites.d.ts +26 -0
- package/dist/evaluation/SandboxSuites.d.ts.map +1 -0
- package/dist/evaluation/SandboxSuites.js +252 -0
- package/dist/evaluation/SandboxSuites.js.map +1 -0
- package/dist/evaluation/SemanticJudge.d.ts +21 -0
- package/dist/evaluation/SemanticJudge.d.ts.map +1 -0
- package/dist/evaluation/SemanticJudge.js +139 -0
- package/dist/evaluation/SemanticJudge.js.map +1 -0
- package/dist/evaluation/fixtures/core-coding-v1.json +68 -0
- package/dist/evaluation/fixtures/core-general-v1.json +68 -0
- package/dist/evolution/CanaryDeployment.d.ts +77 -0
- package/dist/evolution/CanaryDeployment.d.ts.map +1 -0
- package/dist/evolution/CanaryDeployment.js +261 -0
- package/dist/evolution/CanaryDeployment.js.map +1 -0
- package/dist/evolution/DriftAnalyzer.d.ts +63 -0
- package/dist/evolution/DriftAnalyzer.d.ts.map +1 -0
- package/dist/evolution/DriftAnalyzer.js +283 -0
- package/dist/evolution/DriftAnalyzer.js.map +1 -0
- package/dist/evolution/FitnessCalculator.d.ts +47 -0
- package/dist/evolution/FitnessCalculator.d.ts.map +1 -0
- package/dist/evolution/FitnessCalculator.js +177 -0
- package/dist/evolution/FitnessCalculator.js.map +1 -0
- package/dist/evolution/MutationOperator.d.ts +76 -0
- package/dist/evolution/MutationOperator.d.ts.map +1 -0
- package/dist/evolution/MutationOperator.js +267 -0
- package/dist/evolution/MutationOperator.js.map +1 -0
- package/dist/evolution/PromotionGate.d.ts +45 -0
- package/dist/evolution/PromotionGate.d.ts.map +1 -0
- package/dist/evolution/PromotionGate.js +248 -0
- package/dist/evolution/PromotionGate.js.map +1 -0
- package/dist/evolution/boost/EvolutionBoostEngine.d.ts +69 -0
- package/dist/evolution/boost/EvolutionBoostEngine.d.ts.map +1 -0
- package/dist/evolution/boost/EvolutionBoostEngine.js +185 -0
- package/dist/evolution/boost/EvolutionBoostEngine.js.map +1 -0
- package/dist/evolution/boost/GeneticRecombinator.d.ts +26 -0
- package/dist/evolution/boost/GeneticRecombinator.d.ts.map +1 -0
- package/dist/evolution/boost/GeneticRecombinator.js +179 -0
- package/dist/evolution/boost/GeneticRecombinator.js.map +1 -0
- package/dist/evolution/boost/MetaEvolutionEngine.d.ts +48 -0
- package/dist/evolution/boost/MetaEvolutionEngine.d.ts.map +1 -0
- package/dist/evolution/boost/MetaEvolutionEngine.js +193 -0
- package/dist/evolution/boost/MetaEvolutionEngine.js.map +1 -0
- package/dist/evolution/boost/ParallelEvolutionEngine.d.ts +44 -0
- package/dist/evolution/boost/ParallelEvolutionEngine.d.ts.map +1 -0
- package/dist/evolution/boost/ParallelEvolutionEngine.js +135 -0
- package/dist/evolution/boost/ParallelEvolutionEngine.js.map +1 -0
- package/dist/evolution/boost/ParetoOptimizer.d.ts +42 -0
- package/dist/evolution/boost/ParetoOptimizer.d.ts.map +1 -0
- package/dist/evolution/boost/ParetoOptimizer.js +167 -0
- package/dist/evolution/boost/ParetoOptimizer.js.map +1 -0
- package/dist/evolution/boost/operators/BreakthroughOperator.d.ts +22 -0
- package/dist/evolution/boost/operators/BreakthroughOperator.d.ts.map +1 -0
- package/dist/evolution/boost/operators/BreakthroughOperator.js +217 -0
- package/dist/evolution/boost/operators/BreakthroughOperator.js.map +1 -0
- package/dist/evolution/boost/operators/CrossoverMutationOperator.d.ts +26 -0
- package/dist/evolution/boost/operators/CrossoverMutationOperator.d.ts.map +1 -0
- package/dist/evolution/boost/operators/CrossoverMutationOperator.js +160 -0
- package/dist/evolution/boost/operators/CrossoverMutationOperator.js.map +1 -0
- package/dist/evolution/boost/operators/PatternExtractionOperator.d.ts +24 -0
- package/dist/evolution/boost/operators/PatternExtractionOperator.d.ts.map +1 -0
- package/dist/evolution/boost/operators/PatternExtractionOperator.js +212 -0
- package/dist/evolution/boost/operators/PatternExtractionOperator.js.map +1 -0
- package/dist/evolution/boost/operators/SemanticRestructuringOperator.d.ts +19 -0
- package/dist/evolution/boost/operators/SemanticRestructuringOperator.d.ts.map +1 -0
- package/dist/evolution/boost/operators/SemanticRestructuringOperator.js +106 -0
- package/dist/evolution/boost/operators/SemanticRestructuringOperator.js.map +1 -0
- package/dist/gene-bank/CognitiveGene.d.ts +799 -0
- package/dist/gene-bank/CognitiveGene.d.ts.map +1 -0
- package/dist/gene-bank/CognitiveGene.js +128 -0
- package/dist/gene-bank/CognitiveGene.js.map +1 -0
- package/dist/gene-bank/GeneAdopter.d.ts +75 -0
- package/dist/gene-bank/GeneAdopter.d.ts.map +1 -0
- package/dist/gene-bank/GeneAdopter.js +271 -0
- package/dist/gene-bank/GeneAdopter.js.map +1 -0
- package/dist/gene-bank/GeneBank.d.ts +124 -0
- package/dist/gene-bank/GeneBank.d.ts.map +1 -0
- package/dist/gene-bank/GeneBank.js +261 -0
- package/dist/gene-bank/GeneBank.js.map +1 -0
- package/dist/gene-bank/GeneExtractor.d.ts +59 -0
- package/dist/gene-bank/GeneExtractor.d.ts.map +1 -0
- package/dist/gene-bank/GeneExtractor.js +311 -0
- package/dist/gene-bank/GeneExtractor.js.map +1 -0
- package/dist/gene-bank/GeneMatcher.d.ts +82 -0
- package/dist/gene-bank/GeneMatcher.d.ts.map +1 -0
- package/dist/gene-bank/GeneMatcher.js +215 -0
- package/dist/gene-bank/GeneMatcher.js.map +1 -0
- package/dist/gene-bank/PGAIntegration.d.ts +53 -0
- package/dist/gene-bank/PGAIntegration.d.ts.map +1 -0
- package/dist/gene-bank/PGAIntegration.js +139 -0
- package/dist/gene-bank/PGAIntegration.js.map +1 -0
- package/dist/gene-bank/SandboxTester.d.ts +92 -0
- package/dist/gene-bank/SandboxTester.d.ts.map +1 -0
- package/dist/gene-bank/SandboxTester.js +262 -0
- package/dist/gene-bank/SandboxTester.js.map +1 -0
- package/dist/gene-bank/adapters/InMemoryGeneStorage.d.ts +21 -0
- package/dist/gene-bank/adapters/InMemoryGeneStorage.d.ts.map +1 -0
- package/dist/gene-bank/adapters/InMemoryGeneStorage.js +115 -0
- package/dist/gene-bank/adapters/InMemoryGeneStorage.js.map +1 -0
- package/dist/gene-bank/adapters/PostgresGeneStorage.d.ts +21 -0
- package/dist/gene-bank/adapters/PostgresGeneStorage.d.ts.map +1 -0
- package/dist/gene-bank/adapters/PostgresGeneStorage.js +272 -0
- package/dist/gene-bank/adapters/PostgresGeneStorage.js.map +1 -0
- package/dist/gene-bank/index.d.ts +7 -0
- package/dist/gene-bank/index.d.ts.map +1 -0
- package/dist/gene-bank/index.js +7 -0
- package/dist/gene-bank/index.js.map +1 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces/LLMAdapter.d.ts +31 -0
- package/dist/interfaces/LLMAdapter.d.ts.map +1 -0
- package/dist/interfaces/LLMAdapter.js +2 -0
- package/dist/interfaces/LLMAdapter.js.map +1 -0
- package/dist/interfaces/StorageAdapter.d.ts +49 -0
- package/dist/interfaces/StorageAdapter.d.ts.map +1 -0
- package/dist/interfaces/StorageAdapter.js +2 -0
- package/dist/interfaces/StorageAdapter.js.map +1 -0
- package/dist/memory/LayeredMemory.d.ts +112 -0
- package/dist/memory/LayeredMemory.d.ts.map +1 -0
- package/dist/memory/LayeredMemory.js +405 -0
- package/dist/memory/LayeredMemory.js.map +1 -0
- package/dist/memory-compaction/MemoryCompactor.d.ts +18 -0
- package/dist/memory-compaction/MemoryCompactor.d.ts.map +1 -0
- package/dist/memory-compaction/MemoryCompactor.js +156 -0
- package/dist/memory-compaction/MemoryCompactor.js.map +1 -0
- package/dist/memory-compaction/index.d.ts +6 -0
- package/dist/memory-compaction/index.d.ts.map +1 -0
- package/dist/memory-compaction/index.js +5 -0
- package/dist/memory-compaction/index.js.map +1 -0
- package/dist/memory-compaction/strategies/BaseStrategy.d.ts +9 -0
- package/dist/memory-compaction/strategies/BaseStrategy.d.ts.map +1 -0
- package/dist/memory-compaction/strategies/BaseStrategy.js +50 -0
- package/dist/memory-compaction/strategies/BaseStrategy.js.map +1 -0
- package/dist/memory-compaction/strategies/ImportanceBasedStrategy.d.ts +9 -0
- package/dist/memory-compaction/strategies/ImportanceBasedStrategy.d.ts.map +1 -0
- package/dist/memory-compaction/strategies/ImportanceBasedStrategy.js +101 -0
- package/dist/memory-compaction/strategies/ImportanceBasedStrategy.js.map +1 -0
- package/dist/memory-compaction/strategies/SlidingWindowStrategy.d.ts +9 -0
- package/dist/memory-compaction/strategies/SlidingWindowStrategy.d.ts.map +1 -0
- package/dist/memory-compaction/strategies/SlidingWindowStrategy.js +87 -0
- package/dist/memory-compaction/strategies/SlidingWindowStrategy.js.map +1 -0
- package/dist/memory-compaction/types.d.ts +78 -0
- package/dist/memory-compaction/types.d.ts.map +1 -0
- package/dist/memory-compaction/types.js +2 -0
- package/dist/memory-compaction/types.js.map +1 -0
- package/dist/monitoring/AlertWebhooks.d.ts +57 -0
- package/dist/monitoring/AlertWebhooks.d.ts.map +1 -0
- package/dist/monitoring/AlertWebhooks.js +205 -0
- package/dist/monitoring/AlertWebhooks.js.map +1 -0
- package/dist/monitoring/MetricsCollector.d.ts +120 -0
- package/dist/monitoring/MetricsCollector.d.ts.map +1 -0
- package/dist/monitoring/MetricsCollector.js +274 -0
- package/dist/monitoring/MetricsCollector.js.map +1 -0
- package/dist/monitoring/MonitoringDashboard.d.ts +38 -0
- package/dist/monitoring/MonitoringDashboard.d.ts.map +1 -0
- package/dist/monitoring/MonitoringDashboard.js +271 -0
- package/dist/monitoring/MonitoringDashboard.js.map +1 -0
- package/dist/plugins/PluginManager.d.ts +61 -0
- package/dist/plugins/PluginManager.d.ts.map +1 -0
- package/dist/plugins/PluginManager.js +154 -0
- package/dist/plugins/PluginManager.js.map +1 -0
- package/dist/rag/RAGEngine.d.ts +54 -0
- package/dist/rag/RAGEngine.d.ts.map +1 -0
- package/dist/rag/RAGEngine.js +162 -0
- package/dist/rag/RAGEngine.js.map +1 -0
- package/dist/rag/VectorStoreAdapter.d.ts +40 -0
- package/dist/rag/VectorStoreAdapter.d.ts.map +1 -0
- package/dist/rag/VectorStoreAdapter.js +106 -0
- package/dist/rag/VectorStoreAdapter.js.map +1 -0
- package/dist/realtime/EventEmitter.d.ts +86 -0
- package/dist/realtime/EventEmitter.d.ts.map +1 -0
- package/dist/realtime/EventEmitter.js +173 -0
- package/dist/realtime/EventEmitter.js.map +1 -0
- package/dist/realtime/StreamingManager.d.ts +26 -0
- package/dist/realtime/StreamingManager.d.ts.map +1 -0
- package/dist/realtime/StreamingManager.js +175 -0
- package/dist/realtime/StreamingManager.js.map +1 -0
- package/dist/reasoning/ReasoningEngine.d.ts +57 -0
- package/dist/reasoning/ReasoningEngine.d.ts.map +1 -0
- package/dist/reasoning/ReasoningEngine.js +316 -0
- package/dist/reasoning/ReasoningEngine.js.map +1 -0
- package/dist/resilience/CircuitBreaker.d.ts +41 -0
- package/dist/resilience/CircuitBreaker.d.ts.map +1 -0
- package/dist/resilience/CircuitBreaker.js +108 -0
- package/dist/resilience/CircuitBreaker.js.map +1 -0
- package/dist/resilience/RetryManager.d.ts +14 -0
- package/dist/resilience/RetryManager.d.ts.map +1 -0
- package/dist/resilience/RetryManager.js +35 -0
- package/dist/resilience/RetryManager.js.map +1 -0
- package/dist/types/GenomeV2.d.ts +226 -0
- package/dist/types/GenomeV2.d.ts.map +1 -0
- package/dist/types/GenomeV2.js +2 -0
- package/dist/types/GenomeV2.js.map +1 -0
- package/dist/types/index.d.ts +205 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
export class DriftAnalyzer {
|
|
2
|
+
config;
|
|
3
|
+
history = [];
|
|
4
|
+
maxHistorySize = 1000;
|
|
5
|
+
constructor(config = {}) {
|
|
6
|
+
this.config = {
|
|
7
|
+
successRateThreshold: config.successRateThreshold ?? 0.1,
|
|
8
|
+
tokenEfficiencyThreshold: config.tokenEfficiencyThreshold ?? 0.15,
|
|
9
|
+
latencyThreshold: config.latencyThreshold ?? 0.2,
|
|
10
|
+
costThreshold: config.costThreshold ?? 0.25,
|
|
11
|
+
interventionThreshold: config.interventionThreshold ?? 0.1,
|
|
12
|
+
comparisonWindow: config.comparisonWindow ?? 100,
|
|
13
|
+
baselineWindow: config.baselineWindow ?? 500,
|
|
14
|
+
minSampleSize: config.minSampleSize ?? 20,
|
|
15
|
+
confidenceThreshold: config.confidenceThreshold ?? 0.8,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
recordFitness(fitness) {
|
|
19
|
+
this.history.push({
|
|
20
|
+
timestamp: new Date(),
|
|
21
|
+
fitness: { ...fitness },
|
|
22
|
+
});
|
|
23
|
+
if (this.history.length > this.maxHistorySize) {
|
|
24
|
+
this.history.shift();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
analyzeDrift() {
|
|
28
|
+
if (this.history.length < this.config.minSampleSize) {
|
|
29
|
+
return {
|
|
30
|
+
isDrifting: false,
|
|
31
|
+
overallSeverity: 'minor',
|
|
32
|
+
signals: [],
|
|
33
|
+
recommendedActions: ['Collect more data (need at least 20 samples)'],
|
|
34
|
+
confidence: 0,
|
|
35
|
+
timestamp: new Date(),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const recent = this.getRecentWindow();
|
|
39
|
+
const baseline = this.getBaselineWindow();
|
|
40
|
+
const recentAvg = this.computeAverageFitness(recent);
|
|
41
|
+
const baselineAvg = this.computeAverageFitness(baseline);
|
|
42
|
+
const signals = [];
|
|
43
|
+
signals.push(...this.checkSuccessRateDrift(recentAvg, baselineAvg), ...this.checkTokenEfficiencyDrift(recentAvg, baselineAvg), ...this.checkLatencyDrift(recentAvg, baselineAvg), ...this.checkCostDrift(recentAvg, baselineAvg), ...this.checkInterventionDrift(recentAvg, baselineAvg));
|
|
44
|
+
const significantSignals = signals.filter((s) => s.confidence >= this.config.confidenceThreshold);
|
|
45
|
+
const overallSeverity = this.computeOverallSeverity(significantSignals);
|
|
46
|
+
const recommendedActions = this.generateRecommendations(significantSignals);
|
|
47
|
+
const confidence = significantSignals.length > 0
|
|
48
|
+
? significantSignals.reduce((sum, s) => sum + s.confidence, 0) /
|
|
49
|
+
significantSignals.length
|
|
50
|
+
: 0;
|
|
51
|
+
return {
|
|
52
|
+
isDrifting: significantSignals.length > 0,
|
|
53
|
+
overallSeverity,
|
|
54
|
+
signals: significantSignals,
|
|
55
|
+
recommendedActions,
|
|
56
|
+
confidence,
|
|
57
|
+
timestamp: new Date(),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
checkSuccessRateDrift(recent, baseline) {
|
|
61
|
+
const drop = baseline.successRate - recent.successRate;
|
|
62
|
+
const percentageChange = (drop / baseline.successRate) * 100;
|
|
63
|
+
if (drop > this.config.successRateThreshold) {
|
|
64
|
+
return [
|
|
65
|
+
{
|
|
66
|
+
type: 'success-rate-decline',
|
|
67
|
+
severity: this.computeSeverity(percentageChange),
|
|
68
|
+
metric: 'successRate',
|
|
69
|
+
currentValue: recent.successRate,
|
|
70
|
+
baselineValue: baseline.successRate,
|
|
71
|
+
percentageChange,
|
|
72
|
+
confidence: this.computeConfidence(recent.sampleSize, baseline.sampleSize),
|
|
73
|
+
timestamp: new Date(),
|
|
74
|
+
recommendation: 'Success rate declining. Consider reinforcing successful patterns or ' +
|
|
75
|
+
'rolling back recent mutations.',
|
|
76
|
+
},
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
checkTokenEfficiencyDrift(recent, baseline) {
|
|
82
|
+
const drop = baseline.tokenEfficiency - recent.tokenEfficiency;
|
|
83
|
+
const percentageChange = (drop / baseline.tokenEfficiency) * 100;
|
|
84
|
+
if (drop > this.config.tokenEfficiencyThreshold) {
|
|
85
|
+
return [
|
|
86
|
+
{
|
|
87
|
+
type: 'efficiency-decline',
|
|
88
|
+
severity: this.computeSeverity(percentageChange),
|
|
89
|
+
metric: 'tokenEfficiency',
|
|
90
|
+
currentValue: recent.tokenEfficiency,
|
|
91
|
+
baselineValue: baseline.tokenEfficiency,
|
|
92
|
+
percentageChange,
|
|
93
|
+
confidence: this.computeConfidence(recent.sampleSize, baseline.sampleSize),
|
|
94
|
+
timestamp: new Date(),
|
|
95
|
+
recommendation: 'Token usage increasing. Apply compress_instructions mutation ' +
|
|
96
|
+
'or reorder_constraints to improve efficiency.',
|
|
97
|
+
},
|
|
98
|
+
];
|
|
99
|
+
}
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
checkLatencyDrift(recent, baseline) {
|
|
103
|
+
const increase = recent.latency - baseline.latency;
|
|
104
|
+
const percentageChange = (increase / baseline.latency) * 100;
|
|
105
|
+
if (increase / baseline.latency > this.config.latencyThreshold) {
|
|
106
|
+
return [
|
|
107
|
+
{
|
|
108
|
+
type: 'latency-increase',
|
|
109
|
+
severity: this.computeSeverity(percentageChange),
|
|
110
|
+
metric: 'latency',
|
|
111
|
+
currentValue: recent.latency,
|
|
112
|
+
baselineValue: baseline.latency,
|
|
113
|
+
percentageChange,
|
|
114
|
+
confidence: this.computeConfidence(recent.sampleSize, baseline.sampleSize),
|
|
115
|
+
timestamp: new Date(),
|
|
116
|
+
recommendation: 'Response time increasing. Check for bloated prompts or ' +
|
|
117
|
+
'inefficient tool usage patterns.',
|
|
118
|
+
},
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
return [];
|
|
122
|
+
}
|
|
123
|
+
checkCostDrift(recent, baseline) {
|
|
124
|
+
const increase = recent.costPerSuccess - baseline.costPerSuccess;
|
|
125
|
+
const percentageChange = (increase / baseline.costPerSuccess) * 100;
|
|
126
|
+
if (increase / baseline.costPerSuccess > this.config.costThreshold) {
|
|
127
|
+
return [
|
|
128
|
+
{
|
|
129
|
+
type: 'cost-increase',
|
|
130
|
+
severity: this.computeSeverity(percentageChange),
|
|
131
|
+
metric: 'costPerSuccess',
|
|
132
|
+
currentValue: recent.costPerSuccess,
|
|
133
|
+
baselineValue: baseline.costPerSuccess,
|
|
134
|
+
percentageChange,
|
|
135
|
+
confidence: this.computeConfidence(recent.sampleSize, baseline.sampleSize),
|
|
136
|
+
timestamp: new Date(),
|
|
137
|
+
recommendation: 'Cost per success increasing. Apply cognitive compression ' +
|
|
138
|
+
'mutations to reduce token usage.',
|
|
139
|
+
},
|
|
140
|
+
];
|
|
141
|
+
}
|
|
142
|
+
return [];
|
|
143
|
+
}
|
|
144
|
+
checkInterventionDrift(recent, baseline) {
|
|
145
|
+
const increase = recent.interventionRate - baseline.interventionRate;
|
|
146
|
+
const percentageChange = (increase / (baseline.interventionRate || 0.01)) * 100;
|
|
147
|
+
if (increase > this.config.interventionThreshold) {
|
|
148
|
+
return [
|
|
149
|
+
{
|
|
150
|
+
type: 'intervention-increase',
|
|
151
|
+
severity: this.computeSeverity(percentageChange),
|
|
152
|
+
metric: 'interventionRate',
|
|
153
|
+
currentValue: recent.interventionRate,
|
|
154
|
+
baselineValue: baseline.interventionRate,
|
|
155
|
+
percentageChange,
|
|
156
|
+
confidence: this.computeConfidence(recent.sampleSize, baseline.sampleSize),
|
|
157
|
+
timestamp: new Date(),
|
|
158
|
+
recommendation: 'More human corrections needed. Quality may be declining. ' +
|
|
159
|
+
'Consider safety_reinforcement mutation.',
|
|
160
|
+
},
|
|
161
|
+
];
|
|
162
|
+
}
|
|
163
|
+
return [];
|
|
164
|
+
}
|
|
165
|
+
getRecentWindow() {
|
|
166
|
+
return this.history.slice(-this.config.comparisonWindow);
|
|
167
|
+
}
|
|
168
|
+
getBaselineWindow() {
|
|
169
|
+
if (this.history.length <= this.config.comparisonWindow) {
|
|
170
|
+
return this.history;
|
|
171
|
+
}
|
|
172
|
+
const startIdx = Math.max(0, this.history.length - this.config.comparisonWindow - this.config.baselineWindow);
|
|
173
|
+
const endIdx = this.history.length - this.config.comparisonWindow;
|
|
174
|
+
return this.history.slice(startIdx, endIdx);
|
|
175
|
+
}
|
|
176
|
+
computeAverageFitness(points) {
|
|
177
|
+
if (points.length === 0) {
|
|
178
|
+
return this.createZeroFitness();
|
|
179
|
+
}
|
|
180
|
+
const sum = points.reduce((acc, point) => ({
|
|
181
|
+
quality: acc.quality + point.fitness.quality,
|
|
182
|
+
successRate: acc.successRate + point.fitness.successRate,
|
|
183
|
+
tokenEfficiency: acc.tokenEfficiency + point.fitness.tokenEfficiency,
|
|
184
|
+
latency: acc.latency + point.fitness.latency,
|
|
185
|
+
costPerSuccess: acc.costPerSuccess + point.fitness.costPerSuccess,
|
|
186
|
+
interventionRate: acc.interventionRate + point.fitness.interventionRate,
|
|
187
|
+
composite: acc.composite + point.fitness.composite,
|
|
188
|
+
}), {
|
|
189
|
+
quality: 0,
|
|
190
|
+
successRate: 0,
|
|
191
|
+
tokenEfficiency: 0,
|
|
192
|
+
latency: 0,
|
|
193
|
+
costPerSuccess: 0,
|
|
194
|
+
interventionRate: 0,
|
|
195
|
+
composite: 0,
|
|
196
|
+
});
|
|
197
|
+
const n = points.length;
|
|
198
|
+
return {
|
|
199
|
+
quality: sum.quality / n,
|
|
200
|
+
successRate: sum.successRate / n,
|
|
201
|
+
tokenEfficiency: sum.tokenEfficiency / n,
|
|
202
|
+
latency: sum.latency / n,
|
|
203
|
+
costPerSuccess: sum.costPerSuccess / n,
|
|
204
|
+
interventionRate: sum.interventionRate / n,
|
|
205
|
+
composite: sum.composite / n,
|
|
206
|
+
sampleSize: n,
|
|
207
|
+
lastUpdated: new Date(),
|
|
208
|
+
confidence: this.computeConfidence(n, n),
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
createZeroFitness() {
|
|
212
|
+
return {
|
|
213
|
+
quality: 0,
|
|
214
|
+
successRate: 0,
|
|
215
|
+
tokenEfficiency: 0,
|
|
216
|
+
latency: 0,
|
|
217
|
+
costPerSuccess: 0,
|
|
218
|
+
interventionRate: 0,
|
|
219
|
+
composite: 0,
|
|
220
|
+
sampleSize: 0,
|
|
221
|
+
lastUpdated: new Date(),
|
|
222
|
+
confidence: 0,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
computeSeverity(percentageChange) {
|
|
226
|
+
const absChange = Math.abs(percentageChange);
|
|
227
|
+
if (absChange >= 50)
|
|
228
|
+
return 'critical';
|
|
229
|
+
if (absChange >= 30)
|
|
230
|
+
return 'severe';
|
|
231
|
+
if (absChange >= 15)
|
|
232
|
+
return 'moderate';
|
|
233
|
+
return 'minor';
|
|
234
|
+
}
|
|
235
|
+
computeConfidence(recentSize, baselineSize) {
|
|
236
|
+
const minSize = Math.min(recentSize, baselineSize);
|
|
237
|
+
if (minSize < 10)
|
|
238
|
+
return 0.5;
|
|
239
|
+
if (minSize < 20)
|
|
240
|
+
return 0.6;
|
|
241
|
+
if (minSize < 50)
|
|
242
|
+
return 0.7;
|
|
243
|
+
if (minSize < 100)
|
|
244
|
+
return 0.8;
|
|
245
|
+
if (minSize < 200)
|
|
246
|
+
return 0.9;
|
|
247
|
+
return 0.95;
|
|
248
|
+
}
|
|
249
|
+
computeOverallSeverity(signals) {
|
|
250
|
+
if (signals.length === 0)
|
|
251
|
+
return 'minor';
|
|
252
|
+
const severities = signals.map((s) => s.severity);
|
|
253
|
+
if (severities.includes('critical'))
|
|
254
|
+
return 'critical';
|
|
255
|
+
if (severities.includes('severe'))
|
|
256
|
+
return 'severe';
|
|
257
|
+
if (severities.includes('moderate'))
|
|
258
|
+
return 'moderate';
|
|
259
|
+
return 'minor';
|
|
260
|
+
}
|
|
261
|
+
generateRecommendations(signals) {
|
|
262
|
+
const recommendations = [];
|
|
263
|
+
const uniqueRecs = new Set(signals.map((s) => s.recommendation));
|
|
264
|
+
recommendations.push(...uniqueRecs);
|
|
265
|
+
if (signals.length > 2) {
|
|
266
|
+
recommendations.push('Multiple metrics drifting. Consider full genome evaluation and possible rollback.');
|
|
267
|
+
}
|
|
268
|
+
if (signals.some((s) => s.severity === 'critical')) {
|
|
269
|
+
recommendations.push('CRITICAL: Immediate action required. Consider emergency rollback.');
|
|
270
|
+
}
|
|
271
|
+
return recommendations;
|
|
272
|
+
}
|
|
273
|
+
getHistory() {
|
|
274
|
+
return [...this.history];
|
|
275
|
+
}
|
|
276
|
+
getHistorySize() {
|
|
277
|
+
return this.history.length;
|
|
278
|
+
}
|
|
279
|
+
clearHistory() {
|
|
280
|
+
this.history = [];
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
//# sourceMappingURL=DriftAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DriftAnalyzer.js","sourceRoot":"","sources":["../../src/evolution/DriftAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { FitnessVector, FitnessWeights } from '../types/GenomeV2.js';
|
|
2
|
+
export interface InteractionData {
|
|
3
|
+
success: boolean;
|
|
4
|
+
quality: number;
|
|
5
|
+
inputTokens: number;
|
|
6
|
+
outputTokens: number;
|
|
7
|
+
latency: number;
|
|
8
|
+
model: string;
|
|
9
|
+
interventionNeeded: boolean;
|
|
10
|
+
timestamp: Date;
|
|
11
|
+
}
|
|
12
|
+
interface ModelPricing {
|
|
13
|
+
inputCostPer1M: number;
|
|
14
|
+
outputCostPer1M: number;
|
|
15
|
+
}
|
|
16
|
+
export interface FitnessCalculatorConfig {
|
|
17
|
+
weights?: FitnessWeights;
|
|
18
|
+
worstLatency?: number;
|
|
19
|
+
bestLatency?: number;
|
|
20
|
+
worstCost?: number;
|
|
21
|
+
bestCost?: number;
|
|
22
|
+
modelPricing?: Record<string, ModelPricing>;
|
|
23
|
+
}
|
|
24
|
+
export declare class FitnessCalculator {
|
|
25
|
+
private config;
|
|
26
|
+
constructor(config?: FitnessCalculatorConfig);
|
|
27
|
+
computeFitness(interactions: InteractionData[]): FitnessVector;
|
|
28
|
+
private computeQuality;
|
|
29
|
+
private computeSuccessRate;
|
|
30
|
+
private computeTokenEfficiency;
|
|
31
|
+
private computeAverageLatency;
|
|
32
|
+
private computeCostPerSuccess;
|
|
33
|
+
private computeInterventionRate;
|
|
34
|
+
private normalizeLatency;
|
|
35
|
+
private normalizeCost;
|
|
36
|
+
private computeComposite;
|
|
37
|
+
private computeConfidence;
|
|
38
|
+
private createZeroFitness;
|
|
39
|
+
compareFitness(f1: FitnessVector, f2: FitnessVector): number;
|
|
40
|
+
computeImprovement(baseline: FitnessVector, current: FitnessVector): number;
|
|
41
|
+
meetsThreshold(fitness: FitnessVector, baseline: FitnessVector, threshold: number): boolean;
|
|
42
|
+
getWeights(): FitnessWeights;
|
|
43
|
+
setWeights(weights: Partial<FitnessWeights>): void;
|
|
44
|
+
addModelPricing(model: string, pricing: ModelPricing): void;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=FitnessCalculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FitnessCalculator.d.ts","sourceRoot":"","sources":["../../src/evolution/FitnessCalculator.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI1E,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,kBAAkB,EAAE,OAAO,CAAC;IAC5B,SAAS,EAAE,IAAI,CAAC;CACnB;AAID,UAAU,YAAY;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CAC3B;AAcD,MAAM,WAAW,uBAAuB;IAEpC,OAAO,CAAC,EAAE,cAAc,CAAC;IAGzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC/C;AASD,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,MAAM,CAAoC;gBAEtC,MAAM,GAAE,uBAA4B;IA0BzC,cAAc,CAAC,YAAY,EAAE,eAAe,EAAE,GAAG,aAAa;IAiDrE,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,sBAAsB;IA0B9B,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,qBAAqB;IA+B7B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;IA4BxB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,iBAAiB;IAoBlB,cAAc,CAAC,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,aAAa,GAAG,MAAM;IAO5D,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,MAAM;IAQ3E,cAAc,CACjB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,MAAM,GAClB,OAAO;IAOH,UAAU,IAAI,cAAc;IAI5B,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IAIlD,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;CAGrE"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
const DEFAULT_PRICING = {
|
|
2
|
+
'claude-sonnet-4.5': { inputCostPer1M: 3.0, outputCostPer1M: 15.0 },
|
|
3
|
+
'claude-opus-4': { inputCostPer1M: 15.0, outputCostPer1M: 75.0 },
|
|
4
|
+
'claude-haiku-3': { inputCostPer1M: 0.25, outputCostPer1M: 1.25 },
|
|
5
|
+
'gpt-4-turbo-preview': { inputCostPer1M: 10.0, outputCostPer1M: 30.0 },
|
|
6
|
+
'gpt-4': { inputCostPer1M: 30.0, outputCostPer1M: 60.0 },
|
|
7
|
+
'gpt-3.5-turbo': { inputCostPer1M: 0.5, outputCostPer1M: 1.5 },
|
|
8
|
+
};
|
|
9
|
+
export class FitnessCalculator {
|
|
10
|
+
config;
|
|
11
|
+
constructor(config = {}) {
|
|
12
|
+
this.config = {
|
|
13
|
+
weights: config.weights ?? {
|
|
14
|
+
quality: 0.3,
|
|
15
|
+
successRate: 0.25,
|
|
16
|
+
tokenEfficiency: 0.2,
|
|
17
|
+
latency: 0.1,
|
|
18
|
+
costPerSuccess: 0.1,
|
|
19
|
+
interventionRate: 0.05,
|
|
20
|
+
},
|
|
21
|
+
worstLatency: config.worstLatency ?? 5000,
|
|
22
|
+
bestLatency: config.bestLatency ?? 100,
|
|
23
|
+
worstCost: config.worstCost ?? 1.0,
|
|
24
|
+
bestCost: config.bestCost ?? 0.001,
|
|
25
|
+
modelPricing: config.modelPricing ?? DEFAULT_PRICING,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
computeFitness(interactions) {
|
|
29
|
+
if (interactions.length === 0) {
|
|
30
|
+
return this.createZeroFitness();
|
|
31
|
+
}
|
|
32
|
+
const quality = this.computeQuality(interactions);
|
|
33
|
+
const successRate = this.computeSuccessRate(interactions);
|
|
34
|
+
const tokenEfficiency = this.computeTokenEfficiency(interactions);
|
|
35
|
+
const latency = this.computeAverageLatency(interactions);
|
|
36
|
+
const costPerSuccess = this.computeCostPerSuccess(interactions);
|
|
37
|
+
const interventionRate = this.computeInterventionRate(interactions);
|
|
38
|
+
const normalizedLatency = this.normalizeLatency(latency);
|
|
39
|
+
const normalizedCost = this.normalizeCost(costPerSuccess);
|
|
40
|
+
const composite = this.computeComposite({
|
|
41
|
+
quality,
|
|
42
|
+
successRate,
|
|
43
|
+
tokenEfficiency,
|
|
44
|
+
latency: normalizedLatency,
|
|
45
|
+
costPerSuccess: normalizedCost,
|
|
46
|
+
interventionRate: 1 - interventionRate,
|
|
47
|
+
});
|
|
48
|
+
const confidence = this.computeConfidence(interactions.length);
|
|
49
|
+
return {
|
|
50
|
+
quality,
|
|
51
|
+
successRate,
|
|
52
|
+
tokenEfficiency,
|
|
53
|
+
latency,
|
|
54
|
+
costPerSuccess,
|
|
55
|
+
interventionRate,
|
|
56
|
+
composite,
|
|
57
|
+
sampleSize: interactions.length,
|
|
58
|
+
lastUpdated: new Date(),
|
|
59
|
+
confidence,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
computeQuality(interactions) {
|
|
63
|
+
const sum = interactions.reduce((acc, i) => acc + i.quality, 0);
|
|
64
|
+
return sum / interactions.length;
|
|
65
|
+
}
|
|
66
|
+
computeSuccessRate(interactions) {
|
|
67
|
+
const successful = interactions.filter((i) => i.success).length;
|
|
68
|
+
return successful / interactions.length;
|
|
69
|
+
}
|
|
70
|
+
computeTokenEfficiency(interactions) {
|
|
71
|
+
const successful = interactions.filter((i) => i.success);
|
|
72
|
+
if (successful.length === 0) {
|
|
73
|
+
return 0;
|
|
74
|
+
}
|
|
75
|
+
const totalTokens = successful.reduce((acc, i) => acc + i.inputTokens + i.outputTokens, 0);
|
|
76
|
+
const avgTokensPerSuccess = totalTokens / successful.length;
|
|
77
|
+
const worstTokens = 5000;
|
|
78
|
+
const bestTokens = 500;
|
|
79
|
+
const normalized = 1 - (avgTokensPerSuccess - bestTokens) / (worstTokens - bestTokens);
|
|
80
|
+
return Math.max(0, Math.min(1, normalized));
|
|
81
|
+
}
|
|
82
|
+
computeAverageLatency(interactions) {
|
|
83
|
+
const sum = interactions.reduce((acc, i) => acc + i.latency, 0);
|
|
84
|
+
return sum / interactions.length;
|
|
85
|
+
}
|
|
86
|
+
computeCostPerSuccess(interactions) {
|
|
87
|
+
const successful = interactions.filter((i) => i.success);
|
|
88
|
+
if (successful.length === 0) {
|
|
89
|
+
return 0;
|
|
90
|
+
}
|
|
91
|
+
let totalCost = 0;
|
|
92
|
+
for (const interaction of successful) {
|
|
93
|
+
const pricing = this.config.modelPricing[interaction.model];
|
|
94
|
+
if (!pricing) {
|
|
95
|
+
console.warn(`No pricing found for model: ${interaction.model}`);
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
const inputCost = (interaction.inputTokens / 1_000_000) * pricing.inputCostPer1M;
|
|
99
|
+
const outputCost = (interaction.outputTokens / 1_000_000) * pricing.outputCostPer1M;
|
|
100
|
+
totalCost += inputCost + outputCost;
|
|
101
|
+
}
|
|
102
|
+
return totalCost / successful.length;
|
|
103
|
+
}
|
|
104
|
+
computeInterventionRate(interactions) {
|
|
105
|
+
const interventions = interactions.filter((i) => i.interventionNeeded).length;
|
|
106
|
+
return interventions / interactions.length;
|
|
107
|
+
}
|
|
108
|
+
normalizeLatency(latency) {
|
|
109
|
+
const { worstLatency, bestLatency } = this.config;
|
|
110
|
+
const normalized = 1 - (latency - bestLatency) / (worstLatency - bestLatency);
|
|
111
|
+
return Math.max(0, Math.min(1, normalized));
|
|
112
|
+
}
|
|
113
|
+
normalizeCost(cost) {
|
|
114
|
+
const { worstCost, bestCost } = this.config;
|
|
115
|
+
const normalized = 1 - (cost - bestCost) / (worstCost - bestCost);
|
|
116
|
+
return Math.max(0, Math.min(1, normalized));
|
|
117
|
+
}
|
|
118
|
+
computeComposite(normalized) {
|
|
119
|
+
const weights = this.config.weights;
|
|
120
|
+
const composite = normalized.quality * weights.quality +
|
|
121
|
+
normalized.successRate * weights.successRate +
|
|
122
|
+
normalized.tokenEfficiency * weights.tokenEfficiency +
|
|
123
|
+
normalized.latency * weights.latency +
|
|
124
|
+
normalized.costPerSuccess * weights.costPerSuccess +
|
|
125
|
+
normalized.interventionRate * weights.interventionRate;
|
|
126
|
+
return composite;
|
|
127
|
+
}
|
|
128
|
+
computeConfidence(sampleSize) {
|
|
129
|
+
if (sampleSize < 10)
|
|
130
|
+
return 0.5;
|
|
131
|
+
if (sampleSize < 20)
|
|
132
|
+
return 0.6;
|
|
133
|
+
if (sampleSize < 50)
|
|
134
|
+
return 0.7;
|
|
135
|
+
if (sampleSize < 100)
|
|
136
|
+
return 0.8;
|
|
137
|
+
if (sampleSize < 200)
|
|
138
|
+
return 0.9;
|
|
139
|
+
return 0.95;
|
|
140
|
+
}
|
|
141
|
+
createZeroFitness() {
|
|
142
|
+
return {
|
|
143
|
+
quality: 0,
|
|
144
|
+
successRate: 0,
|
|
145
|
+
tokenEfficiency: 0,
|
|
146
|
+
latency: 0,
|
|
147
|
+
costPerSuccess: 0,
|
|
148
|
+
interventionRate: 0,
|
|
149
|
+
composite: 0,
|
|
150
|
+
sampleSize: 0,
|
|
151
|
+
lastUpdated: new Date(),
|
|
152
|
+
confidence: 0,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
compareFitness(f1, f2) {
|
|
156
|
+
return f1.composite - f2.composite;
|
|
157
|
+
}
|
|
158
|
+
computeImprovement(baseline, current) {
|
|
159
|
+
if (baseline.composite === 0)
|
|
160
|
+
return 0;
|
|
161
|
+
return (current.composite - baseline.composite) / baseline.composite;
|
|
162
|
+
}
|
|
163
|
+
meetsThreshold(fitness, baseline, threshold) {
|
|
164
|
+
const improvement = this.computeImprovement(baseline, fitness);
|
|
165
|
+
return improvement >= threshold;
|
|
166
|
+
}
|
|
167
|
+
getWeights() {
|
|
168
|
+
return { ...this.config.weights };
|
|
169
|
+
}
|
|
170
|
+
setWeights(weights) {
|
|
171
|
+
this.config.weights = { ...this.config.weights, ...weights };
|
|
172
|
+
}
|
|
173
|
+
addModelPricing(model, pricing) {
|
|
174
|
+
this.config.modelPricing[model] = pricing;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=FitnessCalculator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FitnessCalculator.js","sourceRoot":"","sources":["../../src/evolution/FitnessCalculator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { GenomeV2, OperativeGene, MutationType, MutationRecord } from '../types/GenomeV2.js';
|
|
2
|
+
export interface MutationContext {
|
|
3
|
+
genome: GenomeV2;
|
|
4
|
+
targetChromosome: 'c1' | 'c2';
|
|
5
|
+
targetGene?: OperativeGene;
|
|
6
|
+
reason: string;
|
|
7
|
+
evidence?: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export interface MutationResult {
|
|
10
|
+
success: boolean;
|
|
11
|
+
mutant: GenomeV2;
|
|
12
|
+
mutation: MutationRecord;
|
|
13
|
+
description: string;
|
|
14
|
+
expectedImprovement: number;
|
|
15
|
+
}
|
|
16
|
+
export interface IMutationOperator {
|
|
17
|
+
name: MutationType;
|
|
18
|
+
description: string;
|
|
19
|
+
targetChromosome: 'c1' | 'c2';
|
|
20
|
+
mutate(context: MutationContext): Promise<MutationResult>;
|
|
21
|
+
estimateImprovement(context: MutationContext): number;
|
|
22
|
+
}
|
|
23
|
+
export declare class CompressInstructionsOperator implements IMutationOperator {
|
|
24
|
+
name: MutationType;
|
|
25
|
+
description: string;
|
|
26
|
+
targetChromosome: 'c1';
|
|
27
|
+
mutate(context: MutationContext): Promise<MutationResult>;
|
|
28
|
+
estimateImprovement(context: MutationContext): number;
|
|
29
|
+
private compressGene;
|
|
30
|
+
private removeRedundancy;
|
|
31
|
+
private abbreviateCommon;
|
|
32
|
+
private consolidateInstructions;
|
|
33
|
+
private deepClone;
|
|
34
|
+
private generateId;
|
|
35
|
+
private computeDiff;
|
|
36
|
+
}
|
|
37
|
+
export declare class ReorderConstraintsOperator implements IMutationOperator {
|
|
38
|
+
name: MutationType;
|
|
39
|
+
description: string;
|
|
40
|
+
targetChromosome: 'c1';
|
|
41
|
+
mutate(context: MutationContext): Promise<MutationResult>;
|
|
42
|
+
estimateImprovement(_context: MutationContext): number;
|
|
43
|
+
private reorderGenes;
|
|
44
|
+
private deepClone;
|
|
45
|
+
private generateId;
|
|
46
|
+
}
|
|
47
|
+
export declare class SafetyReinforcementOperator implements IMutationOperator {
|
|
48
|
+
name: MutationType;
|
|
49
|
+
description: string;
|
|
50
|
+
targetChromosome: 'c1';
|
|
51
|
+
mutate(context: MutationContext): Promise<MutationResult>;
|
|
52
|
+
estimateImprovement(context: MutationContext): number;
|
|
53
|
+
private reinforceGene;
|
|
54
|
+
private deepClone;
|
|
55
|
+
private generateId;
|
|
56
|
+
}
|
|
57
|
+
export declare class ToolSelectionBiasOperator implements IMutationOperator {
|
|
58
|
+
name: MutationType;
|
|
59
|
+
description: string;
|
|
60
|
+
targetChromosome: 'c1';
|
|
61
|
+
mutate(context: MutationContext): Promise<MutationResult>;
|
|
62
|
+
estimateImprovement(_context: MutationContext): number;
|
|
63
|
+
private adjustToolBias;
|
|
64
|
+
private deepClone;
|
|
65
|
+
private generateId;
|
|
66
|
+
}
|
|
67
|
+
export declare class MutationEngine {
|
|
68
|
+
private operators;
|
|
69
|
+
constructor();
|
|
70
|
+
registerOperator(operator: IMutationOperator): void;
|
|
71
|
+
generateMutants(context: MutationContext, count?: number): Promise<MutationResult[]>;
|
|
72
|
+
private rankOperators;
|
|
73
|
+
getOperator(name: MutationType): IMutationOperator | undefined;
|
|
74
|
+
listOperators(): IMutationOperator[];
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=MutationOperator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MutationOperator.d.ts","sourceRoot":"","sources":["../../src/evolution/MutationOperator.ts"],"names":[],"mappings":"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"}
|