@theihtisham/agent-shadow-brain 2.1.0 → 4.0.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.
Files changed (116) hide show
  1. package/README.md +443 -602
  2. package/dist/brain/accessibility-checker.d.ts +10 -0
  3. package/dist/brain/accessibility-checker.d.ts.map +1 -0
  4. package/dist/brain/accessibility-checker.js +379 -0
  5. package/dist/brain/accessibility-checker.js.map +1 -0
  6. package/dist/brain/adversarial-defense.d.ts +57 -0
  7. package/dist/brain/adversarial-defense.d.ts.map +1 -0
  8. package/dist/brain/adversarial-defense.js +303 -0
  9. package/dist/brain/adversarial-defense.js.map +1 -0
  10. package/dist/brain/api-contract-analyzer.d.ts +19 -0
  11. package/dist/brain/api-contract-analyzer.d.ts.map +1 -0
  12. package/dist/brain/api-contract-analyzer.js +251 -0
  13. package/dist/brain/api-contract-analyzer.js.map +1 -0
  14. package/dist/brain/ast-analyzer.d.ts +23 -0
  15. package/dist/brain/ast-analyzer.d.ts.map +1 -0
  16. package/dist/brain/ast-analyzer.js +462 -0
  17. package/dist/brain/ast-analyzer.js.map +1 -0
  18. package/dist/brain/code-age-analyzer.d.ts +11 -0
  19. package/dist/brain/code-age-analyzer.d.ts.map +1 -0
  20. package/dist/brain/code-age-analyzer.js +152 -0
  21. package/dist/brain/code-age-analyzer.js.map +1 -0
  22. package/dist/brain/cognitive-load.d.ts +27 -0
  23. package/dist/brain/cognitive-load.d.ts.map +1 -0
  24. package/dist/brain/cognitive-load.js +304 -0
  25. package/dist/brain/cognitive-load.js.map +1 -0
  26. package/dist/brain/config-drift-detector.d.ts +13 -0
  27. package/dist/brain/config-drift-detector.d.ts.map +1 -0
  28. package/dist/brain/config-drift-detector.js +198 -0
  29. package/dist/brain/config-drift-detector.js.map +1 -0
  30. package/dist/brain/cross-agent-protocol.d.ts +48 -0
  31. package/dist/brain/cross-agent-protocol.d.ts.map +1 -0
  32. package/dist/brain/cross-agent-protocol.js +306 -0
  33. package/dist/brain/cross-agent-protocol.js.map +1 -0
  34. package/dist/brain/dead-code-eliminator.d.ts +16 -0
  35. package/dist/brain/dead-code-eliminator.d.ts.map +1 -0
  36. package/dist/brain/dead-code-eliminator.js +359 -0
  37. package/dist/brain/dead-code-eliminator.js.map +1 -0
  38. package/dist/brain/env-analyzer.d.ts +13 -0
  39. package/dist/brain/env-analyzer.d.ts.map +1 -0
  40. package/dist/brain/env-analyzer.js +277 -0
  41. package/dist/brain/env-analyzer.js.map +1 -0
  42. package/dist/brain/i18n-detector.d.ts +12 -0
  43. package/dist/brain/i18n-detector.d.ts.map +1 -0
  44. package/dist/brain/i18n-detector.js +242 -0
  45. package/dist/brain/i18n-detector.js.map +1 -0
  46. package/dist/brain/influence-map.d.ts +31 -0
  47. package/dist/brain/influence-map.d.ts.map +1 -0
  48. package/dist/brain/influence-map.js +375 -0
  49. package/dist/brain/influence-map.js.map +1 -0
  50. package/dist/brain/knowledge-graph.d.ts +56 -0
  51. package/dist/brain/knowledge-graph.d.ts.map +1 -0
  52. package/dist/brain/knowledge-graph.js +427 -0
  53. package/dist/brain/knowledge-graph.js.map +1 -0
  54. package/dist/brain/learning-engine.d.ts +11 -0
  55. package/dist/brain/learning-engine.d.ts.map +1 -1
  56. package/dist/brain/learning-engine.js +44 -1
  57. package/dist/brain/learning-engine.js.map +1 -1
  58. package/dist/brain/license-compliance.d.ts +13 -0
  59. package/dist/brain/license-compliance.d.ts.map +1 -0
  60. package/dist/brain/license-compliance.js +213 -0
  61. package/dist/brain/license-compliance.js.map +1 -0
  62. package/dist/brain/llm-client.d.ts.map +1 -1
  63. package/dist/brain/llm-client.js +3 -0
  64. package/dist/brain/llm-client.js.map +1 -1
  65. package/dist/brain/mutation-advisor.d.ts +11 -0
  66. package/dist/brain/mutation-advisor.d.ts.map +1 -0
  67. package/dist/brain/mutation-advisor.js +154 -0
  68. package/dist/brain/mutation-advisor.js.map +1 -0
  69. package/dist/brain/neural-mesh.d.ts +9 -1
  70. package/dist/brain/neural-mesh.d.ts.map +1 -1
  71. package/dist/brain/neural-mesh.js +75 -16
  72. package/dist/brain/neural-mesh.js.map +1 -1
  73. package/dist/brain/orchestrator.d.ts +71 -2
  74. package/dist/brain/orchestrator.d.ts.map +1 -1
  75. package/dist/brain/orchestrator.js +383 -3
  76. package/dist/brain/orchestrator.js.map +1 -1
  77. package/dist/brain/pattern-memory.d.ts +8 -3
  78. package/dist/brain/pattern-memory.d.ts.map +1 -1
  79. package/dist/brain/pattern-memory.js +71 -3
  80. package/dist/brain/pattern-memory.js.map +1 -1
  81. package/dist/brain/predictive-engine.d.ts +45 -0
  82. package/dist/brain/predictive-engine.d.ts.map +1 -0
  83. package/dist/brain/predictive-engine.js +238 -0
  84. package/dist/brain/predictive-engine.js.map +1 -0
  85. package/dist/brain/security-audit.d.ts +20 -0
  86. package/dist/brain/security-audit.d.ts.map +1 -0
  87. package/dist/brain/security-audit.js +340 -0
  88. package/dist/brain/security-audit.js.map +1 -0
  89. package/dist/brain/self-evolution.d.ts +53 -0
  90. package/dist/brain/self-evolution.d.ts.map +1 -0
  91. package/dist/brain/self-evolution.js +278 -0
  92. package/dist/brain/self-evolution.js.map +1 -0
  93. package/dist/brain/sssp-router.d.ts +58 -0
  94. package/dist/brain/sssp-router.d.ts.map +1 -0
  95. package/dist/brain/sssp-router.js +295 -0
  96. package/dist/brain/sssp-router.js.map +1 -0
  97. package/dist/brain/swarm-intelligence.d.ts +48 -0
  98. package/dist/brain/swarm-intelligence.d.ts.map +1 -0
  99. package/dist/brain/swarm-intelligence.js +215 -0
  100. package/dist/brain/swarm-intelligence.js.map +1 -0
  101. package/dist/brain/turbo-memory.d.ts +56 -0
  102. package/dist/brain/turbo-memory.d.ts.map +1 -0
  103. package/dist/brain/turbo-memory.js +388 -0
  104. package/dist/brain/turbo-memory.js.map +1 -0
  105. package/dist/cli.js +744 -3
  106. package/dist/cli.js.map +1 -1
  107. package/dist/index.d.ts +19 -1
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +21 -1
  110. package/dist/index.js.map +1 -1
  111. package/dist/types.d.ts +422 -2
  112. package/dist/types.d.ts.map +1 -1
  113. package/dist/ui/dashboard.d.ts.map +1 -1
  114. package/dist/ui/dashboard.js +20 -3
  115. package/dist/ui/dashboard.js.map +1 -1
  116. package/package.json +16 -7
@@ -0,0 +1,53 @@
1
+ import { GeneticRule, EvolutionSnapshot, SelfEvolutionConfig, BrainInsight } from '../types.js';
2
+ /**
3
+ * Self-Evolution Engine — rules that write themselves.
4
+ *
5
+ * Genetic Representation:
6
+ * Each rule = chromosome of floats encoding severity weight,
7
+ * confidence threshold, file pattern hash, category encoding, etc.
8
+ *
9
+ * Fitness: accuracy × coverage × (1 / falsePositiveRate)
10
+ * Selection: Tournament (k=5)
11
+ * Crossover: Single-point at random position
12
+ * Mutation: Gaussian noise σ = 0.1 × mutationRate
13
+ *
14
+ * Meta-Learning: Tracks which (rule, project_type, language) combos work best.
15
+ * Bayesian updating of weights per strategy.
16
+ */
17
+ export declare class SelfEvolution {
18
+ private config;
19
+ private population;
20
+ private generation;
21
+ private metaLogs;
22
+ private eliteArchive;
23
+ private fitnessHistory;
24
+ constructor(config?: Partial<SelfEvolutionConfig>);
25
+ /** Run one evolution generation */
26
+ evolve(insights?: BrainInsight[]): Promise<EvolutionSnapshot>;
27
+ /** Evaluate rule fitness based on insight history */
28
+ evaluateFitness(rule: GeneticRule, insights: BrainInsight[]): number;
29
+ /** Tournament selection (k=5) */
30
+ private tournamentSelect;
31
+ /** Single-point crossover */
32
+ crossover(a: GeneticRule, b: GeneticRule): [GeneticRule, GeneticRule];
33
+ /** Gaussian mutation */
34
+ mutate(rule: GeneticRule): GeneticRule;
35
+ private initializePopulation;
36
+ /** Update meta-learning log with strategy outcome */
37
+ updateMetaLearning(strategy: string, outcome: boolean, category?: string): void;
38
+ /** Get best evolved rules for a category */
39
+ getBestRules(category: string, topN?: number): GeneticRule[];
40
+ /** Get current generation info */
41
+ getGeneration(): number;
42
+ getPopulationSize(): number;
43
+ getFitnessHistory(): Array<{
44
+ gen: number;
45
+ best: number;
46
+ avg: number;
47
+ }>;
48
+ /** Get a snapshot of the current evolution state */
49
+ getSnapshot(): EvolutionSnapshot;
50
+ private saveToDisk;
51
+ private loadFromDisk;
52
+ }
53
+ //# sourceMappingURL=self-evolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-evolution.d.ts","sourceRoot":"","sources":["../../src/brain/self-evolution.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAmB,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAajH;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,cAAc,CAAyD;gBAEnE,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC;IAOjD,mCAAmC;IAC7B,MAAM,CAAC,QAAQ,GAAE,YAAY,EAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA+DvE,qDAAqD;IACrD,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM;IAuCpE,iCAAiC;IACjC,OAAO,CAAC,gBAAgB;IAWxB,6BAA6B;IAC7B,SAAS,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC;IAYrE,wBAAwB;IACxB,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,WAAW;IAsBtC,OAAO,CAAC,oBAAoB;IAkB5B,qDAAqD;IACrD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,GAAE,MAAkB,GAAG,IAAI;IAqB1F,4CAA4C;IAC5C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAW,GAAG,WAAW,EAAE;IAkBhE,kCAAkC;IAClC,aAAa,IAAI,MAAM;IACvB,iBAAiB,IAAI,MAAM;IAC3B,iBAAiB,IAAI,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAEtE,oDAAoD;IACpD,WAAW,IAAI,iBAAiB;YAelB,UAAU;IAwBxB,OAAO,CAAC,YAAY;CAqBrB"}
@@ -0,0 +1,278 @@
1
+ // src/brain/self-evolution.ts — Genetic Algorithm Rule Optimizer
2
+ // Rules evolve themselves by measuring which produce accurate insights.
3
+ // Tournament selection, Gaussian mutation, Bayesian meta-learning.
4
+ // v4.0.0 — Hyper-Intelligence Edition
5
+ import * as fs from 'fs';
6
+ import * as path from 'path';
7
+ import * as crypto from 'crypto';
8
+ const EVOLUTION_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '~', '.shadow-brain', 'evolution');
9
+ const DEFAULT_CONFIG = {
10
+ populationSize: 50,
11
+ mutationRate: 0.1,
12
+ crossoverRate: 0.7,
13
+ elitePercent: 0.1,
14
+ fitnessTarget: 0.95,
15
+ maxGenerations: 1000,
16
+ tournamentSize: 5,
17
+ };
18
+ /**
19
+ * Self-Evolution Engine — rules that write themselves.
20
+ *
21
+ * Genetic Representation:
22
+ * Each rule = chromosome of floats encoding severity weight,
23
+ * confidence threshold, file pattern hash, category encoding, etc.
24
+ *
25
+ * Fitness: accuracy × coverage × (1 / falsePositiveRate)
26
+ * Selection: Tournament (k=5)
27
+ * Crossover: Single-point at random position
28
+ * Mutation: Gaussian noise σ = 0.1 × mutationRate
29
+ *
30
+ * Meta-Learning: Tracks which (rule, project_type, language) combos work best.
31
+ * Bayesian updating of weights per strategy.
32
+ */
33
+ export class SelfEvolution {
34
+ constructor(config) {
35
+ this.population = [];
36
+ this.generation = 0;
37
+ this.metaLogs = [];
38
+ this.eliteArchive = [];
39
+ this.fitnessHistory = [];
40
+ this.config = { ...DEFAULT_CONFIG, ...config };
41
+ this.loadFromDisk();
42
+ }
43
+ // ── Evolution Cycle ─────────────────────────────────────────────────────────
44
+ /** Run one evolution generation */
45
+ async evolve(insights = []) {
46
+ // Initialize population if empty
47
+ if (this.population.length === 0) {
48
+ this.initializePopulation();
49
+ }
50
+ // Evaluate fitness for all rules
51
+ for (const rule of this.population) {
52
+ rule.fitness = this.evaluateFitness(rule, insights);
53
+ }
54
+ // Sort by fitness (descending)
55
+ this.population.sort((a, b) => b.fitness - a.fitness);
56
+ // Track elite
57
+ const eliteCount = Math.max(1, Math.floor(this.config.populationSize * this.config.elitePercent));
58
+ const elites = this.population.slice(0, eliteCount);
59
+ this.eliteArchive = [...this.eliteArchive, ...elites]
60
+ .sort((a, b) => b.fitness - a.fitness)
61
+ .slice(0, eliteCount * 3);
62
+ // Create next generation
63
+ const nextGen = [...elites]; // Elitism: keep best
64
+ while (nextGen.length < this.config.populationSize) {
65
+ const parentA = this.tournamentSelect();
66
+ const parentB = this.tournamentSelect();
67
+ if (Math.random() < this.config.crossoverRate) {
68
+ const [childA, childB] = this.crossover(parentA, parentB);
69
+ nextGen.push(this.mutate(childA));
70
+ if (nextGen.length < this.config.populationSize) {
71
+ nextGen.push(this.mutate(childB));
72
+ }
73
+ }
74
+ else {
75
+ nextGen.push(this.mutate({ ...parentA, id: crypto.randomUUID() }));
76
+ }
77
+ }
78
+ this.population = nextGen;
79
+ this.generation++;
80
+ // Record fitness history
81
+ const bestFitness = elites[0]?.fitness ?? 0;
82
+ const avgFitness = this.population.reduce((s, r) => s + r.fitness, 0) / this.population.length;
83
+ this.fitnessHistory.push({ gen: this.generation, best: bestFitness, avg: avgFitness });
84
+ const snapshot = {
85
+ generation: this.generation,
86
+ bestFitness,
87
+ avgFitness,
88
+ worstFitness: this.population[this.population.length - 1]?.fitness ?? 0,
89
+ population: [...this.population],
90
+ eliteCount,
91
+ timestamp: new Date(),
92
+ };
93
+ await this.saveToDisk();
94
+ return snapshot;
95
+ }
96
+ // ── Fitness Evaluation ──────────────────────────────────────────────────────
97
+ /** Evaluate rule fitness based on insight history */
98
+ evaluateFitness(rule, insights) {
99
+ if (insights.length === 0) {
100
+ // No insights to evaluate against — use chromosome values
101
+ const chrom = rule.chromosome;
102
+ const severityWeight = chrom[0] ?? 0.5;
103
+ const confidenceThreshold = chrom[1] ?? 0.5;
104
+ const coverageScore = chrom[2] ?? 0.5;
105
+ const specificity = chrom[3] ?? 0.5;
106
+ return (severityWeight * 0.3 + confidenceThreshold * 0.3 + coverageScore * 0.2 + specificity * 0.2);
107
+ }
108
+ // Match insights to rule category and measure accuracy
109
+ const matchingInsights = insights.filter(i => {
110
+ const categoryScore = rule.chromosome[3] ?? 0.5;
111
+ return i.confidence !== undefined && i.confidence >= categoryScore * 0.5;
112
+ });
113
+ if (matchingInsights.length === 0)
114
+ return 0.1; // Minimum fitness
115
+ // Count true positives (high confidence insights that match)
116
+ const truePositives = matchingInsights.filter(i => i.priority === 'critical' || i.priority === 'high').length;
117
+ // Count false positives (low confidence insights that fired)
118
+ const falsePositives = matchingInsights.filter(i => i.priority === 'low' && (i.confidence ?? 0) < 0.5).length;
119
+ const accuracy = truePositives / Math.max(matchingInsights.length, 1);
120
+ const coverage = matchingInsights.length / Math.max(insights.length, 1);
121
+ const falsePositiveRate = falsePositives / Math.max(matchingInsights.length, 1);
122
+ return accuracy * 0.4 + coverage * 0.3 + (1 - falsePositiveRate) * 0.3;
123
+ }
124
+ // ── Genetic Operators ───────────────────────────────────────────────────────
125
+ /** Tournament selection (k=5) */
126
+ tournamentSelect() {
127
+ let best = null;
128
+ for (let i = 0; i < this.config.tournamentSize; i++) {
129
+ const candidate = this.population[Math.floor(Math.random() * this.population.length)];
130
+ if (!best || candidate.fitness > best.fitness) {
131
+ best = candidate;
132
+ }
133
+ }
134
+ return { ...best, id: crypto.randomUUID() };
135
+ }
136
+ /** Single-point crossover */
137
+ crossover(a, b) {
138
+ const point = Math.floor(Math.random() * Math.min(a.chromosome.length, b.chromosome.length));
139
+ const childAChrom = [...a.chromosome.slice(0, point), ...b.chromosome.slice(point)];
140
+ const childBChrom = [...b.chromosome.slice(0, point), ...a.chromosome.slice(point)];
141
+ return [
142
+ { id: crypto.randomUUID(), chromosome: childAChrom, fitness: 0, generation: this.generation, mutations: 0, category: a.category, createdAt: new Date() },
143
+ { id: crypto.randomUUID(), chromosome: childBChrom, fitness: 0, generation: this.generation, mutations: 0, category: b.category, createdAt: new Date() },
144
+ ];
145
+ }
146
+ /** Gaussian mutation */
147
+ mutate(rule) {
148
+ const sigma = 0.1 * this.config.mutationRate;
149
+ const mutated = rule.chromosome.map(gene => {
150
+ if (Math.random() < this.config.mutationRate) {
151
+ // Box-Muller transform for Gaussian noise
152
+ const u1 = Math.random();
153
+ const u2 = Math.random();
154
+ const noise = Math.sqrt(-2 * Math.log(u1 + 1e-10)) * Math.cos(2 * Math.PI * u2) * sigma;
155
+ return Math.max(0, Math.min(1, gene + noise));
156
+ }
157
+ return gene;
158
+ });
159
+ return {
160
+ ...rule,
161
+ chromosome: mutated,
162
+ mutations: rule.mutations + 1,
163
+ };
164
+ }
165
+ // ── Population Initialization ───────────────────────────────────────────────
166
+ initializePopulation() {
167
+ const categories = ['security', 'performance', 'quality', 'architecture', 'style'];
168
+ for (let i = 0; i < this.config.populationSize; i++) {
169
+ this.population.push({
170
+ id: crypto.randomUUID(),
171
+ chromosome: Array.from({ length: 10 }, () => Math.random()),
172
+ fitness: 0,
173
+ generation: 0,
174
+ mutations: 0,
175
+ category: categories[i % categories.length],
176
+ createdAt: new Date(),
177
+ });
178
+ }
179
+ }
180
+ // ── Meta-Learning ───────────────────────────────────────────────────────────
181
+ /** Update meta-learning log with strategy outcome */
182
+ updateMetaLearning(strategy, outcome, category = 'general') {
183
+ const existing = this.metaLogs.find(l => l.strategy === strategy && l.category === category);
184
+ if (existing) {
185
+ const totalSamples = existing.sampleCount + 1;
186
+ const successCount = existing.sampleCount * existing.successRate + (outcome ? 1 : 0);
187
+ existing.successRate = successCount / totalSamples;
188
+ existing.avgImprovement = existing.avgImprovement * 0.9 + (outcome ? 0.1 : -0.05);
189
+ existing.sampleCount = totalSamples;
190
+ existing.lastUpdated = new Date();
191
+ }
192
+ else {
193
+ this.metaLogs.push({
194
+ strategy,
195
+ successRate: outcome ? 1 : 0,
196
+ avgImprovement: outcome ? 0.1 : 0,
197
+ sampleCount: 1,
198
+ lastUpdated: new Date(),
199
+ category,
200
+ });
201
+ }
202
+ }
203
+ /** Get best evolved rules for a category */
204
+ getBestRules(category, topN = 10) {
205
+ const allRules = [...this.eliteArchive, ...this.population]
206
+ .filter(r => category === 'all' || r.category === category)
207
+ .sort((a, b) => b.fitness - a.fitness);
208
+ // Deduplicate by chromosome similarity
209
+ const seen = [];
210
+ for (const rule of allRules) {
211
+ if (seen.length >= topN)
212
+ break;
213
+ const isDuplicate = seen.some(s => s.chromosome.every((gene, i) => Math.abs(gene - rule.chromosome[i]) < 0.05));
214
+ if (!isDuplicate)
215
+ seen.push(rule);
216
+ }
217
+ return seen;
218
+ }
219
+ /** Get current generation info */
220
+ getGeneration() { return this.generation; }
221
+ getPopulationSize() { return this.population.length; }
222
+ getFitnessHistory() { return this.fitnessHistory; }
223
+ /** Get a snapshot of the current evolution state */
224
+ getSnapshot() {
225
+ const fitnesses = this.population.map(r => r.fitness);
226
+ return {
227
+ generation: this.generation,
228
+ bestFitness: fitnesses.length > 0 ? Math.max(...fitnesses) : 0,
229
+ avgFitness: fitnesses.length > 0 ? fitnesses.reduce((a, b) => a + b, 0) / fitnesses.length : 0,
230
+ worstFitness: fitnesses.length > 0 ? Math.min(...fitnesses) : 0,
231
+ population: this.population,
232
+ eliteCount: this.eliteArchive.length,
233
+ timestamp: new Date(),
234
+ };
235
+ }
236
+ // ── Persistence ─────────────────────────────────────────────────────────────
237
+ async saveToDisk() {
238
+ try {
239
+ if (!fs.existsSync(EVOLUTION_DIR)) {
240
+ fs.mkdirSync(EVOLUTION_DIR, { recursive: true });
241
+ }
242
+ const state = {
243
+ generation: this.generation,
244
+ population: this.population,
245
+ eliteArchive: this.eliteArchive,
246
+ metaLogs: this.metaLogs,
247
+ fitnessHistory: this.fitnessHistory,
248
+ config: this.config,
249
+ };
250
+ fs.writeFileSync(path.join(EVOLUTION_DIR, `gen-${this.generation}.json`), JSON.stringify(state));
251
+ }
252
+ catch {
253
+ // Non-blocking
254
+ }
255
+ }
256
+ loadFromDisk() {
257
+ try {
258
+ if (!fs.existsSync(EVOLUTION_DIR))
259
+ return;
260
+ const files = fs.readdirSync(EVOLUTION_DIR)
261
+ .filter(f => f.startsWith('gen-') && f.endsWith('.json'))
262
+ .sort()
263
+ .reverse();
264
+ if (files.length === 0)
265
+ return;
266
+ const latest = JSON.parse(fs.readFileSync(path.join(EVOLUTION_DIR, files[0]), 'utf-8'));
267
+ this.generation = latest.generation ?? 0;
268
+ this.population = latest.population ?? [];
269
+ this.eliteArchive = latest.eliteArchive ?? [];
270
+ this.metaLogs = latest.metaLogs ?? [];
271
+ this.fitnessHistory = latest.fitnessHistory ?? [];
272
+ }
273
+ catch {
274
+ // Fresh start
275
+ }
276
+ }
277
+ }
278
+ //# sourceMappingURL=self-evolution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self-evolution.js","sourceRoot":"","sources":["../../src/brain/self-evolution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { SSSPGraph, SSSPResult, PivotSet } from '../types.js';
2
+ /**
3
+ * SSSP Router implementing the Breaking the Sorting Barrier algorithm.
4
+ *
5
+ * Key insight: For multi-source shortest paths, use pivot-based recursion
6
+ * to achieve O(m log^(2/3) n) instead of Dijkstra's O(m + n log n).
7
+ *
8
+ * Parameters:
9
+ * k = floor(cbrt(log(n))) — pivot threshold
10
+ * t = floor(log(n)^(2/3)) — recursion depth bound
11
+ *
12
+ * FindPivots: Run k rounds of Bellman-Ford relaxation, collect vertices
13
+ * reachable within k hops. Sources with SP tree >= k vertices → pivots.
14
+ * Key property: |P| <= |U|/k, geometric problem reduction.
15
+ *
16
+ * BMSSP: Recursive divide-and-conquer. Base case: |S|=1 or t=0 → Dijkstra.
17
+ * Find pivots → recurse on pivots → inherit distances for remaining.
18
+ */
19
+ export declare class SSSPRouter {
20
+ private graph;
21
+ private cache;
22
+ /** Build adjacency graph from mesh node connections */
23
+ buildGraph(nodes: Array<{
24
+ id: string;
25
+ connections: Array<{
26
+ targetId: string;
27
+ latency: number;
28
+ }>;
29
+ }>): SSSPGraph;
30
+ /** Add a single edge to the graph */
31
+ addEdge(from: string, to: string, weight: number): void;
32
+ /**
33
+ * FindPivots(G, S, k):
34
+ * 1. Initialize distances for all v ∈ S to 0
35
+ * 2. Run k rounds of Bellman-Ford relaxation (not full BF, just k steps)
36
+ * 3. Collect U = vertices reachable within k hops
37
+ * 4. For each source s: if SP tree covers >= k vertices → mark as pivot
38
+ * 5. Return pivot set P and uncovered vertices
39
+ */
40
+ findPivots(graph: SSSPGraph, sources: string[], k: number): PivotSet;
41
+ /**
42
+ * BMSSP(G, S, t) — Bounded Multi-Source Shortest Path:
43
+ * 1. If |S| = 1 or t = 0: base case → simple Dijkstra
44
+ * 2. FindPivots(G, S, k) to identify pivot sources
45
+ * 3. Recursively solve SSSP(G, P) with t-1
46
+ * 4. For remaining vertices: inherit distance bounds from nearest pivot
47
+ */
48
+ bmssp(graph: SSSPGraph, sources: string[], t: number): SSSPResult;
49
+ /** Standard Dijkstra with min-heap for single-source shortest path */
50
+ dijkstra(graph: SSSPGraph, source: string): SSSPResult;
51
+ /** Find optimal route between two nodes */
52
+ route(fromNode: string, toNode: string): string[];
53
+ /** Reconstruct path from predecessor map */
54
+ private reconstructPath;
55
+ /** Clear route cache */
56
+ clearCache(): void;
57
+ }
58
+ //# sourceMappingURL=sssp-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sssp-router.d.ts","sourceRoot":"","sources":["../../src/brain/sssp-router.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAY,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAExE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,KAAK,CAAsC;IAEnD,uDAAuD;IACvD,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,KAAK,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,GAAG,SAAS;IAiB9G,qCAAqC;IACrC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAgBvD;;;;;;;OAOG;IACH,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ;IA0EpE;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU;IAgGjE,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU;IA6CtD,2CAA2C;IAC3C,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAkBjD,4CAA4C;IAC5C,OAAO,CAAC,eAAe;IAevB,wBAAwB;IACxB,UAAU,IAAI,IAAI;CAGnB"}