[AIA] Tool progress reporting from the tools

(cherry picked from commit d0a19938a67427ef3540f35b203b3082d8139b1d)

GitOrigin-RevId: 471d4faf12d929986050bb0fc729b8254ee981df
This commit is contained in:
Artem.Bukhonov
2025-07-11 23:09:56 +02:00
committed by intellij-monorepo-bot
parent 786d591b05
commit 2c814de7d8
2 changed files with 9 additions and 4 deletions

View File

@@ -1,6 +1,7 @@
package com.intellij.mcpserver
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.util.application
import com.intellij.util.messages.Topic
interface ToolCallListener {
@@ -12,6 +13,8 @@ interface ToolCallListener {
fun beforeMcpToolCall(mcpToolDescriptor: McpToolDescriptor) {}
fun afterMcpToolCall(mcpToolDescriptor: McpToolDescriptor, events: List<McpToolSideEffectEvent>) {}
fun toolActivity(toolDescription: String) {}
}
sealed interface McpToolSideEffectEvent
@@ -22,3 +25,7 @@ class FileCreatedEvent(val file: VirtualFile, val content: String) : FileEvent
class FileDeletedEvent(val file: VirtualFile, val content: String?) : FileEvent
class FileMovedEvent(val file: VirtualFile, val oldParent: VirtualFile, val newParent: VirtualFile) : FileEvent
class FileContentChangeEvent(val file: VirtualFile, val oldContent: String?, val newContent: String) : FileEvent
fun reportToolActivity(toolDescription: String) {
application.messageBus.syncPublisher(ToolCallListener.TOPIC).toolActivity(toolDescription)
}

View File

@@ -7,12 +7,9 @@ import com.intellij.analysis.problemsView.ProblemsCollector
import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerEx
import com.intellij.codeInsight.daemon.impl.HighlightInfo
import com.intellij.lang.annotation.HighlightSeverity
import com.intellij.mcpserver.McpServerBundle
import com.intellij.mcpserver.McpToolset
import com.intellij.mcpserver.*
import com.intellij.mcpserver.annotations.McpDescription
import com.intellij.mcpserver.annotations.McpTool
import com.intellij.mcpserver.mcpFail
import com.intellij.mcpserver.project
import com.intellij.mcpserver.toolsets.Constants
import com.intellij.mcpserver.util.projectDirectory
import com.intellij.mcpserver.util.resolveInProject
@@ -54,6 +51,7 @@ class AnalysisToolset : McpToolset {
@McpDescription(Constants.TIMEOUT_MILLISECONDS_DESCRIPTION)
timeout: Int = Constants.MEDIUM_TIMEOUT_MILLISECONDS_VALUE,
): FileProblemsResult {
reportToolActivity("Collecting problems in file $filePath")
val project = currentCoroutineContext().project
val projectDir = project.projectDirectory