diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt index 33b01f12fab..72098976bfb 100644 --- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt +++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt @@ -114,6 +114,9 @@ import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.CodeWhisp import software.aws.toolkits.jetbrains.services.codewhisperer.codescan.CodeWhispererCodeScanManager import software.aws.toolkits.jetbrains.services.codewhisperer.settings.CodeWhispererConfigurable import software.aws.toolkits.jetbrains.services.codewhisperer.util.CodeWhispererConstants +import software.aws.toolkits.jetbrains.services.cwc.ChatConstants.FOOTER_INFO_LINK_CLICK +import software.aws.toolkits.jetbrains.services.cwc.ChatConstants.RESPONSE_BODY_LINK_CLICK +import software.aws.toolkits.jetbrains.services.cwc.ChatConstants.SOURCE_LINK_CLICK import software.aws.toolkits.jetbrains.settings.MeetQSettings import software.aws.toolkits.telemetry.MetricResult import software.aws.toolkits.telemetry.Telemetry @@ -387,16 +390,16 @@ class BrowserConnector( handleChat(AmazonQChatServer.insertToCursorPosition, enrichedNode) } - CHAT_LINK_CLICK -> { - handleChat(AmazonQChatServer.linkClick, node) + CHAT_LINK_CLICK, RESPONSE_BODY_LINK_CLICK -> { + node.get("params")?.get("link")?.asText()?.let { BrowserUtil.browse(it) } } - CHAT_INFO_LINK_CLICK -> { - handleChat(AmazonQChatServer.infoLinkClick, node) + CHAT_INFO_LINK_CLICK, FOOTER_INFO_LINK_CLICK -> { + node.get("params")?.get("link")?.asText()?.let { BrowserUtil.browse(it) } } - CHAT_SOURCE_LINK_CLICK -> { - handleChat(AmazonQChatServer.sourceLinkClick, node) + CHAT_SOURCE_LINK_CLICK, SOURCE_LINK_CLICK -> { + node.get("params")?.get("link")?.asText()?.let { BrowserUtil.browse(it) } } CHAT_FILE_CLICK -> { diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/theme/EditorThemeAdapter.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/theme/EditorThemeAdapter.kt index a845e3c19f3..53874353ef2 100644 --- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/theme/EditorThemeAdapter.kt +++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/theme/EditorThemeAdapter.kt @@ -91,7 +91,7 @@ class EditorThemeAdapter { defaultText = text, inactiveText = themeColor("TextField.inactiveForeground", default = 0x8C8C8C, darkDefault = 0x808080), - linkText = themeColor("link.foreground", "link", "Link.activeForeground", default = 0x589DF6), + linkText = themeColor("link", "Link.activeForeground", default = 0x589DF6), background = chatBackground, border = getBorderColor(currentScheme), diff --git a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/ChatConstants.kt b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/ChatConstants.kt index 09f73a27f68..430a67224e0 100644 --- a/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/ChatConstants.kt +++ b/plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/cwc/ChatConstants.kt @@ -11,4 +11,9 @@ object ChatConstants { const val CUSTOMER_MESSAGE_SIZE_LIMIT = 4_000 // Maximum size of the prompt message in characters (actual API limit: 4096) const val FQN_SIZE_MIN = 1 // Minimum length of fully qualified name in characters (inclusive) const val FQN_SIZE_LIMIT = 256 // Maximum length of fully qualified name in characters (exclusive, actual API limit: 256) + + // UI Message Types (correspond to TypeScript MessageCommand types) + const val FOOTER_INFO_LINK_CLICK = "footer-info-link-click" + const val RESPONSE_BODY_LINK_CLICK = "response-body-link-click" + const val SOURCE_LINK_CLICK = "source-link-click" }