Skip to content

Commit 643bc48

Browse files
authored
Merge branch 'aws:main' into feature/qca
2 parents 318cc2d + 4c49439 commit 643bc48

File tree

41 files changed

+230
-134
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+230
-134
lines changed

.changes/3.5.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"date" : "2024-05-23",
3+
"version" : "3.5",
4+
"entries" : [ {
5+
"type" : "bugfix",
6+
"description" : "Amazon Q Code Transformation: show exact error messages in chat when job fails"
7+
} ]
8+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "Fix recurring popup \"refreshing token\" whne users're typing in the IDE and Q connection expires"
4+
}

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
# _3.5_ (2024-05-23)
2+
- **(Bug Fix)** Amazon Q Code Transformation: show exact error messages in chat when job fails
3+
14
# _3.4_ (2024-05-16)
25
- **(Bug Fix)** Amazon Q Chat: Prompt input field in Q Chat tabs doesn't stop after it reaches to the given maxLength
36
- **(Bug Fix)** Amazon Q Chat: When window gets focus, even though the autoFocus property is set to true, input field doesn't get focus

buildSrc/src/main/kotlin/software/aws/toolkits/gradle/BuildScriptUtils.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import org.gradle.api.JavaVersion
88
import org.gradle.api.Project
99
import org.gradle.api.provider.Provider
1010
import software.aws.toolkits.gradle.intellij.IdeVersions
11-
import java.io.IOException
1211
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion as KotlinVersionEnum
1312

1413
/**
@@ -55,7 +54,7 @@ fun Project.buildMetadata() =
5554
append(".modified")
5655
}
5756
}
58-
} catch(e: IOException) {
57+
} catch(e: Exception) {
5958
logger.warn("Could not determine current commit", e)
6059

6160
"unknownCommit"

buildSrc/src/main/kotlin/toolkit-detekt.gradle.kts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,14 @@ dependencies {
2121
detektPlugins(project(":detekt-rules"))
2222
}
2323

24+
private val detektFiles = fileTree(projectDir).asFileTree.matching {
25+
include("**/*.kt", "**/*.kts")
26+
exclude("**/build/**")
27+
}
28+
2429
detekt {
2530
val rulesProject = project(":detekt-rules").projectDir
26-
source.setFrom(projectDir)
31+
source.setFrom(detektFiles)
2732
buildUponDefaultConfig = true
2833
parallel = true
2934
allRules = false
@@ -40,5 +45,5 @@ tasks.withType<Detekt> {
4045

4146
tasks.withType<DetektCreateBaselineTask> {
4247
// weird issue where the baseline tasks can't find the source code
43-
source.plus(projectDir)
48+
source.plus(detektFiles)
4449
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44
# Toolkit Version
5-
toolkitVersion=3.5-SNAPSHOT
5+
toolkitVersion=3.6-SNAPSHOT
66

77
# Publish Settings
88
publishToken=

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ kotlinCoroutines = "1.7.3"
2121
mockito = "5.11.0"
2222
mockitoKotlin = "5.2.1"
2323
mockk = "1.13.10"
24-
node-gradle = "7.0.1"
25-
telemetryGenerator = "1.0.207"
24+
node-gradle = "7.0.2"
25+
telemetryGenerator = "1.0.212"
2626
testLogger = "4.0.0"
2727
testRetry = "1.5.2"
2828
# test-only; platform provides slf4j transitively at runtime. <233, 1.7.36; >=233, 2.0.9

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/controller/FeatureDevController.kt

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ import software.aws.toolkits.jetbrains.services.cwc.controller.chat.telemetry.ge
6666
import software.aws.toolkits.jetbrains.ui.feedback.FeatureDevFeedbackDialog
6767
import software.aws.toolkits.resources.message
6868
import software.aws.toolkits.telemetry.AmazonqTelemetry
69+
import software.aws.toolkits.telemetry.Result
6970
import java.util.UUID
7071

7172
class FeatureDevController(
@@ -230,6 +231,7 @@ class FeatureDevController(
230231
override suspend fun processFileClicked(message: IncomingFeatureDevMessage.FileClicked) {
231232
val fileToUpdate = message.filePath
232233
val session = getSessionInfo(message.tabId)
234+
val messageId = message.messageId
233235

234236
var filePaths: List<NewFileZipInfo> = emptyList()
235237
var deletedFiles: List<DeletedFileInfo> = emptyList()
@@ -244,7 +246,7 @@ class FeatureDevController(
244246
filePaths.find { it.zipFilePath == fileToUpdate }?.let { it.rejected = !it.rejected }
245247
deletedFiles.find { it.zipFilePath == fileToUpdate }?.let { it.rejected = !it.rejected }
246248

247-
messenger.updateFileComponent(message.tabId, filePaths, deletedFiles)
249+
messenger.updateFileComponent(message.tabId, filePaths, deletedFiles, messageId)
248250
}
249251

250252
private suspend fun newTabOpened(tabId: String) {
@@ -613,18 +615,26 @@ class FeatureDevController(
613615
status = FollowUpStatusType.Info,
614616
)
615617

618+
var result: Result = Result.Failed
619+
var reason: String? = null
620+
616621
withContext(EDT) {
617622
val selectedFolder = FileChooser.chooseFile(fileChooserDescriptor, context.project, uri)
623+
624+
// No folder was selected
618625
if (selectedFolder == null) {
619626
logger.info { "Cancelled dialog and not selected any folder" }
620627

621628
messenger.sendSystemPrompt(
622629
tabId = tabId,
623630
followUp = listOf(modifyFolderFollowUp),
624631
)
632+
633+
reason = "ClosedBeforeSelection"
625634
return@withContext
626635
}
627636

637+
// The folder is not in the workspace
628638
if (selectedFolder.parent.path != uri.path) {
629639
logger.info { "Selected folder not in workspace: ${selectedFolder.path}" }
630640

@@ -638,19 +648,29 @@ class FeatureDevController(
638648
tabId = tabId,
639649
followUp = listOf(modifyFolderFollowUp),
640650
)
651+
652+
reason = "NotInWorkspaceFolder"
641653
return@withContext
642654
}
643655

644656
logger.info { "Selected correct folder inside workspace: ${selectedFolder.path}" }
645657

646658
session.context.projectRoot = selectedFolder
659+
result = Result.Succeeded
647660

648661
messenger.sendAnswer(
649662
tabId = tabId,
650663
messageType = FeatureDevMessageType.Answer,
651664
message = message("amazonqFeatureDev.follow_up.modified_source_folder", selectedFolder.path),
652665
)
653666
}
667+
668+
AmazonqTelemetry.modifySourceFolder(
669+
amazonqConversationId = session.conversationId,
670+
credentialStartUrl = getStartUrl(project = context.project),
671+
result = result,
672+
reason = reason
673+
)
654674
}
655675

656676
private fun sendFeedback() {

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/messages/FeatureDevMessage.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,8 @@ data class UpdatePlaceholderMessage(
133133
data class FileComponent(
134134
@JsonProperty("tabID") override val tabId: String,
135135
val filePaths: List<NewFileZipInfo>,
136-
val deletedFiles: List<DeletedFileInfo>
136+
val deletedFiles: List<DeletedFileInfo>,
137+
val messageId: String
137138
) : UiMessage(
138139
tabId = tabId,
139140
type = "updateFileComponent"

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/messages/FeatureDevMessagePublisherExtensions.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,12 @@ suspend fun MessagePublisher.sendSystemPrompt(
5858
)
5959
}
6060

61-
suspend fun MessagePublisher.updateFileComponent(tabId: String, filePaths: List<NewFileZipInfo>, deletedFiles: List<DeletedFileInfo>) {
61+
suspend fun MessagePublisher.updateFileComponent(tabId: String, filePaths: List<NewFileZipInfo>, deletedFiles: List<DeletedFileInfo>, messageId: String) {
6262
val fileComponentMessage = FileComponent(
6363
tabId = tabId,
6464
filePaths = filePaths,
6565
deletedFiles = deletedFiles,
66+
messageId = messageId,
6667
)
6768
this.publish(fileComponentMessage)
6869
}

0 commit comments

Comments
 (0)