Class: RailsConsoleAi::SkillLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_console_ai/skill_loader.rb

Constant Summary collapse

SKILLS_DIR =
'skills'

Instance Method Summary collapse

Constructor Details

#initialize(storage = nil) ⇒ SkillLoader

Returns a new instance of SkillLoader.



7
8
9
# File 'lib/rails_console_ai/skill_loader.rb', line 7

def initialize(storage = nil)
  @storage = storage || RailsConsoleAi.storage
end

Instance Method Details

#find_skill(name) ⇒ Object



30
31
32
33
# File 'lib/rails_console_ai/skill_loader.rb', line 30

def find_skill(name)
  skills = load_all_skills
  skills.find { |s| s['name'].to_s.downcase == name.to_s.downcase }
end

#load_all_skillsObject



11
12
13
14
15
16
17
# File 'lib/rails_console_ai/skill_loader.rb', line 11

def load_all_skills
  keys = @storage.list("#{SKILLS_DIR}/*.md")
  keys.filter_map { |key| load_skill(key) }
rescue => e
  RailsConsoleAi.logger.warn("RailsConsoleAi: failed to load skills: #{e.message}")
  []
end

#skill_summariesObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/rails_console_ai/skill_loader.rb', line 19

def skill_summaries
  skills = load_all_skills
  return nil if skills.empty?

  skills.map { |s|
    tags = Array(s['tags'])
    tag_str = tags.empty? ? '' : " [#{tags.join(', ')}]"
    "- **#{s['name']}**#{tag_str}: #{s['description']}"
  }
end