Skip to content

Commit 000e806

Browse files
Merge main into feature/q-lsp
2 parents acdcc9f + 97bd375 commit 000e806

File tree

4 files changed

+63
-7
lines changed

4 files changed

+63
-7
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@ const val DEFAULT_RETRY_LIMIT = 0
1919
// Max allowed size for a repository in bytes
2020
const val MAX_PROJECT_SIZE_BYTES: Long = 200 * 1024 * 1024
2121

22+
val CLIENT_ERROR_MESSAGES = setOf(
23+
"Improperly formed request",
24+
"Resource not found",
25+
"StartTaskAssistCodeGeneration reached for this month.",
26+
"The folder you chose did not contain any source files in a supported language. Choose another folder and try again.",
27+
"reached the quota for number of iterations on code generation."
28+
)
29+
2230
enum class ModifySourceFolderErrorReason(
2331
private val reasonText: String,
2432
) {

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ open class FeatureDevException(override val message: String?, val operation: Str
1717
fun reason(): String = this.javaClass.simpleName
1818

1919
fun reasonDesc(): String =
20-
when (desc) {
21-
desc -> "$operation | Description: $desc"
20+
when {
21+
!desc.isNullOrEmpty() -> "$operation | Description: $desc"
22+
!message.isNullOrEmpty() -> "$operation | Description: $message"
2223
else -> operation
2324
}
2425
}

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

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,19 @@ package software.aws.toolkits.jetbrains.services.amazonqFeatureDev.controller
55

66
import com.intellij.notification.NotificationAction
77
import software.aws.toolkits.jetbrains.services.amazonq.messages.MessagePublisher
8+
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.CLIENT_ERROR_MESSAGES
89
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.CODE_GENERATION_RETRY_LIMIT
10+
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.CodeIterationLimitException
11+
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.ContentLengthException
912
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.EmptyPatchException
1013
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.GuardrailsException
1114
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.MetricDataOperationName
1215
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.MetricDataResult
16+
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.MonthlyConversationLimitError
1317
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.NoChangeRequiredException
1418
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.PromptRefusalException
1519
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.ThrottlingException
20+
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.ZipFileCorruptedException
1621
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.messages.FeatureDevMessageType
1722
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.messages.FollowUp
1823
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.messages.FollowUpStatusType
@@ -154,7 +159,15 @@ suspend fun FeatureDevController.onCodeGeneration(
154159
messenger.sendUpdatePlaceholder(tabId = tabId, newPlaceholder = message("amazonqFeatureDev.placeholder.after_code_generation"))
155160
} catch (err: Exception) {
156161
when (err) {
157-
is GuardrailsException, is NoChangeRequiredException, is PromptRefusalException, is ThrottlingException -> {
162+
is GuardrailsException,
163+
is NoChangeRequiredException,
164+
is PromptRefusalException,
165+
is ThrottlingException,
166+
is CodeIterationLimitException,
167+
is MonthlyConversationLimitError,
168+
is ContentLengthException,
169+
is ZipFileCorruptedException,
170+
-> {
158171
session.sendMetricDataTelemetry(
159172
MetricDataOperationName.EndCodeGeneration,
160173
MetricDataResult.Error
@@ -167,10 +180,19 @@ suspend fun FeatureDevController.onCodeGeneration(
167180
)
168181
}
169182
else -> {
170-
session.sendMetricDataTelemetry(
171-
MetricDataOperationName.EndCodeGeneration,
172-
MetricDataResult.Fault
173-
)
183+
val errorMessage = err.message.orEmpty()
184+
185+
if (CLIENT_ERROR_MESSAGES.any { errorMessage.contains(it) }) {
186+
session.sendMetricDataTelemetry(
187+
MetricDataOperationName.EndCodeGeneration,
188+
MetricDataResult.Error
189+
)
190+
} else {
191+
session.sendMetricDataTelemetry(
192+
MetricDataOperationName.EndCodeGeneration,
193+
MetricDataResult.Fault
194+
)
195+
}
174196
}
175197
}
176198
throw err

plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonqFeatureDev/controller/FeatureDevControllerTest.kt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,19 @@ import software.aws.toolkits.jetbrains.services.amazonq.apps.AmazonQAppInitConte
3838
import software.aws.toolkits.jetbrains.services.amazonq.auth.AuthController
3939
import software.aws.toolkits.jetbrains.services.amazonq.auth.AuthNeededStates
4040
import software.aws.toolkits.jetbrains.services.amazonq.messages.MessagePublisher
41+
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.CodeIterationLimitException
42+
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.ContentLengthException
4143
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.EmptyPatchException
44+
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.FeatureDevException
4245
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.FeatureDevTestBase
4346
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.GuardrailsException
4447
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.MetricDataOperationName
4548
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.MetricDataResult
49+
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.MonthlyConversationLimitError
4650
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.NoChangeRequiredException
4751
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.PromptRefusalException
4852
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.ThrottlingException
53+
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.ZipFileCorruptedException
4954
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.clients.FeatureDevClient
5055
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.messages.FeatureDevMessageType
5156
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.messages.FollowUp
@@ -616,6 +621,26 @@ class FeatureDevControllerTest : FeatureDevTestBase() {
616621
ThrottlingException(operation = "GenerateCode", desc = "Request throttled"),
617622
MetricDataResult.Error
618623
),
624+
ErrorTestCase(
625+
MonthlyConversationLimitError(message = "Monthly limit reached", operation = "GenerateCode", desc = "Monthly limit reached"),
626+
MetricDataResult.Error
627+
),
628+
ErrorTestCase(
629+
CodeIterationLimitException(operation = "GenerateCode", desc = "Code iteration limit reached"),
630+
MetricDataResult.Error
631+
),
632+
ErrorTestCase(
633+
ContentLengthException(operation = "GenerateCode", desc = "Repo size is exceeding the limits"),
634+
MetricDataResult.Error
635+
),
636+
ErrorTestCase(
637+
ZipFileCorruptedException(operation = "GenerateCode", desc = "Zipped file is corrupted"),
638+
MetricDataResult.Error
639+
),
640+
ErrorTestCase(
641+
FeatureDevException(message = "Resource not found", operation = "GenerateCode", desc = null),
642+
MetricDataResult.Error
643+
),
619644
ErrorTestCase(
620645
RuntimeException("Unknown error"),
621646
MetricDataResult.Fault

0 commit comments

Comments
 (0)