Class: Klee::MCP::Tools::ExploreConcept

Inherits:
MCP::Tool
  • Object
show all
Defined in:
lib/klee/mcp/tools/explore_concept.rb

Class Method Summary collapse

Class Method Details

.call(patterns:, concept:, threshold: 1, ignore: [], server_context: nil) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/klee/mcp/tools/explore_concept.rb', line 34

def call(patterns:, concept:, threshold: 1, ignore: [], server_context: nil)
  validator = Klee::MCP::PathValidator.new
  validator.validate!(patterns)

  codebase = Klee.scan(*patterns, ignore: ignore, threshold: threshold)
  concept_data = codebase.concepts[concept]

  collaborator_pairs = codebase.collaborators.for(concept)
  co_occurs_with = collaborator_pairs.keys.sort_by { |k| -collaborator_pairs[k] }

  methods = concept_data[:methods].to_a
  naming_patterns = methods.group_by { |m| extract_pattern(m, concept) }
    .transform_values(&:sort)

  result = {
    concept: concept,
    appears_in: {
      classes: concept_data[:classes].to_a.sort,
      methods: methods.sort
    },
    co_occurs_with: co_occurs_with,
    naming_patterns: naming_patterns
  }

  ::MCP::Tool::Response.new([{
    type: "text",
    text: JSON.pretty_generate(result)
  }])
end