Skip to content

Commit 3116734

Browse files
authored
deps(amazonq): Handle show document message from server (#5638)
* Show context options in prompt * Handle show document message from server * fix regression * Fix nesting for project context * detekt * detekt
1 parent 6f728bf commit 3116734

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,22 @@
44
package software.aws.toolkits.jetbrains.services.amazonq.lsp
55

66
import com.intellij.notification.NotificationType
7+
import com.intellij.openapi.application.ApplicationManager
8+
import com.intellij.openapi.fileEditor.FileEditorManager
79
import com.intellij.openapi.project.Project
10+
import com.intellij.openapi.vfs.VirtualFileManager
811
import migration.software.aws.toolkits.jetbrains.settings.AwsSettings
912
import org.eclipse.lsp4j.ConfigurationParams
1013
import org.eclipse.lsp4j.MessageActionItem
1114
import org.eclipse.lsp4j.MessageParams
1215
import org.eclipse.lsp4j.MessageType
1316
import org.eclipse.lsp4j.ProgressParams
1417
import org.eclipse.lsp4j.PublishDiagnosticsParams
18+
import org.eclipse.lsp4j.ShowDocumentParams
19+
import org.eclipse.lsp4j.ShowDocumentResult
1520
import org.eclipse.lsp4j.ShowMessageRequestParams
21+
import software.aws.toolkits.core.utils.getLogger
22+
import software.aws.toolkits.core.utils.warn
1623
import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection
1724
import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
1825
import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
@@ -56,6 +63,30 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
5663
showMessage(message)
5764
}
5865

66+
override fun showDocument(params: ShowDocumentParams?): CompletableFuture<ShowDocumentResult> {
67+
try {
68+
if (params == null || params.uri.isNullOrEmpty()) {
69+
return CompletableFuture.completedFuture(ShowDocumentResult(false))
70+
}
71+
72+
ApplicationManager.getApplication().invokeLater {
73+
try {
74+
val virtualFile = VirtualFileManager.getInstance().findFileByUrl(params.uri)
75+
?: throw IllegalArgumentException("Cannot find file: ${params.uri}")
76+
77+
FileEditorManager.getInstance(project).openFile(virtualFile, true)
78+
} catch (e: Exception) {
79+
LOG.warn { "Failed to show document: ${params.uri}" }
80+
}
81+
}
82+
83+
return CompletableFuture.completedFuture(ShowDocumentResult(true))
84+
} catch (e: Exception) {
85+
LOG.warn { "Error showing document" }
86+
return CompletableFuture.completedFuture(ShowDocumentResult(false))
87+
}
88+
}
89+
5990
override fun getConnectionMetadata(): CompletableFuture<ConnectionMetadata> =
6091
CompletableFuture.supplyAsync {
6192
val connection = ToolkitConnectionManager.getInstance(project)
@@ -132,4 +163,8 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
132163
error("Cannot handle partial chat")
133164
}
134165
}
166+
167+
companion object {
168+
private val LOG = getLogger<AmazonQLanguageClientImpl>()
169+
}
135170
}

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatPrompt.kt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33

44
package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
55

6+
import com.fasterxml.jackson.annotation.JsonProperty
7+
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.Command
8+
69
data class ChatPrompt(
710
val prompt: String,
811
val escapedPrompt: String,
@@ -17,10 +20,17 @@ data class SendChatPromptRequest(
1720
data class MidChatPrompt(
1821
val prompt: InnerChatPrompt,
1922
val tabId: String,
23+
val context: List<Command>?,
2024
)
2125

2226
data class InnerChatPrompt(
2327
val prompt: String,
2428
val escapedPrompt: String,
25-
val context: List<String>? = null,
29+
val context: List<Command>? = null,
30+
val options: InnerChatOptions?,
31+
)
32+
33+
data class InnerChatOptions(
34+
@JsonProperty("pair-programmer-mode")
35+
val pairProgrammingMode: String,
2636
)

0 commit comments

Comments
 (0)