Module: Legion::Extensions::MindGrowth::Runners::Monitor
- Extended by:
- Monitor
- Includes:
- Helpers::Lex
- Included in:
- Monitor
- Defined in:
- lib/legion/extensions/mind_growth/runners/monitor.rb
Constant Summary collapse
- HEALTH_LEVELS =
{ excellent: 0.8, good: 0.6, fair: 0.4, degraded: 0.2, critical: 0.0 }.freeze
Instance Method Summary collapse
- #auto_prune(extensions:) ⇒ Object
- #decay_check(extensions:) ⇒ Object
- #health_check(extension:) ⇒ Object
- #health_summary(extensions:) ⇒ Object
- #impact_score(extension:, extensions: nil) ⇒ Object
- #usage_stats(extensions:) ⇒ Object
Instance Method Details
#auto_prune(extensions:) ⇒ Object
68 69 70 71 |
# File 'lib/legion/extensions/mind_growth/runners/monitor.rb', line 68 def auto_prune(extensions:, **) pruned = Helpers::FitnessEvaluator.prune_candidates(Array(extensions)) { success: true, pruned: pruned, count: pruned.size } end |
#decay_check(extensions:) ⇒ Object
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/legion/extensions/mind_growth/runners/monitor.rb', line 57 def decay_check(extensions:, **) threshold = Helpers::Constants::DECAY_INVOCATION_THRESHOLD decayed = Array(extensions).select do |ext| count = ext[:invocation_count] || 0 fitness = Helpers::FitnessEvaluator.fitness(ext) count < threshold || fitness < Helpers::Constants::PRUNE_THRESHOLD end { success: true, decayed: decayed, count: decayed.size } end |
#health_check(extension:) ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/legion/extensions/mind_growth/runners/monitor.rb', line 21 def health_check(extension:, **) name = extension[:name] || extension[:extension_name] fitness = Helpers::FitnessEvaluator.fitness(extension) level = classify_health(fitness) alert = %i[degraded critical].include?(level) { success: true, extension_name: name, fitness: fitness, health_level: level, alert: alert } end |
#health_summary(extensions:) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/legion/extensions/mind_growth/runners/monitor.rb', line 73 def health_summary(extensions:, **) exts = Array(extensions) by_health_level = HEALTH_LEVELS.keys.to_h { |level| [level, 0] } alerts = [] prune_candidates = Helpers::FitnessEvaluator.prune_candidates(exts) exts.each do |ext| fitness = Helpers::FitnessEvaluator.fitness(ext) level = classify_health(fitness) by_health_level[level] += 1 alerts << ext if %i[degraded critical].include?(level) end { success: true, total: exts.size, by_health_level: by_health_level, alerts: alerts, prune_candidates: prune_candidates } end |
#impact_score(extension:, extensions: nil) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/legion/extensions/mind_growth/runners/monitor.rb', line 42 def impact_score(extension:, extensions: nil, **) name = extension[:name] || extension[:extension_name] impact = extension[:impact_score] || 0.5 percentile = if extensions && !Array(extensions).empty? all_impacts = Array(extensions).map { |e| e[:impact_score] || 0.5 }.sort rank = all_impacts.count { |i| i <= impact } (rank.to_f / all_impacts.size * 100).round(1) else 50.0 end { success: true, extension_name: name, impact: impact, rank_percentile: percentile } end |
#usage_stats(extensions:) ⇒ Object
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/legion/extensions/mind_growth/runners/monitor.rb', line 31 def usage_stats(extensions:, **) stats = Array(extensions).map do |ext| { extension_name: ext[:name] || ext[:extension_name], invocation_count: ext[:invocation_count] || 0, error_rate: ext[:error_rate] || 0.0, avg_latency_ms: ext[:avg_latency_ms] || 0 } end { success: true, stats: stats, count: stats.size } end |