mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 11:53:49 +07:00
[AIA] Tool progress reporting from the tools
(cherry picked from commit d0a19938a67427ef3540f35b203b3082d8139b1d) GitOrigin-RevId: 471d4faf12d929986050bb0fc729b8254ee981df
This commit is contained in:
committed by
intellij-monorepo-bot
parent
786d591b05
commit
2c814de7d8
@@ -1,6 +1,7 @@
|
|||||||
package com.intellij.mcpserver
|
package com.intellij.mcpserver
|
||||||
|
|
||||||
import com.intellij.openapi.vfs.VirtualFile
|
import com.intellij.openapi.vfs.VirtualFile
|
||||||
|
import com.intellij.util.application
|
||||||
import com.intellij.util.messages.Topic
|
import com.intellij.util.messages.Topic
|
||||||
|
|
||||||
interface ToolCallListener {
|
interface ToolCallListener {
|
||||||
@@ -12,6 +13,8 @@ interface ToolCallListener {
|
|||||||
fun beforeMcpToolCall(mcpToolDescriptor: McpToolDescriptor) {}
|
fun beforeMcpToolCall(mcpToolDescriptor: McpToolDescriptor) {}
|
||||||
|
|
||||||
fun afterMcpToolCall(mcpToolDescriptor: McpToolDescriptor, events: List<McpToolSideEffectEvent>) {}
|
fun afterMcpToolCall(mcpToolDescriptor: McpToolDescriptor, events: List<McpToolSideEffectEvent>) {}
|
||||||
|
|
||||||
|
fun toolActivity(toolDescription: String) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed interface McpToolSideEffectEvent
|
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 FileDeletedEvent(val file: VirtualFile, val content: String?) : FileEvent
|
||||||
class FileMovedEvent(val file: VirtualFile, val oldParent: VirtualFile, val newParent: VirtualFile) : 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
|
class FileContentChangeEvent(val file: VirtualFile, val oldContent: String?, val newContent: String) : FileEvent
|
||||||
|
|
||||||
|
fun reportToolActivity(toolDescription: String) {
|
||||||
|
application.messageBus.syncPublisher(ToolCallListener.TOPIC).toolActivity(toolDescription)
|
||||||
|
}
|
||||||
@@ -7,12 +7,9 @@ import com.intellij.analysis.problemsView.ProblemsCollector
|
|||||||
import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerEx
|
import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerEx
|
||||||
import com.intellij.codeInsight.daemon.impl.HighlightInfo
|
import com.intellij.codeInsight.daemon.impl.HighlightInfo
|
||||||
import com.intellij.lang.annotation.HighlightSeverity
|
import com.intellij.lang.annotation.HighlightSeverity
|
||||||
import com.intellij.mcpserver.McpServerBundle
|
import com.intellij.mcpserver.*
|
||||||
import com.intellij.mcpserver.McpToolset
|
|
||||||
import com.intellij.mcpserver.annotations.McpDescription
|
import com.intellij.mcpserver.annotations.McpDescription
|
||||||
import com.intellij.mcpserver.annotations.McpTool
|
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.toolsets.Constants
|
||||||
import com.intellij.mcpserver.util.projectDirectory
|
import com.intellij.mcpserver.util.projectDirectory
|
||||||
import com.intellij.mcpserver.util.resolveInProject
|
import com.intellij.mcpserver.util.resolveInProject
|
||||||
@@ -54,6 +51,7 @@ class AnalysisToolset : McpToolset {
|
|||||||
@McpDescription(Constants.TIMEOUT_MILLISECONDS_DESCRIPTION)
|
@McpDescription(Constants.TIMEOUT_MILLISECONDS_DESCRIPTION)
|
||||||
timeout: Int = Constants.MEDIUM_TIMEOUT_MILLISECONDS_VALUE,
|
timeout: Int = Constants.MEDIUM_TIMEOUT_MILLISECONDS_VALUE,
|
||||||
): FileProblemsResult {
|
): FileProblemsResult {
|
||||||
|
reportToolActivity("Collecting problems in file $filePath")
|
||||||
val project = currentCoroutineContext().project
|
val project = currentCoroutineContext().project
|
||||||
val projectDir = project.projectDirectory
|
val projectDir = project.projectDirectory
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user