Skip to content

Commit da7587f

Browse files
author
Viktor Shesternyak
committed
fix(amazonq): /doc enable text input in edit mode for retries and use it instead of retry button
1 parent 5e5ba0e commit da7587f

File tree

3 files changed

+54
-30
lines changed

3 files changed

+54
-30
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "AmazonQ doc agent: Enable text input in edit mode for retries and use it instead of retry button"
4+
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqDoc/controller/DocController.kt

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -379,7 +379,8 @@ class DocController(
379379
tabId = message.tabId,
380380
errMessage = message("amazonqFeatureDev.exception.open_diff_failed"),
381381
retries = 0,
382-
conversationId = session.conversationIdUnsafe
382+
conversationId = session.conversationIdUnsafe,
383+
mode = mode
383384
)
384385
}
385386
}
@@ -431,7 +432,8 @@ class DocController(
431432
tabId = tabId,
432433
errMessage = message ?: message("amazonqFeatureDev.exception.request_failed"),
433434
retries = retriesRemaining(session),
434-
conversationId = session?.conversationIdUnsafe
435+
conversationId = session?.conversationIdUnsafe,
436+
mode = mode
435437
)
436438
}
437439
}
@@ -482,7 +484,8 @@ class DocController(
482484
tabId = tabId,
483485
errMessage = message ?: message("amazonqFeatureDev.exception.insert_code_failed"),
484486
retries = retriesRemaining(session),
485-
conversationId = session?.conversationIdUnsafe
487+
conversationId = session?.conversationIdUnsafe,
488+
mode = mode
486489
)
487490
}
488491
}
@@ -563,7 +566,8 @@ class DocController(
563566
tabId = tabId,
564567
errMessage = err.message,
565568
retries = retriesRemaining(session),
566-
conversationId = session?.conversationIdUnsafe
569+
conversationId = session?.conversationIdUnsafe,
570+
mode = mode
567571
)
568572
messenger.sendSystemPrompt(
569573
tabId = tabId,
@@ -582,7 +586,8 @@ class DocController(
582586
tabId = tabId,
583587
errMessage = err.message,
584588
retries = 0,
585-
conversationId = session?.conversationIdUnsafe
589+
conversationId = session?.conversationIdUnsafe,
590+
mode = mode
586591
)
587592
}
588593

@@ -597,7 +602,8 @@ class DocController(
597602
tabId = tabId,
598603
errMessage = err.message,
599604
retries = retriesRemaining(session),
600-
conversationId = session?.conversationIdUnsafe
605+
conversationId = session?.conversationIdUnsafe,
606+
mode = mode
601607
)
602608
}
603609

@@ -610,6 +616,7 @@ class DocController(
610616
retries = retriesRemaining(session),
611617
conversationId = session?.conversationIdUnsafe,
612618
showDefaultMessage = true,
619+
mode = mode
613620
)
614621

615622
val filePaths: List<NewFileZipInfo> = when (val state = session?.sessionState) {
@@ -679,7 +686,8 @@ class DocController(
679686
tabId = tabId,
680687
errMessage = defaultMessage,
681688
retries = retriesRemaining(session),
682-
conversationId = session?.conversationIdUnsafe
689+
conversationId = session?.conversationIdUnsafe,
690+
mode = mode
683691
)
684692
}
685693
}
@@ -725,10 +733,15 @@ class DocController(
725733
)
726734
}
727735
} catch (err: Exception) {
736+
if (Mode.EDIT == mode) {
737+
session?.decreaseRetries()
738+
}
739+
728740
processErrorChatMessage(err, session, tabId)
729741

730-
// Lock the chat input until they explicitly click one of the follow-ups
731-
messenger.sendChatInputEnabledMessage(tabId, enabled = false)
742+
// For non edit mode lock the chat input until they explicitly click one of the follow-ups
743+
val isEnableChatInput = Mode.EDIT == mode && retriesRemaining(session) > 0
744+
messenger.sendChatInputEnabledMessage(tabId, enabled = isEnableChatInput)
732745
}
733746
}
734747

@@ -889,6 +902,7 @@ class DocController(
889902
errMessage = message ?: message("amazonqFeatureDev.exception.retry_request_failed"),
890903
retries = retriesRemaining(session),
891904
conversationId = session?.conversationIdUnsafe,
905+
mode = mode
892906
)
893907
} finally {
894908
// Finish processing the event

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqDoc/messages/DocMessagePublisherExtensions.kt

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import software.aws.toolkits.jetbrains.services.amazonq.auth.AuthNeededState
77
import software.aws.toolkits.jetbrains.services.amazonq.messages.MessagePublisher
88
import software.aws.toolkits.jetbrains.services.amazonqCodeTest.messages.ProgressField
99
import software.aws.toolkits.jetbrains.services.amazonqCodeTest.messages.PromptProgressMessage
10+
import software.aws.toolkits.jetbrains.services.amazonqDoc.controller.Mode
1011
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.session.CodeReferenceGenerated
1112
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.session.DeletedFileInfo
1213
import software.aws.toolkits.jetbrains.services.amazonqFeatureDev.session.NewFileZipInfo
@@ -113,10 +114,22 @@ suspend fun MessagePublisher.sendChatInputEnabledMessage(tabId: String, enabled:
113114
this.publish(chatInputEnabledMessage)
114115
}
115116

116-
suspend fun MessagePublisher.sendError(tabId: String, errMessage: String?, retries: Int, conversationId: String? = null, showDefaultMessage: Boolean? = false) {
117+
suspend fun MessagePublisher.sendError(tabId: String,
118+
errMessage: String?,
119+
retries: Int,
120+
conversationId: String? = null,
121+
showDefaultMessage: Boolean? = false,
122+
mode: Mode
123+
) {
117124
val conversationIdText = if (conversationId == null) "" else "\n\nConversation ID: **$conversationId**"
118125

119-
if (retries == 0) {
126+
if (Mode.EDIT == mode && retries > 0) {
127+
this.sendAnswer(
128+
tabId = tabId,
129+
messageType = DocMessageType.Answer,
130+
message = errMessage + conversationIdText,
131+
)
132+
} else {
120133
this.sendAnswer(
121134
tabId = tabId,
122135
messageType = DocMessageType.Answer,
@@ -126,27 +139,20 @@ suspend fun MessagePublisher.sendError(tabId: String, errMessage: String?, retri
126139
this.sendAnswer(
127140
tabId = tabId,
128141
messageType = DocMessageType.SystemPrompt,
142+
followUp = listOf(
143+
FollowUp(
144+
pillText = message("amazonqDoc.prompt.reject.new_task"),
145+
type = FollowUpTypes.NEW_TASK,
146+
status = FollowUpStatusType.Info
147+
),
148+
FollowUp(
149+
pillText = message("amazonqDoc.prompt.reject.close_session"),
150+
type = FollowUpTypes.CLOSE_SESSION,
151+
status = FollowUpStatusType.Info
152+
)
153+
),
129154
)
130-
return
131155
}
132-
133-
this.sendAnswer(
134-
tabId = tabId,
135-
messageType = DocMessageType.Answer,
136-
message = errMessage + conversationIdText,
137-
)
138-
139-
this.sendAnswer(
140-
tabId = tabId,
141-
messageType = DocMessageType.SystemPrompt,
142-
followUp = listOf(
143-
FollowUp(
144-
pillText = message("amazonqFeatureDev.follow_up.retry"),
145-
type = FollowUpTypes.RETRY,
146-
status = FollowUpStatusType.Warning
147-
)
148-
),
149-
)
150156
}
151157

152158
suspend fun MessagePublisher.sendMonthlyLimitError(tabId: String) {

0 commit comments

Comments
 (0)