Module: Legion::Extensions::Builder::Skills

Includes:
Base
Included in:
Core
Defined in:
lib/legion/extensions/builders/skills.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Base

#const_defined_two?, #define_constant_two, #define_get, #find_files, #require_files

Instance Attribute Details

#skillsObject (readonly)

Returns the value of attribute skills.



11
12
13
# File 'lib/legion/extensions/builders/skills.rb', line 11

def skills
  @skills
end

Instance Method Details

#build_skill_listObject



26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/legion/extensions/builders/skills.rb', line 26

def build_skill_list
  skill_files.each do |file|
    skill_name       = file.split('/').last.sub('.rb', '')
    skill_class_name = "#{lex_class}::Skills::#{skill_name.split('_').collect(&:capitalize).join}"
    loaded_skill     = Kernel.const_get(skill_class_name)
    Legion::LLM::Skills::Registry.register(loaded_skill)
    @skills[skill_name.to_sym] = {
      skill_class:  skill_class_name,
      skill_module: loaded_skill
    }
    Legion::Logging.debug "[Skills] registered: #{skill_class_name}" if defined?(Legion::Logging)
  end
end

#build_skillsObject



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/legion/extensions/builders/skills.rb', line 13

def build_skills
  return unless Object.const_defined?('Legion::LLM::Skills', false)
  return unless Object.const_defined?('Legion::LLM', false) &&
                Legion::LLM.respond_to?(:started?) && Legion::LLM.started?
  return if Legion::LLM.settings.dig(:skills, :enabled) == false

  @skills = {}
  lex_mod = lex_class.is_a?(::Module) ? lex_class : ::Kernel.const_get(lex_class.to_s)
  lex_mod.const_set(:Skills, ::Module.new) unless lex_mod.const_defined?(:Skills, false)
  require_files(skill_files)
  build_skill_list
end

#skill_filesObject



40
41
42
# File 'lib/legion/extensions/builders/skills.rb', line 40

def skill_files
  @skill_files ||= find_files('skills')
end