in src/main/kotlin/org/jetbrains/mcpserverplugin/general/fileTools.kt [162:189]
override fun handle(project: Project, args: Query): Response {
val projectDir = project.guessProjectDir()?.toNioPathOrNull()
?: return Response(error = "project dir not found")
val searchSubstring = args.nameSubstring.toLowerCase()
return runReadAction {
Response(
FilenameIndex.getAllFilenames(project)
.filter { it.toLowerCase().contains(searchSubstring) }
.flatMap {
FilenameIndex.getVirtualFilesByName(it, GlobalSearchScope.projectScope(project))
}
.filter { file ->
try {
projectDir.relativize(Path(file.path))
true
} catch (e: IllegalArgumentException) {
false
}
}
.map { file ->
val relativePath = projectDir.relativize(Path(file.path)).toString()
"""{"path": "$relativePath", "name": "${file.name}"}"""
}
.joinToString(",\n", prefix = "[", postfix = "]")
)
}
}