Class: KairosMcp::DslSkillsProvider
- Inherits:
-
Object
- Object
- KairosMcp::DslSkillsProvider
- Defined in:
- lib/kairos_mcp/dsl_skills_provider.rb
Instance Method Summary collapse
- #ast ⇒ Object
- #get_skill(id) ⇒ Object
-
#initialize(dsl_path = nil, vector_search_enabled: true) ⇒ DslSkillsProvider
constructor
A new instance of DslSkillsProvider.
- #list_skills ⇒ Object
-
#rebuild_index ⇒ Boolean
Rebuild the vector search index.
-
#search_skills(query, max_results = 3, semantic: nil) ⇒ Array<Skill>
Search skills using vector search (semantic) or fallback (regex).
- #skills ⇒ Object
- #validate ⇒ Object
-
#vector_search_status ⇒ Hash
Get vector search status.
Constructor Details
#initialize(dsl_path = nil, vector_search_enabled: true) ⇒ DslSkillsProvider
Returns a new instance of DslSkillsProvider.
8 9 10 11 12 13 14 |
# File 'lib/kairos_mcp/dsl_skills_provider.rb', line 8 def initialize(dsl_path = nil, vector_search_enabled: true) @dsl_path = dsl_path || KairosMcp.dsl_path @skills = nil @vector_search_enabled = vector_search_enabled @vector_search = nil @index_built = false end |
Instance Method Details
#ast ⇒ Object
74 75 76 |
# File 'lib/kairos_mcp/dsl_skills_provider.rb', line 74 def ast @ast ||= SkillsAst.parse(@dsl_path) end |
#get_skill(id) ⇒ Object
24 25 26 |
# File 'lib/kairos_mcp/dsl_skills_provider.rb', line 24 def get_skill(id) skills.find { |s| s.id == id.to_sym } end |
#list_skills ⇒ Object
20 21 22 |
# File 'lib/kairos_mcp/dsl_skills_provider.rb', line 20 def list_skills skills.map { |s| { id: s.id, title: s.title, use_when: s.use_when } } end |
#rebuild_index ⇒ Boolean
Rebuild the vector search index
60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/kairos_mcp/dsl_skills_provider.rb', line 60 def rebuild_index documents = skills.map do |skill| { id: skill.id.to_s, text: build_searchable_text(skill), metadata: { title: skill.title, use_when: skill.use_when } } end result = vector_search.rebuild(documents) @index_built = result result end |
#search_skills(query, max_results = 3, semantic: nil) ⇒ Array<Skill>
Search skills using vector search (semantic) or fallback (regex)
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/kairos_mcp/dsl_skills_provider.rb', line 34 def search_skills(query, max_results = 3, semantic: nil) # Use semantic search if available and enabled use_semantic = semantic.nil? ? @vector_search_enabled : semantic if use_semantic && vector_search.semantic? semantic_search_skills(query, max_results) else regex_search_skills(query, max_results) end end |
#skills ⇒ Object
16 17 18 |
# File 'lib/kairos_mcp/dsl_skills_provider.rb', line 16 def skills @skills ||= SkillsDsl.load(@dsl_path) end |
#validate ⇒ Object
78 79 80 81 |
# File 'lib/kairos_mcp/dsl_skills_provider.rb', line 78 def validate nodes = SkillsAst.extract_skill_nodes(ast) SkillsAst.validate(nodes) end |
#vector_search_status ⇒ Hash
Get vector search status
48 49 50 51 52 53 54 55 |
# File 'lib/kairos_mcp/dsl_skills_provider.rb', line 48 def vector_search_status { enabled: @vector_search_enabled, semantic_available: VectorSearch.available?, index_built: @index_built, document_count: vector_search.count } end |