Module: Legion::Extensions::MindGrowth::Runners::Composer
- Extended by:
- Composer
- Includes:
- Helpers::Lex
- Included in:
- Composer
- Defined in:
- lib/legion/extensions/mind_growth/runners/composer.rb
Constant Summary collapse
- CATEGORY_FLOW =
Category adjacency used for heuristic suggestions
[ %i[perception cognition], %i[cognition memory], %i[cognition introspection], %i[memory cognition], %i[introspection safety], %i[motivation cognition], %i[cognition communication], %i[communication coordination] ].freeze
Instance Method Summary collapse
- #add_composition(source_extension:, output_key:, target_extension:, target_method:, transform: nil) ⇒ Object
- #composition_stats ⇒ Object
- #evaluate_output(source_extension:, output:) ⇒ Object
- #list_compositions ⇒ Object
- #remove_composition(rule_id:) ⇒ Object
- #suggest_compositions(extensions:) ⇒ Object
Instance Method Details
#add_composition(source_extension:, output_key:, target_extension:, target_method:, transform: nil) ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/legion/extensions/mind_growth/runners/composer.rb', line 25 def add_composition(source_extension:, output_key:, target_extension:, target_method:, transform: nil, **) Helpers::CompositionMap.add_rule( source_extension: source_extension, output_key: output_key, target_extension: target_extension, target_method: target_method, transform: transform ) end |
#composition_stats ⇒ Object
60 61 62 |
# File 'lib/legion/extensions/mind_growth/runners/composer.rb', line 60 def composition_stats(**) { success: true, **Helpers::CompositionMap.stats } end |
#evaluate_output(source_extension:, output:) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/legion/extensions/mind_growth/runners/composer.rb', line 41 def evaluate_output(source_extension:, output:, **) matches = Helpers::CompositionMap.match_output( source_extension: source_extension, output: output ) dispatches = matches.map do |match| rule = match[:rule] value = match[:matched_value] input = rule[:transform] ? rule[:transform].call(value) : value { target_extension: rule[:target_extension], target_method: rule[:target_method], input: input } end { success: true, dispatches: dispatches, count: dispatches.size } end |
#list_compositions ⇒ Object
73 74 75 76 |
# File 'lib/legion/extensions/mind_growth/runners/composer.rb', line 73 def list_compositions(**) rules = Helpers::CompositionMap.all_rules { success: true, rules: rules, count: rules.size } end |
#remove_composition(rule_id:) ⇒ Object
36 37 38 39 |
# File 'lib/legion/extensions/mind_growth/runners/composer.rb', line 36 def remove_composition(rule_id:, **) result = Helpers::CompositionMap.remove_rule(rule_id: rule_id) { success: result[:success] } end |
#suggest_compositions(extensions:) ⇒ Object
64 65 66 67 68 69 70 71 |
# File 'lib/legion/extensions/mind_growth/runners/composer.rb', line 64 def suggest_compositions(extensions:, **) exts = Array(extensions) return suggest_with_llm(exts) if defined?(Legion::LLM) && Legion::LLM.respond_to?(:started?) && Legion::LLM.started? suggestions = heuristic_suggestions(exts) { success: true, suggestions: suggestions, count: suggestions.size } end |