Skip to content

fix(amazonq): delete AwsServerCapabilitiesProvider #5833

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import com.intellij.openapi.util.Disposer
import com.intellij.ui.jcef.JBCefJSQuery
import org.cef.CefApp
import software.aws.toolkits.jetbrains.services.amazonq.CodeWhispererFeatureConfigService
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AwsServerCapabilitiesProvider
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.FlareUiMessage
import software.aws.toolkits.jetbrains.services.amazonq.profile.QRegionProfile
import software.aws.toolkits.jetbrains.services.amazonq.util.HighlightCommand
Expand Down Expand Up @@ -114,7 +113,7 @@ class Browser(parent: Disposable, private val webUri: URI, val project: Project)
): String {
val postMessageToJavaJsCode = receiveMessageQuery.inject("JSON.stringify(message)")
val connectorAdapterPath = "http://mynah/js/connectorAdapter.js"
generateQuickActionConfig()

// https://github.com/highlightjs/highlight.js/issues/1387
// language=HTML
val jsScripts = """
Expand Down Expand Up @@ -266,10 +265,6 @@ class Browser(parent: Disposable, private val webUri: URI, val project: Project)
activeProfile
}

private fun generateQuickActionConfig() = AwsServerCapabilitiesProvider.getInstance(project).getChatOptions().quickActions.quickActionsCommandGroups
.let { OBJECT_MAPPER.writeValueAsString(it) }
?: "[]"

companion object {
private const val MAX_ONBOARDING_PAGE_COUNT = 3
private val OBJECT_MAPPER = jacksonObjectMapper()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onEach
Expand All @@ -40,7 +41,6 @@
import software.aws.toolkits.jetbrains.services.amazonq.lsp.JsonRpcNotification
import software.aws.toolkits.jetbrains.services.amazonq.lsp.JsonRpcRequest
import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AwsServerCapabilitiesProvider
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ChatAsyncResultManager
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ChatCommunicationManager
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.FlareUiMessage
Expand Down Expand Up @@ -567,15 +567,19 @@
browser.postChat(cancelMessage)
}

private fun updateQuickActionsInBrowser(browser: Browser) {
private suspend fun updateQuickActionsInBrowser(browser: Browser) {
val isFeatureDevAvailable = isFeatureDevAvailable(project)
val isCodeTransformAvailable = isCodeTransformAvailable(project)
val isDocAvailable = isDocAvailable(project)
val isCodeScanAvailable = isCodeScanAvailable(project)
val isCodeTestAvailable = isCodeTestAvailable(project)

val serverCapabilities = AmazonQLspService.getInstance(project).instanceFlow.first().initializeResult.await().awsServerCapabilities

Check warning on line 577 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt#L577

Added line #L577 was not covered by tests

// language=JavaScript
val script = """
try {
// hack to create the list of actions across all tab types
const tempConnector = connectorAdapter.initiateAdapter(
false,
true, // the two values are not used here, needed for constructor
Expand All @@ -588,7 +592,7 @@
);

const commands = tempConnector.initialQuickActions?.slice(0, 2) || [];
const options = ${Gson().toJson(AwsServerCapabilitiesProvider.getInstance(project).getChatOptions())};
const options = ${Gson().toJson(serverCapabilities.chatOptions)};

Check warning on line 595 in plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/webview/BrowserConnector.kt#L595

Added line #L595 was not covered by tests
options.quickActions.quickActionsCommandGroups = [
...commands,
...options.quickActions.quickActionsCommandGroups
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ open class CodeWhispererTestBase {
get() = CompletableFuture()

override val initializeResult: Deferred<AwsExtendedInitializeResult>
get() = CompletableDeferred(AwsExtendedInitializeResult())
get() = CompletableDeferred(AwsExtendedInitializeResult(mockk()))

override val encryptionManager: JwtEncryptionManager
get() = TODO("Not yet implemented")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.asSharedFlow
import kotlinx.coroutines.flow.map

Check warning on line 40 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt

View workflow job for this annotation

GitHub Actions / Qodana Community for JVM

Unused import directive

Unused import directive
import kotlinx.coroutines.future.asCompletableFuture
import kotlinx.coroutines.isActive
import kotlinx.coroutines.launch
Expand Down Expand Up @@ -76,7 +76,6 @@
import software.aws.toolkits.jetbrains.services.amazonq.lsp.encryption.JwtEncryptionManager
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AmazonQLspTypeAdapterFactory
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AwsExtendedInitializeResult
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.AwsServerCapabilitiesProvider
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.createExtendedClientMetadata
import software.aws.toolkits.jetbrains.services.amazonq.lsp.textdocument.TextDocumentServiceHandler
import software.aws.toolkits.jetbrains.services.amazonq.lsp.util.WorkspaceFolderUtil.createWorkspaceFolders
Expand Down Expand Up @@ -155,7 +154,7 @@
constructor(project: Project, cs: CoroutineScope) : this(DefaultAmazonQServerInstanceStarter, project, cs)

private val _flowInstance = MutableSharedFlow<AmazonQServerInstanceFacade>(replay = 1, onBufferOverflow = BufferOverflow.DROP_OLDEST)
val instanceFlow = _flowInstance.asSharedFlow().map { it.languageServer }
val instanceFlow = _flowInstance.asSharedFlow()

Check warning on line 157 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/AmazonQLspService.kt#L157

Added line #L157 was not covered by tests

private var instance: Deferred<AmazonQServerInstanceFacade>

Expand Down Expand Up @@ -533,11 +532,6 @@
}
}

if (message is ResponseMessage && message.result is AwsExtendedInitializeResult) {
val result = message.result as AwsExtendedInitializeResult
AwsServerCapabilitiesProvider.getInstance(project).setAwsServerCapabilities(result.getAwsServerCapabilities())
}

// required
consumer?.consume(message)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.google.gson.stream.JsonReader
import com.google.gson.stream.JsonWriter
import org.eclipse.lsp4j.InitializeResult
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.AwsServerCapabilities
import java.io.IOException

class AmazonQLspTypeAdapterFactory : TypeAdapterFactory {
Expand All @@ -32,12 +33,4 @@
}
}

class AwsExtendedInitializeResult(awsServerCapabilities: AwsServerCapabilities? = null) : InitializeResult() {
private var awsServerCapabilities: AwsServerCapabilities? = null

fun getAwsServerCapabilities(): AwsServerCapabilities? = awsServerCapabilities

fun setAwsServerCapabilities(awsServerCapabilities: AwsServerCapabilities?) {
this.awsServerCapabilities = awsServerCapabilities
}
}
data class AwsExtendedInitializeResult(val awsServerCapabilities: AwsServerCapabilities) : InitializeResult()

Check warning on line 36 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/AmazonQLspTypeAdapterFactory.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/flareChat/AmazonQLspTypeAdapterFactory.kt#L36

Added line #L36 was not covered by tests
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,18 @@
)

data class AwsClientCapabilities(
val q: DeveloperProfiles,
val window: WindowSettings,
val q: QCapabilities,
val window: WindowCapabilities,

Check warning on line 21 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/ExtendedClientMetadata.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/ExtendedClientMetadata.kt#L20-L21

Added lines #L20 - L21 were not covered by tests
)

data class DeveloperProfiles(
data class QCapabilities(

Check warning on line 24 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/ExtendedClientMetadata.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/ExtendedClientMetadata.kt#L24

Added line #L24 was not covered by tests
val developerProfiles: Boolean,
val mcp: Boolean,
val pinnedContextEnabled: Boolean,
val workspaceFilePath: String?,
)

data class WindowSettings(
data class WindowCapabilities(

Check warning on line 31 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/ExtendedClientMetadata.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/ExtendedClientMetadata.kt#L31

Added line #L31 was not covered by tests
val showSaveFileDialog: Boolean,
)

Expand Down Expand Up @@ -62,13 +62,13 @@
name = metadata.parentProduct
),
awsClientCapabilities = AwsClientCapabilities(
q = DeveloperProfiles(
q = QCapabilities(

Check warning on line 65 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/ExtendedClientMetadata.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/ExtendedClientMetadata.kt#L65

Added line #L65 was not covered by tests
developerProfiles = true,
mcp = true,
pinnedContextEnabled = true,
workspaceFilePath = project.workspaceFile?.path,
),
window = WindowSettings(
window = WindowCapabilities(

Check warning on line 71 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/ExtendedClientMetadata.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/ExtendedClientMetadata.kt#L71

Added line #L71 was not covered by tests
showSaveFileDialog = true
)
),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,44 +1,10 @@
// 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.flareChat
package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws

import com.intellij.openapi.components.Service
import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat.IconType

@Service(Service.Level.PROJECT)
class AwsServerCapabilitiesProvider {
private var serverCapabilities: AwsServerCapabilities? = null

fun setAwsServerCapabilities(serverCapabilities: AwsServerCapabilities?) {
this.serverCapabilities = serverCapabilities
}

fun getChatOptions() = serverCapabilities?.chatOptions ?: DEFAULT_CHAT_OPTIONS

companion object {
fun getInstance(project: Project) = project.service<AwsServerCapabilitiesProvider>()

private val DEFAULT_CHAT_OPTIONS: ChatOptions = ChatOptions(
QuickActions(
listOf(
QuickActionsCommandGroups(
listOf(
QuickActionCommand("/help", "Learn more about Amazon Q then"),
QuickActionCommand("/clear", "Clear this session")
)
)
)
),
history = true,
export = true,
mcpServers = true
)
}
}

data class AwsServerCapabilities(
val chatOptions: ChatOptions,
)
Expand All @@ -48,6 +14,7 @@
val history: Boolean,
val export: Boolean,
val mcpServers: Boolean,
val modelSelection: Boolean,

Check warning on line 17 in plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/AwsServerCapabilities.kt

View check run for this annotation

Codecov / codecov/patch

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/model/aws/AwsServerCapabilities.kt#L17

Added line #L17 was not covered by tests
)

data class QuickActions(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat

import com.fasterxml.jackson.annotation.JsonProperty
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ContextCommand
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.ContextCommand

data class ChatPrompt(
val prompt: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
package software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.chat

import org.eclipse.lsp4j.TextDocumentIdentifier
import software.aws.toolkits.jetbrains.services.amazonq.lsp.flareChat.ContextCommand
import software.aws.toolkits.jetbrains.services.amazonq.lsp.model.aws.ContextCommand

data class ChatParams(
val tabId: String,
Expand Down
Loading