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| (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
|