Module: Legion::Extensions::Agentic::Self::Metacognition::Runners::Registry
- Extended by:
- Registry
- Included in:
- Registry
- Defined in:
- lib/legion/extensions/agentic/self/metacognition/runners/registry.rb
Instance Method Summary collapse
- #category_distribution ⇒ Object
- #degraded_extensions(threshold: 0.4) ⇒ Object
- #deregister_extension(name:) ⇒ Object
- #extension_status(name:) ⇒ Object
- #list_extensions(status: nil, category: nil) ⇒ Object
- #register_extension(name:, module_name:, category: 'cognition') ⇒ Object
- #seed_from_constants ⇒ Object
- #update_extension(name:, attrs: {}) ⇒ Object
Instance Method Details
#category_distribution ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/legion/extensions/agentic/self/metacognition/runners/registry.rb', line 69 def category_distribution(**) dist = if db_available? db_category_distribution else store.category_distribution end total = dist.values.sum percentages = dist.transform_values { |v| total.positive? ? (v.to_f / total * 100).round(1) : 0.0 } { success: true, distribution: dist, percentages: percentages, total: total } end |
#degraded_extensions(threshold: 0.4) ⇒ Object
82 83 84 85 86 87 88 89 |
# File 'lib/legion/extensions/agentic/self/metacognition/runners/registry.rb', line 82 def degraded_extensions(threshold: 0.4, **) extensions = if db_available? db_by_health(threshold) else store.by_health(threshold: threshold) end { success: true, extensions: extensions, count: extensions.size } end |
#deregister_extension(name:) ⇒ Object
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/legion/extensions/agentic/self/metacognition/runners/registry.rb', line 27 def deregister_extension(name:, **) if db_available? db_deregister(name) else store.deregister(name) end { success: true, name: name } rescue ArgumentError => e { success: false, error: e. } end |
#extension_status(name:) ⇒ Object
47 48 49 50 51 52 53 54 55 56 |
# File 'lib/legion/extensions/agentic/self/metacognition/runners/registry.rb', line 47 def extension_status(name:, **) ext = if db_available? db_get(name) else store.get(name) end return { success: false, error: :not_found } unless ext { success: true, extension: ext } end |
#list_extensions(status: nil, category: nil) ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/legion/extensions/agentic/self/metacognition/runners/registry.rb', line 38 def list_extensions(status: nil, category: nil, **) extensions = if db_available? db_list(status: status, category: category) else store.list(status: status, category: category) end { success: true, extensions: extensions, count: extensions.size } end |
#register_extension(name:, module_name:, category: 'cognition') ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/legion/extensions/agentic/self/metacognition/runners/registry.rb', line 12 def register_extension(name:, module_name:, category: 'cognition', **) entry = build_entry(name: name, module_name: module_name, category: category, **) if db_available? db_register(entry) else store.register(entry) end Legion::Logging.info "[metacognition:registry] registered #{name} (#{category})" { success: true, name: name, category: category } rescue ArgumentError => e { success: false, error: e. } end |
#seed_from_constants ⇒ Object
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/legion/extensions/agentic/self/metacognition/runners/registry.rb', line 91 def seed_from_constants(**) capabilities = Helpers::Constants::EXTENSION_CAPABILITIES seeded = 0 capabilities.each do |mod_name, category| snake = mod_name.to_s.gsub(/([A-Z])/, '_\1').sub(/^_/, '').downcase lex_name = "lex-#{snake.tr('_', '-')}" next if extension_status(name: lex_name)[:success] register_extension( name: lex_name, module_name: mod_name.to_s, category: category.to_s ) seeded += 1 end { success: true, seeded: seeded, total: capabilities.size } end |
#update_extension(name:, attrs: {}) ⇒ Object
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/legion/extensions/agentic/self/metacognition/runners/registry.rb', line 58 def update_extension(name:, attrs: {}, **) result = if db_available? db_update(name, attrs) else store.update(name, attrs) end return { success: false, error: :not_found } unless result { success: true, extension: result } end |