Repository: aws/aws-toolkit-jetbrains
Pull request #5630: deps(amazonq): client handles openTab requests from server
Author: login: samgst-amazon
Created: 2025-04-24T00:03:30Z | Merged: 2025-04-24T17:58:47Z

<!--- If you are a new contributor, please take a look at the README and CONTRIBUTING documents --->
<!--- Provide a general summary of your changes in the Title above -->

## Types of changes
<!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)

## Description
<!--- Describe your changes in detail -->
<!--- If appropriate, providing screenshots will help us review your contribution -->
<!--- If there is a related issue, please provide a link here -->

## Checklist
- [ ] My code follows the code style of this project
- [ ] I have added tests to cover my changes
- [ ] A short description of the change has been added to the **[CHANGELOG](https://github.com/aws/aws-toolkit-jetbrains/blob/master/CONTRIBUTING.md#contributing-via-pull-requests)** if the change is customer-facing in the IDE.
- [ ] I have added metrics for my changes (if required)
 
## License
I confirm that my contribution is made under the terms of the Apache 2.0 license.



Diff:
diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClient.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClient.kt
index 8932881568f..74e007f2a76 100644
--- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClient.kt
+++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClient.kt
@@ -5,6 +5,8 @@ package software.aws.toolkits.jetbrains.services.amazonq.lsp
 
 import org.eclipse.lsp4j.jsonrpc.services.JsonRequest
 import org.eclipse.lsp4j.services.LanguageClient
+import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabParams
+import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabResult
 import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.ConnectionMetadata
 import java.util.concurrent.CompletableFuture
 
@@ -15,4 +17,7 @@ import java.util.concurrent.CompletableFuture
 interface AmazonQLanguageClient : LanguageClient {
     @JsonRequest("aws/credentials/getConnectionMetadata")
     fun getConnectionMetadata(): CompletableFuture<ConnectionMetadata>
+
+    @JsonRequest("aws/chat/openTab")
+    fun openTab(params: OpenTabParams): CompletableFuture<OpenTabResult>
 }
diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt
index 6d4c0f171ac..4875e0ccc19 100644
--- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt
+++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLanguageClientImpl.kt
@@ -16,6 +16,8 @@ import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection
 import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
 import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
 import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ChatCommunicationManager
+import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabParams
+import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.OpenTabResult
 import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.ConnectionMetadata
 import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.credentials.SsoProfileData
 import software.aws.toolkits.jetbrains.settings.CodeWhispererSettings
@@ -72,6 +74,10 @@ class AmazonQLanguageClientImpl(private val project: Project) : AmazonQLanguageC
             }
         }
 
+    override fun openTab(params: OpenTabParams): CompletableFuture<OpenTabResult> =
+        // TODO implement chat history, this is here to unblock chat functionality
+        CompletableFuture.completedFuture(OpenTabResult(""))
+
     override fun configuration(params: ConfigurationParams): CompletableFuture<List<Any>> {
         if (params.items.isEmpty()) {
             return CompletableFuture.completedFuture(null)
diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
new file mode 100644
index 00000000000..a0e8a101009
--- /dev/null
+++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
@@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class ButtonStatus {
+    MAIN,
+    PRIMARY,
+    CLEAR,
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class MessageType {
+    ANSWER,
+    PROMPT,
+    SYSTEM_PROMPT,
+    DIRECTIVE,
+    TOOL,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+}
diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/FlareChatCommands.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/FlareChatCommands.kt
index 6cadd787874..967d2f9f0a4 100644
--- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/FlareChatCommands.kt
+++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/FlareChatCommands.kt
@@ -16,4 +16,5 @@ const val CHAT_FOLLOW_UP_CLICK = "aws/chat/followUpClick"
 const val CHAT_TAB_ADD = "aws/chat/tabAdd"
 const val CHAT_TAB_CHANGE = "aws/chat/tabChange"
 const val CHAT_TAB_REMOVE = "aws/chat/tabRemove"
+const val CHAT_OPEN_TAB = "aws/chat/openTab"
 const val CHAT_BUTTON_CLICK = "aws/chat/buttonClick"
diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/TabEvent.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/TabEvent.kt
index 1bccc05cdc9..d561c2833be 100644
--- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/TabEvent.kt
+++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/TabEvent.kt
@@ -11,3 +11,27 @@ data class TabEventRequest(
 data class TabEventParams(
     val tabId: String,
 )
+
+data class OpenTabResult(
+    val tabId: String,
+)
+
+data class OpenTabParams(
+    val tabId: String? = null,
+    val newTabOptions: NewTabOptions? = null,
+)
+
+data class NewTabOptions(
+    val state: TabState? = null,
+    val data: TabData? = null,
+)
+
+data class TabState(
+    val inProgress: Boolean? = null,
+    val cancellable: Boolean? = null,
+)
+
+data class TabData(
+    val placeholderText: String? = null,
+    val messages: List<ChatMessage>,
+)


Reviews:
user: login: github-advanced-security[bot]
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-24T00:30:40Z
user: login: manodnyab
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-24T16:33:06Z
user: login: github-advanced-security[bot]
state: COMMENTED
author_association: NONE
submitted_at: 2025-04-24T17:37:15Z

Review comments:
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Function "fromString" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9880)
created_at: 2025-04-24T00:30:39Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "INFO" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9893)
created_at: 2025-04-24T00:30:39Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "SUCCESS" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9881)
created_at: 2025-04-24T00:30:39Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "WARNING" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9878)
created_at: 2025-04-24T00:30:39Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "ERROR" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9885)
created_at: 2025-04-24T00:30:39Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class ButtonStatus {
+    MAIN,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "MAIN" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9877)
created_at: 2025-04-24T00:30:39Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class ButtonStatus {
+    MAIN,
+    PRIMARY,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "PRIMARY" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9886)
created_at: 2025-04-24T00:30:39Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class ButtonStatus {
+    MAIN,
+    PRIMARY,
+    CLEAR,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "CLEAR" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9882)
created_at: 2025-04-24T00:30:39Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class ButtonStatus {
+    MAIN,
+    PRIMARY,
+    CLEAR,
+    INFO,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "INFO" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9887)
created_at: 2025-04-24T00:30:39Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class ButtonStatus {
+    MAIN,
+    PRIMARY,
+    CLEAR,
+    INFO,
+    SUCCESS,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "SUCCESS" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9892)
created_at: 2025-04-24T00:30:39Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class ButtonStatus {
+    MAIN,
+    PRIMARY,
+    CLEAR,
+    INFO,
+    SUCCESS,
+    WARNING,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "WARNING" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9884)
created_at: 2025-04-24T00:30:39Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class ButtonStatus {
+    MAIN,
+    PRIMARY,
+    CLEAR,
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "ERROR" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9888)
created_at: 2025-04-24T00:30:40Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class ButtonStatus {
+    MAIN,
+    PRIMARY,
+    CLEAR,
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class MessageType {
+    ANSWER,
+    PROMPT,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "PROMPT" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9890)
created_at: 2025-04-24T00:30:40Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class ButtonStatus {
+    MAIN,
+    PRIMARY,
+    CLEAR,
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class MessageType {
+    ANSWER,
+    PROMPT,
+    SYSTEM_PROMPT,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "SYSTEM_PROMPT" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9891)
created_at: 2025-04-24T00:30:40Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class ButtonStatus {
+    MAIN,
+    PRIMARY,
+    CLEAR,
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class MessageType {
+    ANSWER,
+    PROMPT,
+    SYSTEM_PROMPT,
+    DIRECTIVE,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "DIRECTIVE" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9889)
created_at: 2025-04-24T00:30:40Z
author_association: NONE
diff_hunk: @@ -0,0 +1,127 @@
+// Copyright 2025 Amazon.com, Inc. or its affiliates. All Rights Reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat
+
+data class ChatMessage(
+    val type: MessageType? = MessageType.ANSWER,
+    val header: MessageHeader? = null,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+)
+
+data class MessageHeader(
+    val type: MessageType? = MessageType.ANSWER,
+    val buttons: List<Button>? = null,
+    val body: String? = null,
+    val messageId: String? = null,
+    val canBeVoted: Boolean? = null,
+    val relatedContent: RelatedContent? = null,
+    val followUp: FollowUp? = null,
+    val codeReference: List<ReferenceTrackerInformation>? = null,
+    val fileList: FileList? = null,
+    val contextList: FileList? = null,
+    val icon: IconType? = null,
+    val status: MessageStatus? = null,
+)
+
+data class MessageStatus(
+    val status: Status? = null,
+    val icon: IconType? = null,
+    val text: String? = null,
+)
+
+data class Button(
+    val id: String,
+    val text: String? = null,
+    val description: String? = null,
+    val icon: IconType? = null,
+    val disabled: Boolean? = null,
+    val keepCardAfterClick: Boolean? = null,
+    val status: ButtonStatus? = null,
+)
+
+data class FileList(
+    val rootFolderTitle: String? = null,
+    val filePaths: List<String>? = null,
+    val deletedFiles: List<String>? = null,
+    val details: Map<String, FileDetails>? = null,
+)
+
+data class FileDetails(
+    val description: String? = null,
+    val lineRanges: List<Pair<Int, Int>>? = null,
+    val changes: Changes? = null,
+)
+
+data class Changes(
+    val added: Int? = null,
+    val deleted: Int? = null,
+    val total: Int? = null,
+)
+
+enum class IconType {
+    FILE,
+    FOLDER,
+    CODE_BLOCK,
+    LIST_ADD,
+    MAGIC,
+    HELP,
+    TRASH,
+    SEARCH,
+    CALENDAR,
+    ;
+
+    val value: String
+        get() = name.lowercase().replace('_', '-')
+
+    companion object {
+        private val stringToEnum: Map<String, IconType> = entries.associateBy { it.name.lowercase() }
+
+        fun fromString(value: String): IconType = stringToEnum[value] ?: throw IllegalArgumentException("Unknown IconType: $value")
+    }
+}
+
+enum class Status {
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class ButtonStatus {
+    MAIN,
+    PRIMARY,
+    CLEAR,
+    INFO,
+    SUCCESS,
+    WARNING,
+    ERROR,
+    ;
+
+    val value: String
+        get() = name.lowercase()
+}
+
+enum class MessageType {
+    ANSWER,
+    PROMPT,
+    SYSTEM_PROMPT,
+    DIRECTIVE,
+    TOOL,
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/ChatMessage.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Class "TOOL" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9879)
created_at: 2025-04-24T00:30:40Z
author_association: NONE
diff_hunk: @@ -14,3 +14,4 @@
 const val CHAT_TAB_ADD = "aws/chat/tabAdd"
 const val CHAT_TAB_CHANGE = "aws/chat/tabChange"
 const val CHAT_TAB_REMOVE = "aws/chat/tabRemove"
+const val CHAT_OPEN_TAB = "aws/chat/openTab"
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/FlareChatCommands.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Property "CHAT_OPEN_TAB" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9883)
created_at: 2025-04-24T00:30:40Z
author_association: NONE
diff_hunk: @@ -14,4 +14,5 @@
 const val CHAT_TAB_ADD = "aws/chat/tabAdd"
 const val CHAT_TAB_CHANGE = "aws/chat/tabChange"
 const val CHAT_TAB_REMOVE = "aws/chat/tabRemove"
+const val CHAT_OPEN_TAB = "aws/chat/openTab"
path: plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/chat/FlareChatCommands.kt
user: login: github-advanced-security[bot]
body: ## Unused symbol

Property "CHAT_OPEN_TAB" is never used

[Show more details](https://github.com/aws/aws-toolkit-jetbrains/security/code-scanning/9895)
created_at: 2025-04-24T17:37:15Z
author_association: NONE

PR comments:
user: login: samgst-amazon
created_at: 2025-04-24T00:21:51Z
body: This is needed to unblock chat responses but needs a lot more work
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-04-24T00:30:33Z
body: # [Qodana](https://qodana.cloud/projects/AGMd2/reports/Bq99G) Community for JVM

**17 new problems** were found

| Inspection name | Severity | Problems |
| --- | --- | --- |
| `Unused symbol` | 🔶 Warning | 17 |


💡 Qodana analysis was run in the pull request mode: only the changed files were checked
☁️ [View the detailed Qodana report](https://qodana.cloud/projects/AGMd2/reports/Bq99G)

<details>
<summary>Contact Qodana team</summary>

Contact us at [qodana-support@jetbrains.com](mailto:qodana-support@jetbrains.com)
  - Or via our issue tracker: https://jb.gg/qodana-issue
  - Or share your feedback: https://jb.gg/qodana-discussions
</details>
<!-- JetBrains/qodana-action@v2024.2.3 : Qodana Community for JVM -->
author_association: NONE