From 2c814de7d891944a43352e41de4bd5735c998838 Mon Sep 17 00:00:00 2001 From: "Artem.Bukhonov" Date: Fri, 11 Jul 2025 23:09:56 +0200 Subject: [PATCH] [AIA] Tool progress reporting from the tools (cherry picked from commit d0a19938a67427ef3540f35b203b3082d8139b1d) GitOrigin-RevId: 471d4faf12d929986050bb0fc729b8254ee981df --- .../src/com/intellij/mcpserver/ToolCallListener.kt | 7 +++++++ .../intellij/mcpserver/toolsets/general/AnalysisToolset.kt | 6 ++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/plugins/mcp-server/src/com/intellij/mcpserver/ToolCallListener.kt b/plugins/mcp-server/src/com/intellij/mcpserver/ToolCallListener.kt index a33d91ffc829..729d15cb7df2 100644 --- a/plugins/mcp-server/src/com/intellij/mcpserver/ToolCallListener.kt +++ b/plugins/mcp-server/src/com/intellij/mcpserver/ToolCallListener.kt @@ -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) {} + + 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) +} \ No newline at end of file diff --git a/plugins/mcp-server/src/com/intellij/mcpserver/toolsets/general/AnalysisToolset.kt b/plugins/mcp-server/src/com/intellij/mcpserver/toolsets/general/AnalysisToolset.kt index 40ea2e24b911..f489e3de1784 100644 --- a/plugins/mcp-server/src/com/intellij/mcpserver/toolsets/general/AnalysisToolset.kt +++ b/plugins/mcp-server/src/com/intellij/mcpserver/toolsets/general/AnalysisToolset.kt @@ -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